Thanks, I'll look into it.
explain (costs off) select t.xmin 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 t.xmin from t join t tt using (xmin);
ERROR: column "xmin" specified in USING clause does not exist in left table
explain (costs off) select tt.xmin from t join t tt using (xmin);
ERROR: column "xmin" specified in USING clause does not exist in left table
explain (costs off) select t.xmin, tt.xmin from t join t tt using (xmin);
ERROR: column "xmin" specified in USING clause does not exist in left table
ср, 24 янв. 2024 г. в 19:26, David G. Johnston <david.g.johnston@gmail.com>:
>
> On Tuesday, January 23, 2024, PG Bug reporting form <noreply@postgresql.org> wrote:
>>
>> The following bug has been logged on the website:
>>
>> Bug reference: 18307
>> Logged by: RekGRpth
>> Email address: rekgrpth@gmail.com
>> PostgreSQL version: 16.1
>> Operating system: docker alpine
>> Description:
>>
>> 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
outputxmin, it requires explicit table qualification to see it. This is the same thing.
>
> David J.
>