pgsql: Fix another crash in json{b}_populate_recordset and json{b}_to_r

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix another crash in json{b}_populate_recordset and json{b}_to_r
Date: 2018-11-22 20:14:11
Message-ID: E1gPvMZ-0005yp-N3@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix another crash in json{b}_populate_recordset and json{b}_to_recordset.

populate_recordset_worker() failed to consider the possibility that the
supplied JSON data contains no rows, so that update_cached_tupdesc never
got called. This led to a null-pointer dereference since commit 9a5e8ed28;
before that it led to a bogus "set-valued function called in context that
cannot accept a set" error. Fix by forcing the update to happen.

Per bug #15514. Back-patch to v11 as 9a5e8ed28 was. (If we were excited
about the bogus error, we could perhaps go back further, but it'd take more
work to figure out how to fix it in older branches. Given the lack of
field complaints about that aspect, I'm not excited.)

Discussion: https://postgr.es/m/15514-59d5b4c4065b178b@postgresql.org

Branch
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/595220a3a3a89e5648b7b6be726502efdc9ec806

Modified Files
--------------
src/backend/utils/adt/jsonfuncs.c | 6 ++++++
src/test/regress/expected/json.out | 13 +++++++++++++
src/test/regress/expected/jsonb.out | 13 +++++++++++++
src/test/regress/sql/json.sql | 5 +++++
src/test/regress/sql/jsonb.sql | 5 +++++
5 files changed, 42 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2018-11-23 00:12:58 pgsql: Clarify documentation about PASSWORD in CREATE/ALTER ROLE
Previous Message Tom Lane 2018-11-22 18:25:23 pgsql: Doc: rework introductory documentation about covering indexes.