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