Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你能用C编辑Postgres数组类型吗?_C_Postgresql_Function - Fatal编程技术网

你能用C编辑Postgres数组类型吗?

你能用C编辑Postgres数组类型吗?,c,postgresql,function,C,Postgresql,Function,我试图编写一个PostgreSQL函数,并存储一个ArrayType*状态,每次调用该函数时都需要更改该状态。每次调用函数时,我是否需要在构造数组中使用单独的基准数组,或者我是否可以直接更改状态中的值(即状态[I]=10) 谢谢 我建议您不要直接修改数组类型 由于它是一个varlena,因此无论何时添加或删除元素,您都必须repalloc它并转换值,并维护varlena标题和空位图。您必须使用dataoffset并遍历元素 无论何时需要ArrayType(这可能更便宜、更好)或使用函数array

我试图编写一个PostgreSQL函数,并存储一个ArrayType*状态,每次调用该函数时都需要更改该状态。每次调用函数时,我是否需要在构造数组中使用单独的基准数组,或者我是否可以直接更改状态中的值(即状态[I]=10)


谢谢

我建议您不要直接修改
数组类型

由于它是一个
varlena
,因此无论何时添加或删除元素,您都必须
repalloc
它并转换值,并维护
varlena
标题和空位图。您必须使用
dataoffset
并遍历元素


无论何时需要
ArrayType
(这可能更便宜、更好)或使用函数
array\u get\u元素,都可以将状态保持在普通C数组中并使用
construct\u array
array\u set\u element
utils/array.h
中的其他元素要在
ArrayType

上操作,通常需要存储一个基准数组,并且在要返回值时只在结尾处构建数组。