| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> | 
|---|---|
| To: | Josh Berkus <josh(at)agliodbs(dot)com> | 
| Cc: | pgsql-hackers(at)postgresql(dot)org | 
| Subject: | Re: bug in json_to_record with arrays | 
| Date: | 2014-11-26 20:48:42 | 
| Message-ID: | 25904.1417034922@sss.pgh.pa.us | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
Josh Berkus <josh(at)agliodbs(dot)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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andres Freund | 2014-11-26 21:03:28 | Re: 9.2 recovery/startup problems | 
| Previous Message | Tomas Vondra | 2014-11-26 20:45:12 | Re: BUG #12071: Stat collector went crasy (50MB/s constant writes) |