From 9916f6678bcdb0abec631f86787200504bdfcef5 Mon Sep 17 00:00:00 2001 From: Don Smyth Date: Mon, 4 Jan 2021 11:25:43 -0800 Subject: [PATCH] Minor cleanup of PgArray --- src/oatpp-postgresql/mapping/PgArray.hpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/oatpp-postgresql/mapping/PgArray.hpp b/src/oatpp-postgresql/mapping/PgArray.hpp index 255642b..e5bea6e 100644 --- a/src/oatpp-postgresql/mapping/PgArray.hpp +++ b/src/oatpp-postgresql/mapping/PgArray.hpp @@ -9,14 +9,14 @@ #include -// 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