diff options
author | David Rowley <drowley@postgresql.org> | 2023-10-10 14:16:54 +1300 |
---|---|---|
committer | David Rowley <drowley@postgresql.org> | 2023-10-10 14:16:54 +1300 |
commit | 4f3b56eea23554e1756a26080db273156f23f4f2 (patch) | |
tree | 7e8427ae6228d2fa2eb2821d03bbe8afbcbb45ac /src/backend/utils/adt/varlena.c | |
parent | f483b209056b4181eb33b97cd6a30910a73c0f87 (diff) | |
download | postgresql-4f3b56eea23554e1756a26080db273156f23f4f2.tar.gz postgresql-4f3b56eea23554e1756a26080db273156f23f4f2.zip |
Revert "Optimize various aggregate deserialization functions"
This reverts commit 608fd198def5390c3490bfe903730207dfd8eeb4.
On 2nd thoughts, the StringInfo API requires that strings are NUL
terminated and pointing directly to the data in a bytea Datum isn't NUL
terminated.
Discussion: https://postgr.es/m/CAApHDvorfO3iBZ=xpiZvp3uHtJVLyFaPBSvcAhAq2HPLnaNSwQ@mail.gmail.com
Diffstat (limited to 'src/backend/utils/adt/varlena.c')
-rw-r--r-- | src/backend/utils/adt/varlena.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 1aff04fa77d..72e1e24fe02 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -5289,13 +5289,12 @@ string_agg_deserialize(PG_FUNCTION_ARGS) sstate = PG_GETARG_BYTEA_PP(0); /* - * Fake up a StringInfo pointing to the bytea's value so we can "receive" - * the serialized aggregate state value. + * Copy the bytea into a StringInfo so that we can "receive" it using the + * standard recv-function infrastructure. */ - buf.data = VARDATA_ANY(sstate); - buf.len = VARSIZE_ANY_EXHDR(sstate); - buf.maxlen = 0; - buf.cursor = 0; + initStringInfo(&buf); + appendBinaryStringInfo(&buf, + VARDATA_ANY(sstate), VARSIZE_ANY_EXHDR(sstate)); result = makeStringAggState(fcinfo); @@ -5308,6 +5307,7 @@ string_agg_deserialize(PG_FUNCTION_ARGS) appendBinaryStringInfo(result, data, datalen); pq_getmsgend(&buf); + pfree(buf.data); PG_RETURN_POINTER(result); } |