From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Print the correct aliases for DML target tables in ruleutils. |
Date: | 2023-02-17 21:41:00 |
Message-ID: | E1pT8TT-001eLS-GQ@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Print the correct aliases for DML target tables in ruleutils.
ruleutils.c blindly printed the user-given alias (or nothing if there
hadn't been one) for the target table of INSERT/UPDATE/DELETE queries.
That works a large percentage of the time, but not always: for queries
appearing in WITH, it's possible that we chose a different alias to
avoid conflict with outer-scope names. Since the chosen alias would
be used in any Var references to the target table, this'd lead to an
inconsistent printout with consequences such as dump/restore failures.
The correct logic for printing (or not) a relation alias was embedded
in get_from_clause_item. Factor it out to a separate function so that
we don't need a jointree node to use it. (Only a limited part of that
function can be reached from these new call sites, but this seems like
the cleanest non-duplicative factorization.)
In passing, I got rid of a redundant "\d+ rules_src" step in rules.sql.
Initial report from Jonathan Katz; thanks to Vignesh C for analysis.
This has been broken for a long time, so back-patch to all supported
branches.
Discussion: https://postgr.es/m/e947fa21-24b2-f922-375a-d4f763ef3e4b@postgresql.org
Discussion: https://postgr.es/m/CALDaNm1MMntjmT_NJGp-Z=xbF02qHGAyuSHfYHias3TqQbPF2w@mail.gmail.com
Branch
------
REL_15_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/c8a5f1685fb75fd7641793cd1455fc74c576ed84
Modified Files
--------------
src/backend/utils/adt/ruleutils.c | 146 +++++++++++++++++++++---------------
src/test/regress/expected/rules.out | 47 +++++++-----
src/test/regress/sql/rules.sql | 13 +++-
3 files changed, 126 insertions(+), 80 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tomas Vondra | 2023-02-19 00:47:34 | pgsql: Fix handling of multi-column BRIN indexes |
Previous Message | Peter Eisentraut | 2023-02-17 13:19:57 | pgsql: Fix incorrect format placeholder |