Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.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 PostgreSQL数组结构_C_Arrays_Postgresql - Fatal编程技术网

C PostgreSQL数组结构

C PostgreSQL数组结构,c,arrays,postgresql,C,Arrays,Postgresql,存储在内存中的postgres数组的布局是什么?我怎样才能得到真实的数据? 例如,对于数组[0.1,0.2,0.3]::float8[],实际数据(0.1,0.2,0.3)是否像标准c数组一样存储?我可以使用memcpy复制现有阵列吗?我们得到的指针是否使用了ARR\u DATA\u PTR引用的是真实数据?PostgreSQL使用可变的C结构-因此前n个字节包含固定长度的数据,下一个字节用于数据。前四个字节保存长度、紧跟dimmensions数、dataoffset和元素数据类型标识-下一个数

存储在内存中的postgres数组的布局是什么?我怎样才能得到真实的数据?
例如,对于
数组[0.1,0.2,0.3]::float8[]
,实际数据
(0.1,0.2,0.3)
是否像标准c数组一样存储?我可以使用
memcpy
复制现有阵列吗?我们得到的指针是否使用了
ARR\u DATA\u PTR
引用的是真实数据?

PostgreSQL使用可变的C结构-因此前n个字节包含固定长度的数据,下一个字节用于数据。前四个字节保存长度、紧跟dimmensions数、dataoffset和元素数据类型标识-下一个数据应该是保存空值的位图,在该位图数据序列化之后

PostgreSQL数组与C数组-resp不兼容。在少数情况下,C数组是PostgreSQL数组的一部分。ARR_DATA_PTR可以或不可以引用真实数据。取决于当前状态-数据应该是烤的,去烤的


在使用pg阵列时,人们通常使用宏和支持函数。解包到C数组或在pg数组上迭代有多种方法。

PostgreSQL使用可变的C结构,因此前n个字节包含固定长度的数据,下一个字节用于数据。前四个字节保存长度、紧跟dimmensions数、dataoffset和元素数据类型标识-下一个数据应该是保存空值的位图,在该位图数据序列化之后

PostgreSQL数组与C数组-resp不兼容。在少数情况下,C数组是PostgreSQL数组的一部分。ARR_DATA_PTR可以或不可以引用真实数据。取决于当前状态-数据应该是烤的,去烤的


在使用pg阵列时,人们通常使用宏和支持函数。解包到C数组或在pg数组上迭代有多种方法。

有关更好的问题/答案,请参阅