From: | Daniel Brinzila <briuz001(at)umn(dot)edu> |
---|---|
To: | Tom Lane <tgl_at_sss_pgh_pa_us_5s592v294c5771_de0d8337(at)icloud(dot)com> |
Cc: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Recent 11.16 release change |
Date: | 2022-06-14 21:35:12 |
Message-ID: | CAHVn1A=bxkJs5iqYHKo8hK7Um0Eucx-xY+ckaYXuHZPrp0pXGw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Tom,
Thanks very much for the clarification, i was just going over the
regression tests and now makes sense.
However, is this the only function (row_to_json) or are there more of them
affected by this change?
Regards,
Daniel
On Tue, Jun 14, 2022 at 5:23 PM Tom Lane <
tgl_at_sss_pgh_pa_us_5s592v294c5771_de0d8337(at)icloud(dot)com> wrote:
> Daniel Brinzila <briuz001(at)umn(dot)edu> writes:
> > I am a bit confused as to the following change:
> > Stop using query-provided column aliases for the columns of whole-row
> > variables that refer to plain tables (Tom Lane)
>
> > Could someone please give an example of this scenario, one that works in
> > 11.15 and another for 11.16 after the recent change.
>
> Here's the regression test example that changed behavior in that commit:
>
> regression=# select row_to_json(i) from int8_tbl i(x,y);
> row_to_json
> ------------------------------------------------
> {"q1":123,"q2":456}
> {"q1":123,"q2":4567890123456789}
> {"q1":4567890123456789,"q2":123}
> {"q1":4567890123456789,"q2":4567890123456789}
> {"q1":4567890123456789,"q2":-4567890123456789}
> (5 rows)
>
> The fields of the JSON output used to be labeled "x" and "y", after
> the column aliases of the FROM item. But now that doesn't work and
> you get the table's original column names (which happen to be "q1"
> and "q2" in this test case).
>
> The workaround proposed in the release note is to do this if you
> need to relabel the columns of the whole-row variable "i":
>
> regression=# select row_to_json(i) from (select * from int8_tbl) i(x,y);
> row_to_json
> ----------------------------------------------
> {"x":123,"y":456}
> {"x":123,"y":4567890123456789}
> {"x":4567890123456789,"y":123}
> {"x":4567890123456789,"y":4567890123456789}
> {"x":4567890123456789,"y":-4567890123456789}
> (5 rows)
>
> With the extra sub-select, "i" is no longer of the named composite
> type associated with int8_tbl, but of an anonymous record type,
> so it can have the column names you want.
>
> regards, tom lane
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2022-06-14 21:48:16 | Re: cast to domain with default collation issue. |
Previous Message | Tom Lane | 2022-06-14 21:23:15 | Re: Recent 11.16 release change |