On Oct 24, 2012, at 12:21 AM, Craig Ringer <ring...@ringerc.id.au> wrote:

> On 10/24/2012 07:32 AM, gha...@gmail.com wrote:
>> The following bug has been logged on the website:
>> 
>> Bug reference:      7620
>> Logged by:          Greg Hazel
>> Email address:      gha...@gmail.com
>> PostgreSQL version: 9.2.1
>> Operating system:   Amazon Linux
>> Description:        
>> 
>> array_to_json(ARRAY['foo', 100, true]) complains because arrays can't have
>> mixed types, but json arrays can.
> 
> The issue here isn't array_to_json, it's PostgreSQL arrays.
> 
> What you appear to want is a way to call row_to_json so that it produces
> a json array instead of a json object as it currently does. That way you
> could pass it a ROW() construct, composite type, or record, and have it
> output a heterogeneous JSON array.
> 
> This isn't a bug, but it's a perfectly reasonable feature request if
> re-interpreted a little. It will never work with PostgreSQL arrays,
> though, because the arrays themselves cannot contain mixed types:
> 
> regress=# SELECT ARRAY[1,'test'];
> ERROR:  invalid input syntax for integer: "test"
> LINE 1: SELECT ARRAY[1,'test'];
>                       ^
> Instead you want a way to take this:
> 
> regress=# SELECT ROW(1,'test');
>   row
> ----------
> (1,test)
> (1 row)
> 
> and output the json:
> 
>  [1,"test"]
> 
> instead of a json object:
> 
>  regress=# SELECT row_to_json(ROW(1,'test'));
>     row_to_json
> ----------------------
> {"f1":1,"f2":"test"}
> (1 row)
> 
> 
> Would a version of `row_to_json` that output a json array satisfy your
> needs?

Sure, that would be fine.

-Greg



-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to