你能用C编辑一个Postgres ArrayType吗?

时间:2017-07-24 20:27:41

标签: c postgresql function

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

谢谢!

1 个答案:

答案 0 :(得分:0)

我建议您不要直接修改ArrayType

由于它是varlena,您必须repalloc它,并在添加或删除元素时移动值,并维护varlena标头和NULL位图。您必须使用dataoffset并遍历元素。

将您的状态保存在普通的C数组中,并在需要construct_array时使用ArrayType(这可能更便宜,更好)或使用函数array_get_element,{{1来自array_set_element的其他人和utils/array.h上的其他人。