diff options
Diffstat (limited to 'src/backend/utils/adt/jsonfuncs.c')
-rw-r--r-- | src/backend/utils/adt/jsonfuncs.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c index 076b00f213c..1a9a060d4eb 100644 --- a/src/backend/utils/adt/jsonfuncs.c +++ b/src/backend/utils/adt/jsonfuncs.c @@ -2099,6 +2099,7 @@ populate_record_worker(FunctionCallInfo fcinfo, const char *funcname, if (hash_get_num_entries(json_hash) == 0 && rec) { hash_destroy(json_hash); + ReleaseTupleDesc(tupdesc); PG_RETURN_POINTER(rec); } } @@ -2107,8 +2108,11 @@ populate_record_worker(FunctionCallInfo fcinfo, const char *funcname, jb = PG_GETARG_JSONB(json_arg_num); /* same logic as for json */ - if (!have_record_arg && rec) + if (JB_ROOT_COUNT(jb) == 0 && rec) + { + ReleaseTupleDesc(tupdesc); PG_RETURN_POINTER(rec); + } } ncolumns = tupdesc->natts; |