Re: inconsistent behaviour of json_to_record and friends with embedded json

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: Jeff Janes <jeff.janes@gmail.com>, Robert Vollmert <rob@vllmrt.net>, pgsql-bugs@lists.postgresql.org
Date: 2019-06-11T17:35:34Z
Lists: pgsql-bugs
I wrote:
> I agree.  It looks to me like the problem is this over-optimistic
> assumption:
>             /*
>              * Add quotes around string value (should be already escaped) if
>              * converting to json/jsonb.
>              */
> No, it's *not* already escaped.  Fixing the code to use escape_json()
> is a bit tedious, because for some reason that function wasn't designed
> to support non-null-terminated input, but with the attached patch we get
> what seems to me like sane behavior:

Hearing no comments, I've pushed this patch.  I also rewrote the
documentation to provide something approaching a specification for
what json_to_record() and friends do.

			regards, tom lane



Commits

  1. Fix conversion of JSON strings to JSON output columns in json_to_record().

  2. Make json_populate_record and friends operate recursively