Re: BUG #17233: Incorrect behavior of DELETE command with bad subquery in WHERE clause

David G. Johnston <david.g.johnston@gmail.com>

From: "David G. Johnston" <david.g.johnston@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: "lxndrkrlv@gmail.com" <lxndrkrlv@gmail.com>, "pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Date: 2021-10-17T14:50:24Z
Lists: pgsql-bugs
On Sunday, October 17, 2021, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
>
> There might be an opportunity here to improve the error message's hint:
>
> regression=# SELECT CTID
> regression-# FROM tmp1
> regression-# INNER JOIN tmp2 ON tmp1.id = tmp2.id;
> ERROR:  column "ctid" does not exist
> LINE 1: SELECT CTID
>                ^
> HINT:  There is a column named "ctid" in table "tmp1", but it cannot be
> referenced from this part of the query.
>
> "cannot be referenced" is probably a shade misleading, given the
> availability of the qualified-name alternative.
>
>
I was actually wondering why the error wasn’t an ambiguous column name
error.  For a pure select query we already allow duplicate column names in
the result.

David J.

Commits

  1. Give better hints for ambiguous or unreferenceable columns.

  2. Make subquery aliases optional in the FROM clause.