On 02/23/2015 12:56 PM, Pavel Stehule wrote:
by the way - this feature is undocumented - I though so only value
used as type holder is not used.
Should be documented better, - if I understand - it is base stone for
implementation #= hstore operator
some nice example
postgres=# select json_populate_record('(10,20)'::pt, '{"a":30}');
json_populate_record
----------------------
(30,20)
(1 row)
a mentioned bug is corner case - bugfix is simple
diff --git a/src/backend/utils/adt/jsonfuncs.c
b/src/backend/utils/adt/jsonfuncs.c
new file mode 100644
index a8cdeaa..6e83f78
*** a/src/backend/utils/adt/jsonfuncs.c
--- b/src/backend/utils/adt/jsonfuncs.c
*************** populate_record_worker(FunctionCallInfo
*** 2114,2119 ****
--- 2114,2122 ----
*/
if (hash_get_num_entries(json_hash) == 0 && rec)
{
+ if (have_record_arg)
+ ReleaseTupleDesc(tupdesc);
+
hash_destroy(json_hash);
PG_RETURN_POINTER(rec);
}
This doesn't look quite right. Shouldn't we unconditionally release the
Tupledesc before the returns at lines 2118 and 2127, just as we do at
the bottom of the function at line 2285?
cheers
andrew
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers