Re: bug in json_to_record with arrays - Mailing list pgsql-hackers

From Tom Lane
Subject Re: bug in json_to_record with arrays
Date
Msg-id 25904.1417034922@sss.pgh.pa.us
Whole thread Raw
In response to Re: bug in json_to_record with arrays  (Josh Berkus <josh@agliodbs.com>)
Responses Re: bug in json_to_record with arrays  (Andrew Dunstan <andrew@dunslane.net>)
Re: bug in json_to_record with arrays  (Stephen Frost <sfrost@snowman.net>)
List pgsql-hackers
Josh Berkus <josh@agliodbs.com> writes:
> On 11/26/2014 11:54 AM, Josh Berkus wrote:
>> Tested on 9.4b3, 9.4rc1, 9.5devel
>> 
>> select * from json_to_record('
>> {"id":1,"val":"josh","valry":["potter","chef","programmer"]}') as r(id
>> int, val text, valry text[]);
>> 
>> ERROR:  missing dimension value
>> 
>> With some experimentation, I can't find any way to convert a JSON array
>> to an array field using json_to_record or json_to_recordset.  I know
>> this worked back in January, though.

> Lemme take that back, it didn't work.  Just checked an old devel snapshot.

> Looks like this is not intended to work, so the only bug is that we need
> a less confusing error message.

What's happening is that this string:
["potter","chef","programmer"]

is getting passed to array_in, which of course does not like it because
that's not the I/O syntax for Postgres arrays.  Arguably,
populate_record_worker should be smart enough to convert somehow, but
it isn't today.  Looks to me like it wouldn't succeed for the comparable
case of converting a sub-object to a Postgres composite type, either.
I'm satisfied with regarding those cases as missing features to be
added later.

As far as your request for a better error message is concerned, I'm a
bit inclined to lay the blame on array_in rather than the JSON code.
Wouldn't it be better if it said
    ERROR:  invalid input syntax for array: "["potter","chef","programmer"]"    DETAIL: Dimension value is missing.

which is comparable to what you'd get out of most other input functions
that were feeling indigestion?
        regards, tom lane



pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: [pgsql-packagers] Palle Girgensohn's ICU patch
Next
From: Andres Freund
Date:
Subject: Re: 9.2 recovery/startup problems