Re: idea: allow AS label inside ROW constructor

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: David G Johnston <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: idea: allow AS label inside ROW constructor
Date: 2014-10-23 15:46:46
Message-ID: CAFj8pRAMXPXYK5e58f=xHWHf4JtxtVx-EbRgooBoaRMJDgTUEQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

2014-10-23 17:36 GMT+02:00 David G Johnston <david(dot)g(dot)johnston(at)gmail(dot)com>:

> Andrew Dunstan wrote
> > On 10/23/2014 09:57 AM, Florian Pflug wrote:
> >> On Oct23, 2014, at 15:39 , Andrew Dunstan &lt;
>
> > andrew@
>
> > &gt; wrote:
> >>> On 10/23/2014 09:27 AM, Merlin Moncure wrote:
> >>>> On Thu, Oct 23, 2014 at 4:34 AM, Pavel Stehule &lt;
>
> > pavel.stehule@
>
> > &gt; wrote:
> >>>>> postgres=# select row_to_json(row(10 as A, row(30 as c, 20 AS B) as
> >>>>> x));
> >>>>> row_to_json
> >>>>> ------------------------------
> >>>>> {"a":10,"x":{"c":30,"b":20}}
> >>>>> (1 row)
> >>>>>
> >>>> wow -- this is great. I'll take a a look.
> >>>>
> >>> Already in 9.4:
> >>>
> >>> andrew=# select
> >>> json_build_object('a',10,'x',json_build_object('c',30,'b',20));
> >>> json_build_object
> >>> ----------------------------------------
> >>> {"a" : 10, "x" : {"c" : 30, "b" : 20}}
> >>> (1 row)
> >>> So I'm not sure why we want another mechanism unless it's needed in
> some
> >>> other context.
> >> I've wanted to name the field of rows created with ROW() on more than
> >> one occasion, quite independent from whether the resulting row is
> >> converted
> >> to JSON or not. And quite apart from usefulness, this is a matter of
> >> orthogonality. If we have named fields in anonymous record types, we
> >> should
> >> provide a convenient way of specifying the field names.
> >>
> >> So to summarize, I think this is an excellent idea, json_build_object
> >> non-withstanding.
> >>
> >
> > Well, I think we need to see those other use cases. The only use case I
> > recall seeing involves the already provided case of constructing JSON.
>
> Even if it simply allows CTE and sibqueries to form anonymous record types
> which can then be re-expanded in the outer layer for table-like final
> output
> this feature would be useful. When working with wide tables and using
> multiple aggregates and joins being able to avoid specifying individual
> columns repeatedly is quite desirable.
>

Expanding anonymous record is harder task, but it is possible probably

Pavel

>
> It would be especially nice to not have to use "as" though, if the source
> fields are already so named.
>
> David J.
>
>
>
>
>
> --
> View this message in context:
> http://postgresql.1045698.n5.nabble.com/idea-allow-AS-label-inside-ROW-constructor-tp5823954p5824045.html
> Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.
>
>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2014-10-23 15:51:27 Re: idea: allow AS label inside ROW constructor
Previous Message Oskari Saarenmaa 2014-10-23 15:46:09 Re: Inefficient barriers on solaris with sun cc