diff options
author | Noah Misch | 2017-03-12 23:35:31 +0000 |
---|---|---|
committer | Noah Misch | 2017-03-12 23:35:31 +0000 |
commit | 2fd26b23b662dcb0cf649e983a58581cb911fc4b (patch) | |
tree | 2aac3510bbd79eb36b721277e9a1398fa3dfaef5 /contrib | |
parent | 9e0926468a1c41a31c09785787a737311dcd92c1 (diff) |
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().
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/hstore/hstore_io.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/contrib/hstore/hstore_io.c b/contrib/hstore/hstore_io.c index 0c1d99a015..1cecf86004 100644 --- a/contrib/hstore/hstore_io.c +++ b/contrib/hstore/hstore_io.c @@ -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; } |