Re: BUG #18307: system columns does not support using join - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #18307: system columns does not support using join
Date
Msg-id 264096.1706154850@sss.pgh.pa.us
Whole thread Raw
In response to Re: BUG #18307: system columns does not support using join  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-bugs
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Tuesday, January 23, 2024, PG Bug reporting form <noreply@postgresql.org>
> wrote:
>> create table t(i int);
>>
>> explain (costs off) select * from t join t tt on t.xmin = tt.xmin;
>> QUERY PLAN
>> ---------------------------------
>> Hash Join
>> Hash Cond: (t.xmin = tt.xmin)
>> ->  Seq Scan on t
>> ->  Hash
>> ->  Seq Scan on t tt
>> (5 rows)
>>
>> explain (costs off) select * from t join t tt using (xmin);
>> ERROR:  column "xmin" specified in USING clause does not exist in left
>> table

> I don’t this being worth the effort to change, and really seems like
> completely expected behavior. “Select *” doesn’t output xmin, it requires
> explicit table qualification to see it.  This is the same thing.

Well, it is odd that "using (xmin)" isn't equivalent to the allegedly
equivalent "on t.xmin = tt.xmin".  This is down to the infrastructure
in transformFromClauseItem(), which searches the lists of (regular,
non-system) relation output column names to expand USING().  But like
you, I can't get excited about changing it.  There are a couple of
practical reasons why not:

* NATURAL JOIN is defined in terms of USING.  But we *certainly* don't
want "x NATURAL JOIN y" deciding that it should equate all the system
columns of x to those of y.  So there's going to be inconsistency at
one level or the other no matter what.

* I really find it hard to imagine a valid use case for joining on any
system column.  There are use-cases for joining on TID in an UPDATE
involving a self-join to the target table; but you can't write that
with JOIN USING syntax.

            regards, tom lane



pgsql-bugs by date:

Previous
From: RekGRpth
Date:
Subject: Re: BUG #18307: system columns does not support using join
Next
From: Amit Kapila
Date:
Subject: Re: BUG #18280: logical decoding build wrong snapshot for subtransactions