你能在 C 中编辑 Postgres ArrayType 吗?

标签 c postgresql function

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

谢谢!

最佳答案

我建议你不要直接修改一个ArrayType

因为它是一个varlena,你必须repalloc它并在添加或删除元素时改变值并维护varlena header 和 NULL 位图。您必须使用 dataoffset 并遍历元素。

要么将你的状态保存在一个普通的 C 数组中,并在你需要一个 ArrayType 时使用 construct_array(这可能更便宜而且更好),或者使用函数 array_get_elementarray_set_elementutils/array.h 中的其他对象,用于对 ArrayType 进行操作。

关于你能在 C 中编辑 Postgres ArrayType 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289471/

相关文章:

c++ - 尝试使用 CreateFileMapping 和自定义 DACL 创建只读共享内存区域在 OpenFileMapping 中失败

有人可以解释一下以下代码中如何将内存分配给双指针吗

postgresql - PostgreSQL 中的传递/嵌套权限

javascript - 隐藏多个div的函数

javascript - 在 js 文件中有一系列命名函数是不好的做法吗?

c - 使用c中的函数确定数组的最大值

C 增量运算符

c - 应该更慢,但更快。为什么?

postgresql - 安装新 Windows 后未创建 postgresql 用户

sql - 错误 : could not access file "$libdir/postgis-2.0" postgresapp