mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Assume deconstruct_array() outputs are untoasted.
In functions that issue a deconstruct_array() call, consistently use plain VARSIZE()/VARDATA() on the array elements. Prior practice was divided between those and VARSIZE_ANY_EXHDR()/VARDATA_ANY().
This commit is contained in:
@ -611,19 +611,22 @@ hstore_from_arrays(PG_FUNCTION_ARGS)
|
||||
|
||||
if (!value_nulls || value_nulls[i])
|
||||
{
|
||||
pairs[i].key = VARDATA_ANY(key_datums[i]);
|
||||
pairs[i].key = VARDATA(key_datums[i]);
|
||||
pairs[i].val = NULL;
|
||||
pairs[i].keylen = hstoreCheckKeyLen(VARSIZE_ANY_EXHDR(key_datums[i]));
|
||||
pairs[i].keylen =
|
||||
hstoreCheckKeyLen(VARSIZE(key_datums[i]) - VARHDRSZ);
|
||||
pairs[i].vallen = 4;
|
||||
pairs[i].isnull = true;
|
||||
pairs[i].needfree = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
pairs[i].key = VARDATA_ANY(key_datums[i]);
|
||||
pairs[i].val = VARDATA_ANY(value_datums[i]);
|
||||
pairs[i].keylen = hstoreCheckKeyLen(VARSIZE_ANY_EXHDR(key_datums[i]));
|
||||
pairs[i].vallen = hstoreCheckValLen(VARSIZE_ANY_EXHDR(value_datums[i]));
|
||||
pairs[i].key = VARDATA(key_datums[i]);
|
||||
pairs[i].val = VARDATA(value_datums[i]);
|
||||
pairs[i].keylen =
|
||||
hstoreCheckKeyLen(VARSIZE(key_datums[i]) - VARHDRSZ);
|
||||
pairs[i].vallen =
|
||||
hstoreCheckValLen(VARSIZE(value_datums[i]) - VARHDRSZ);
|
||||
pairs[i].isnull = false;
|
||||
pairs[i].needfree = false;
|
||||
}
|
||||
@ -704,19 +707,22 @@ hstore_from_array(PG_FUNCTION_ARGS)
|
||||
|
||||
if (in_nulls[i * 2 + 1])
|
||||
{
|
||||
pairs[i].key = VARDATA_ANY(in_datums[i * 2]);
|
||||
pairs[i].key = VARDATA(in_datums[i * 2]);
|
||||
pairs[i].val = NULL;
|
||||
pairs[i].keylen = hstoreCheckKeyLen(VARSIZE_ANY_EXHDR(in_datums[i * 2]));
|
||||
pairs[i].keylen =
|
||||
hstoreCheckKeyLen(VARSIZE(in_datums[i * 2]) - VARHDRSZ);
|
||||
pairs[i].vallen = 4;
|
||||
pairs[i].isnull = true;
|
||||
pairs[i].needfree = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
pairs[i].key = VARDATA_ANY(in_datums[i * 2]);
|
||||
pairs[i].val = VARDATA_ANY(in_datums[i * 2 + 1]);
|
||||
pairs[i].keylen = hstoreCheckKeyLen(VARSIZE_ANY_EXHDR(in_datums[i * 2]));
|
||||
pairs[i].vallen = hstoreCheckValLen(VARSIZE_ANY_EXHDR(in_datums[i * 2 + 1]));
|
||||
pairs[i].key = VARDATA(in_datums[i * 2]);
|
||||
pairs[i].val = VARDATA(in_datums[i * 2 + 1]);
|
||||
pairs[i].keylen =
|
||||
hstoreCheckKeyLen(VARSIZE(in_datums[i * 2]) - VARHDRSZ);
|
||||
pairs[i].vallen =
|
||||
hstoreCheckValLen(VARSIZE(in_datums[i * 2 + 1]) - VARHDRSZ);
|
||||
pairs[i].isnull = false;
|
||||
pairs[i].needfree = false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user