Re: json_populate_record issue - TupleDesc reference leak

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Cc: Andrew Dunstan <andrew(at)dunslane(dot)net>
Subject: Re: json_populate_record issue - TupleDesc reference leak
Date: 2015-02-23 17:56:47
Message-ID: CAFj8pRBs3kvUbLh4XVF5ZXnLnGZL5yQU5VmWfccqTG=e3zy9LA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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);
}

2015-02-23 18:27 GMT+01:00 Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>:

> Hi
>
> When I tested json_populate_function in test
> http://stackoverflow.com/questions/7711432/how-to-set-value-of-composite-variable-field-using-dynamic-sql/28673097#28673097
> I found a small issue
>
> create type pt as (a int, b int);
>
> postgres=# select json_populate_record('(10,20)'::pt, '{}');
> WARNING: TupleDesc reference leak: TupleDesc 0x7f10fcf41400 (567018,-1)
> still referenced
> json_populate_record
> ----------------------
> (10,20)
> (1 row)
>
> jsonb is ok
>
> postgres=# select jsonb_populate_record('(10,20)'::pt, '{}');
> jsonb_populate_record
> -----------------------
> (10,20)
> (1 row)
>
> Regards
>
> Pavel
>
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2015-02-23 18:22:32 Re: Abbreviated keys for text cost model fix
Previous Message Heikki Linnakangas 2015-02-23 17:52:26 Re: [RFC] LSN Map