1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-03 20:02:46 +03:00

Fix json_to_record() bug with nested objects.

A thinko concerning nesting depth caused json_to_record() to produce bogus
output if a field of its input object contained a sub-object with a field
name matching one of the requested output column names.  Per bug #13996
from Johann Visagie.

I added a regression test case based on his example, plus parallel tests
for json_to_recordset, jsonb_to_record, jsonb_to_recordset.  The latter
three do not exhibit the same bug (which suggests that we may be missing
some opportunities to share code...) but testing seems like a good idea
in any case.

Back-patch to 9.4 where these functions were introduced.
This commit is contained in:
Tom Lane
2016-03-02 23:31:39 -05:00
parent ca778d01e7
commit 429d684657
5 changed files with 48 additions and 1 deletions

View File

@ -2438,7 +2438,7 @@ hash_object_field_end(void *state, char *fname, bool isnull)
/*
* Ignore nested fields.
*/
if (_state->lex->lex_level > 2)
if (_state->lex->lex_level > 1)
return;
/*