BUG #15088: Can create subquery with duplicate column names - Mailing list pgsql-bugs

From PG Bug reporting form
Subject BUG #15088: Can create subquery with duplicate column names
Date
Msg-id 151960525439.21246.8882390517759748280@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #15088: Can create subquery with duplicate column names
Re: BUG #15088: Can create subquery with duplicate column names
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      15088
Logged by:          Tudor Bosman
Email address:      tudorb@gmail.com
PostgreSQL version: 9.5.11
Operating system:   Ubuntu 16.04
Description:

This may not be a bug, but you can create a subquery that has ambiguous
column names, and then you have no way to disambiguate between them, as the
originating table names are no longer in scope.

tudor=# create table t1 (x integer);
CREATE TABLE
tudor=# insert into t1 values (1);
INSERT 0 1
tudor=# create table t2 (x integer);
CREATE TABLE
tudor=# insert into t2 values (2);
INSERT 0 1
tudor=# select * from t1 cross join t2;
 x | x
---+---
 1 | 2
(1 row)
tudor=# select t1.x, t2.x from t1 cross join t2;
 x | x
---+---
 1 | 2
(1 row)
tudor=# select * from (select t1.x, t2.x from t1 cross join t2) a;
 x | x
---+---
 1 | 2
(1 row)

... and the result now has two columns named x, and I can't tell them
apart:

tudor=# select t1.x from (select t1.x, t2.x from t1 cross join t2) a;
ERROR:  missing FROM-clause entry for table "t1"
LINE 1: select t1.x from (select t1.x, t2.x from t1 cross join t2) a...

MySQL reports an error in this case:

mysql> select t1.x, t2.x from t1 cross join t2;
+------+------+
| x    | x    |
+------+------+
|    1 |    2 |
+------+------+
1 row in set (0.00 sec)

mysql> select * from (select t1.x, t2.x from t1 cross join t2) a;
ERROR 1060 (42S21): Duplicate column name 'x'



pgsql-bugs by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: BUG #15086: Arrow keys do not work while using psql through SSHsession
Next
From: Tomas Vondra
Date:
Subject: Re: BUG #15078: Unable to receive data from WAL Stream Error