Josh Berkus <j...@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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers