Re: Recent 11.16 release change

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
>
>
>

In response to

Browse pgsql-general by date

  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