pgsql: Give better hints for ambiguous or unreferenceable columns. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Give better hints for ambiguous or unreferenceable columns.
Date
Msg-id E1oxcyN-000Q6h-3b@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Give better hints for ambiguous or unreferenceable columns.

Examine ParseNamespaceItem flags to detect whether a column name
is unreferenceable for lack of LATERAL, or could be referenced if
a qualified name were used, and give better hints for such cases.
Also, don't phrase the message to imply that there's only one
matching column when there is really more than one.

Many of the regression test output changes are not very interesting,
but just reflect reclassifying the "There is a column ... but it
cannot be referenced from this part of the query" messages as DETAIL
rather than HINT.  They are details per our style guide, in the sense
of being factual rather than offering advice; and this change provides
room to offer actual HINTs about what to do.

While here, adjust the fuzzy-name-matching code to be a shade less
impenetrable.  It was overloading the meanings of FuzzyAttrMatchState
fields way too much IMO, so splitting them into multiple fields seems
to make it clearer.  It's not like we need to shave bytes in that
struct.

Per discussion of bug #17233 from Alexander Korolev.

Discussion: https://postgr.es/m/17233-afb9d806aaa64b17@postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/56d0ed3b756b2e3799a7bbc0ac89bc7657ca2c33

Modified Files
--------------
src/backend/parser/parse_relation.c           | 291 ++++++++++++++++++--------
src/test/regress/expected/insert_conflict.out |   2 +-
src/test/regress/expected/join.out            |  31 ++-
src/test/regress/expected/merge.out           |   8 +-
src/test/regress/expected/rules.out           |   3 +-
src/test/regress/expected/union.out           |   2 +-
src/test/regress/sql/join.sql                 |   2 +
7 files changed, 233 insertions(+), 106 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: YA attempt at taming worst-case behavior of get_actual_variable_
Next
From: Andrew Dunstan
Date:
Subject: pgsql: Fix perl warning from commit 9b4eafcaf4