Minor cleanup of PgArray

This commit is contained in:
Don Smyth 2021-01-04 11:25:43 -08:00
parent 5301580346
commit 9916f6678b

View File

@ -9,14 +9,14 @@
#include <libpq-fe.h>
// TODO: Assumes 64 bits for each element -- only valid for float64 and int64!
struct PgElem {
v_int32 size;
v_int32 value[2];
v_int32 size; // size of each element value (bytes)
v_uint8 value[1]; // Beginning of value array -- dynamically sized
};
// after https://stackoverflow.com/questions/4016412/postgresqls-libpq-encoding-for-binary-transport-of-array-data
struct PgArrayHeader {
PgArrayHeader() : ndim(0), _ign(0), oid(InvalidOid), size(0), index(0) {};
v_int32 ndim; // Number of dimensions
v_int32 _ign; // offset for data, removed by libpq
Oid oid; // type of element in the array
@ -26,6 +26,7 @@ struct PgArrayHeader {
v_int32 index; // Index of first element
};
// Layout of Postgres array in memory
struct PgArray {
PgArrayHeader header;
PgElem elem[1]; // Beginning of (size, value) elements