From 25d418832ea7e324f4551bd289695b52c69a020d Mon Sep 17 00:00:00 2001 From: "okbob@github.com" Date: Mon, 3 Jan 2022 07:52:19 +0100 Subject: [PATCH v20220126 2/3] column doesn't exists message This patch changes error message "column doesn't exist" to message "column or variable doesn't exist". The error message will be more correct. Today, missing PL/pgSQL variable can be reported. The change has impact on lot of regress tests not related to session variables, and then it is distributed as separate patch. --- src/backend/parser/parse_relation.c | 8 ++-- src/pl/tcl/expected/pltcl_queries.out | 12 +++--- src/test/regress/expected/alter_table.out | 42 +++++++++---------- src/test/regress/expected/copy2.out | 2 +- src/test/regress/expected/errors.out | 8 ++-- src/test/regress/expected/generated.out | 4 +- src/test/regress/expected/insert_conflict.out | 6 +-- src/test/regress/expected/join.out | 20 ++++----- src/test/regress/expected/plpgsql.out | 12 +++--- src/test/regress/expected/rowtypes.out | 2 +- src/test/regress/expected/rules.out | 4 +- src/test/regress/expected/transactions.out | 4 +- src/test/regress/expected/union.out | 2 +- 13 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index cb9e177b5e..3d04e6a484 100644 --- a/src/backend/parser/parse_relation.c +++ b/src/backend/parser/parse_relation.c @@ -3589,8 +3589,8 @@ errorMissingColumn(ParseState *pstate, ereport(ERROR, (errcode(ERRCODE_UNDEFINED_COLUMN), relname ? - errmsg("column %s.%s does not exist", relname, colname) : - errmsg("column \"%s\" does not exist", colname), + errmsg("column or variable %s.%s does not exist", relname, colname) : + errmsg("column or variable \"%s\" does not exist", colname), state->rfirst ? closestfirst ? errhint("Perhaps you meant to reference the column \"%s.%s\".", state->rfirst->eref->aliasname, closestfirst) : @@ -3609,8 +3609,8 @@ errorMissingColumn(ParseState *pstate, ereport(ERROR, (errcode(ERRCODE_UNDEFINED_COLUMN), relname ? - errmsg("column %s.%s does not exist", relname, colname) : - errmsg("column \"%s\" does not exist", colname), + errmsg("column or variable %s.%s does not exist", relname, colname) : + errmsg("column or variable \"%s\" does not exist", colname), errhint("Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\".", state->rfirst->eref->aliasname, closestfirst, state->rsecond->eref->aliasname, closestsecond), diff --git a/src/pl/tcl/expected/pltcl_queries.out b/src/pl/tcl/expected/pltcl_queries.out index 2d922c2333..3b6506d613 100644 --- a/src/pl/tcl/expected/pltcl_queries.out +++ b/src/pl/tcl/expected/pltcl_queries.out @@ -246,12 +246,12 @@ ERROR: type "b" does not exist select tcl_eval('spi_prepare a "b {"'); ERROR: unmatched open brace in list select tcl_error_handling_test($tcl$spi_prepare "select moo" []$tcl$); - tcl_error_handling_test --------------------------------------- - SQLSTATE: 42703 + - condition: undefined_column + - cursor_position: 8 + - message: column "moo" does not exist+ + tcl_error_handling_test +-------------------------------------------------- + SQLSTATE: 42703 + + condition: undefined_column + + cursor_position: 8 + + message: column or variable "moo" does not exist+ statement: select moo (1 row) diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index 16e0475663..77f6c87126 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -809,7 +809,7 @@ drop table atacc1; create table atacc1 ( test int ); -- add a check constraint (fails) alter table atacc1 add constraint atacc_test1 check (test1>3); -ERROR: column "test1" does not exist +ERROR: column or variable "test1" does not exist HINT: Perhaps you meant to reference the column "atacc1.test". drop table atacc1; -- something a little more complicated @@ -1287,19 +1287,19 @@ select * from atacc1; (1 row) select * from atacc1 order by a; -ERROR: column "a" does not exist +ERROR: column or variable "a" does not exist LINE 1: select * from atacc1 order by a; ^ select * from atacc1 order by "........pg.dropped.1........"; -ERROR: column "........pg.dropped.1........" does not exist +ERROR: column or variable "........pg.dropped.1........" does not exist LINE 1: select * from atacc1 order by "........pg.dropped.1........"... ^ select * from atacc1 group by a; -ERROR: column "a" does not exist +ERROR: column or variable "a" does not exist LINE 1: select * from atacc1 group by a; ^ select * from atacc1 group by "........pg.dropped.1........"; -ERROR: column "........pg.dropped.1........" does not exist +ERROR: column or variable "........pg.dropped.1........" does not exist LINE 1: select * from atacc1 group by "........pg.dropped.1........"... ^ select atacc1.* from atacc1; @@ -1309,11 +1309,11 @@ select atacc1.* from atacc1; (1 row) select a from atacc1; -ERROR: column "a" does not exist +ERROR: column or variable "a" does not exist LINE 1: select a from atacc1; ^ select atacc1.a from atacc1; -ERROR: column atacc1.a does not exist +ERROR: column or variable atacc1.a does not exist LINE 1: select atacc1.a from atacc1; ^ select b,c,d from atacc1; @@ -1323,27 +1323,27 @@ select b,c,d from atacc1; (1 row) select a,b,c,d from atacc1; -ERROR: column "a" does not exist +ERROR: column or variable "a" does not exist LINE 1: select a,b,c,d from atacc1; ^ select * from atacc1 where a = 1; -ERROR: column "a" does not exist +ERROR: column or variable "a" does not exist LINE 1: select * from atacc1 where a = 1; ^ select "........pg.dropped.1........" from atacc1; -ERROR: column "........pg.dropped.1........" does not exist +ERROR: column or variable "........pg.dropped.1........" does not exist LINE 1: select "........pg.dropped.1........" from atacc1; ^ select atacc1."........pg.dropped.1........" from atacc1; -ERROR: column atacc1.........pg.dropped.1........ does not exist +ERROR: column or variable atacc1.........pg.dropped.1........ does not exist LINE 1: select atacc1."........pg.dropped.1........" from atacc1; ^ select "........pg.dropped.1........",b,c,d from atacc1; -ERROR: column "........pg.dropped.1........" does not exist +ERROR: column or variable "........pg.dropped.1........" does not exist LINE 1: select "........pg.dropped.1........",b,c,d from atacc1; ^ select * from atacc1 where "........pg.dropped.1........" = 1; -ERROR: column "........pg.dropped.1........" does not exist +ERROR: column or variable "........pg.dropped.1........" does not exist LINE 1: select * from atacc1 where "........pg.dropped.1........" = ... ^ -- UPDATEs @@ -1352,7 +1352,7 @@ ERROR: column "a" of relation "atacc1" does not exist LINE 1: update atacc1 set a = 3; ^ update atacc1 set b = 2 where a = 3; -ERROR: column "a" does not exist +ERROR: column or variable "a" does not exist LINE 1: update atacc1 set b = 2 where a = 3; ^ update atacc1 set "........pg.dropped.1........" = 3; @@ -1360,7 +1360,7 @@ ERROR: column "........pg.dropped.1........" of relation "atacc1" does not exis LINE 1: update atacc1 set "........pg.dropped.1........" = 3; ^ update atacc1 set b = 2 where "........pg.dropped.1........" = 3; -ERROR: column "........pg.dropped.1........" does not exist +ERROR: column or variable "........pg.dropped.1........" does not exist LINE 1: update atacc1 set b = 2 where "........pg.dropped.1........"... ^ -- INSERTs @@ -1408,11 +1408,11 @@ LINE 1: insert into atacc1 ("........pg.dropped.1........",b,c,d) va... ^ -- DELETEs delete from atacc1 where a = 3; -ERROR: column "a" does not exist +ERROR: column or variable "a" does not exist LINE 1: delete from atacc1 where a = 3; ^ delete from atacc1 where "........pg.dropped.1........" = 3; -ERROR: column "........pg.dropped.1........" does not exist +ERROR: column or variable "........pg.dropped.1........" does not exist LINE 1: delete from atacc1 where "........pg.dropped.1........" = 3; ^ delete from atacc1; @@ -1490,9 +1490,9 @@ ERROR: column "a" named in key does not exist alter table atacc1 add unique("........pg.dropped.1........"); ERROR: column "........pg.dropped.1........" named in key does not exist alter table atacc1 add check (a > 3); -ERROR: column "a" does not exist +ERROR: column or variable "a" does not exist alter table atacc1 add check ("........pg.dropped.1........" > 3); -ERROR: column "........pg.dropped.1........" does not exist +ERROR: column or variable "........pg.dropped.1........" does not exist create table atacc2 (id int4 unique); alter table atacc1 add foreign key (a) references atacc2(id); ERROR: column "a" referenced in foreign key constraint does not exist @@ -1698,7 +1698,7 @@ select f1 from c1; alter table c1 drop column f1; select f1 from c1; -ERROR: column "f1" does not exist +ERROR: column or variable "f1" does not exist LINE 1: select f1 from c1; ^ HINT: Perhaps you meant to reference the column "c1.f2". @@ -1712,7 +1712,7 @@ ERROR: cannot drop inherited column "f1" alter table p1 drop column f1; -- c1.f1 is dropped now, since there is no local definition for it select f1 from c1; -ERROR: column "f1" does not exist +ERROR: column or variable "f1" does not exist LINE 1: select f1 from c1; ^ HINT: Perhaps you meant to reference the column "c1.f2". diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out index 5f3685e9ef..edff69cd22 100644 --- a/src/test/regress/expected/copy2.out +++ b/src/test/regress/expected/copy2.out @@ -105,7 +105,7 @@ LINE 1: COPY x TO stdout WHERE a = 1; COPY x from stdin WHERE a = 50004; COPY x from stdin WHERE a > 60003; COPY x from stdin WHERE f > 60003; -ERROR: column "f" does not exist +ERROR: column or variable "f" does not exist LINE 1: COPY x from stdin WHERE f > 60003; ^ COPY x from stdin WHERE a = max(x.b); diff --git a/src/test/regress/expected/errors.out b/src/test/regress/expected/errors.out index 15862d4475..0ba21ead0b 100644 --- a/src/test/regress/expected/errors.out +++ b/src/test/regress/expected/errors.out @@ -27,7 +27,7 @@ LINE 1: select * from nonesuch; ^ -- bad name in target list select nonesuch from pg_database; -ERROR: column "nonesuch" does not exist +ERROR: column or variable "nonesuch" does not exist LINE 1: select nonesuch from pg_database; ^ -- empty distinct list isn't OK @@ -37,17 +37,17 @@ LINE 1: select distinct from pg_database; ^ -- bad attribute name on lhs of operator select * from pg_database where nonesuch = pg_database.datname; -ERROR: column "nonesuch" does not exist +ERROR: column or variable "nonesuch" does not exist LINE 1: select * from pg_database where nonesuch = pg_database.datna... ^ -- bad attribute name on rhs of operator select * from pg_database where pg_database.datname = nonesuch; -ERROR: column "nonesuch" does not exist +ERROR: column or variable "nonesuch" does not exist LINE 1: ...ect * from pg_database where pg_database.datname = nonesuch; ^ -- bad attribute name in select distinct on select distinct on (foobar) * from pg_database; -ERROR: column "foobar" does not exist +ERROR: column or variable "foobar" does not exist LINE 1: select distinct on (foobar) * from pg_database; ^ -- grouping with FOR UPDATE diff --git a/src/test/regress/expected/generated.out b/src/test/regress/expected/generated.out index cb9373227d..adfa95cc77 100644 --- a/src/test/regress/expected/generated.out +++ b/src/test/regress/expected/generated.out @@ -55,7 +55,7 @@ LINE 2: b int GENERATED ALWAYS AS (num_nulls(gtest_err_2c)) STOR... DETAIL: This would cause the generated column to depend on its own value. -- invalid reference CREATE TABLE gtest_err_3 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (c * 2) STORED); -ERROR: column "c" does not exist +ERROR: column or variable "c" does not exist LINE 1: ..._3 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (c * 2) STO... ^ -- generation expression must be immutable @@ -718,7 +718,7 @@ ALTER TABLE gtest25 ADD COLUMN x int GENERATED ALWAYS AS (b * 4) STORED; -- err ERROR: cannot use generated column "b" in column generation expression DETAIL: A generated column cannot reference another generated column. ALTER TABLE gtest25 ADD COLUMN x int GENERATED ALWAYS AS (z * 4) STORED; -- error -ERROR: column "z" does not exist +ERROR: column or variable "z" does not exist ALTER TABLE gtest25 ADD COLUMN c int DEFAULT 42, ADD COLUMN x int GENERATED ALWAYS AS (c * 4) STORED; ALTER TABLE gtest25 ADD COLUMN d int DEFAULT 101; diff --git a/src/test/regress/expected/insert_conflict.out b/src/test/regress/expected/insert_conflict.out index 66d8633e3e..f11bed03d6 100644 --- a/src/test/regress/expected/insert_conflict.out +++ b/src/test/regress/expected/insert_conflict.out @@ -245,13 +245,13 @@ LINE 1: ...y) do update set fruit = excluded.fruit RETURNING excluded.f... HINT: There is an entry for table "excluded", but it cannot be referenced from this part of the query. -- Only suggest .* column when inference element misspelled: insert into insertconflicttest values (1, 'Apple') on conflict (keyy) do update set fruit = excluded.fruit; -ERROR: column "keyy" does not exist +ERROR: column or variable "keyy" does not exist LINE 1: ...nsertconflicttest values (1, 'Apple') on conflict (keyy) do ... ^ HINT: Perhaps you meant to reference the column "insertconflicttest.key" or the column "excluded.key". -- Have useful HINT for EXCLUDED.* RTE within UPDATE: insert into insertconflicttest values (1, 'Apple') on conflict (key) do update set fruit = excluded.fruitt; -ERROR: column excluded.fruitt does not exist +ERROR: column or variable excluded.fruitt does not exist LINE 1: ... 'Apple') on conflict (key) do update set fruit = excluded.f... ^ HINT: Perhaps you meant to reference the column "excluded.fruit". @@ -448,7 +448,7 @@ drop table insertconflicttest; create table syscolconflicttest(key int4, data text); insert into syscolconflicttest values (1); insert into syscolconflicttest values (1) on conflict (key) do update set data = excluded.ctid::text; -ERROR: column excluded.ctid does not exist +ERROR: column or variable excluded.ctid does not exist LINE 1: ...values (1) on conflict (key) do update set data = excluded.c... ^ drop table syscolconflicttest; diff --git a/src/test/regress/expected/join.out b/src/test/regress/expected/join.out index d5b5b775fd..b7559d4bbd 100644 --- a/src/test/regress/expected/join.out +++ b/src/test/regress/expected/join.out @@ -1646,7 +1646,7 @@ SELECT * FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE x.i = 1; -- ok (1 row) SELECT * FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE x.t = 'one'; -- error -ERROR: column x.t does not exist +ERROR: column or variable x.t does not exist LINE 1: ...CT * FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE x.t = 'one... ^ SELECT * FROM (J1_TBL JOIN J2_TBL USING (i) AS x) AS xx WHERE x.i = 1; -- error (XXX could use better hint) @@ -2497,7 +2497,7 @@ select * from t1 left join t2 on (t1.a = t2.a); -- Test matching of column name with wrong alias select t1.x from t1 join t3 on (t1.a = t3.x); -ERROR: column t1.x does not exist +ERROR: column or variable t1.x does not exist LINE 1: select t1.x from t1 join t3 on (t1.a = t3.x); ^ HINT: Perhaps you meant to reference the column "t3.x". @@ -4927,19 +4927,19 @@ select * from -- select t1.uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, prefer "t1" suggestion -ERROR: column t1.uunique1 does not exist +ERROR: column or variable t1.uunique1 does not exist LINE 1: select t1.uunique1 from ^ HINT: Perhaps you meant to reference the column "t1.unique1". select t2.uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, prefer "t2" suggestion -ERROR: column t2.uunique1 does not exist +ERROR: column or variable t2.uunique1 does not exist LINE 1: select t2.uunique1 from ^ HINT: Perhaps you meant to reference the column "t2.unique1". select uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, suggest both at once -ERROR: column "uunique1" does not exist +ERROR: column or variable "uunique1" does not exist LINE 1: select uunique1 from ^ HINT: Perhaps you meant to reference the column "t1.unique1" or the column "t2.unique1". @@ -4951,7 +4951,7 @@ select atts.relid::regclass, s.* from pg_stats s join a.attrelid::regclass::text join (select unnest(indkey) attnum, indexrelid from pg_index i) atts on atts.attnum = a.attnum where schemaname != 'pg_catalog'; -ERROR: column atts.relid does not exist +ERROR: column or variable atts.relid does not exist LINE 1: select atts.relid::regclass, s.* from pg_stats s join ^ -- @@ -5970,7 +5970,7 @@ lateral (select * from int8_tbl t1, -- test some error cases where LATERAL should have been used but wasn't select f1,g from int4_tbl a, (select f1 as g) ss; -ERROR: column "f1" does not exist +ERROR: column or variable "f1" does not exist LINE 1: select f1,g from int4_tbl a, (select f1 as g) ss; ^ HINT: There is a column named "f1" in table "a", but it cannot be referenced from this part of the query. @@ -5980,7 +5980,7 @@ LINE 1: select f1,g from int4_tbl a, (select a.f1 as g) ss; ^ HINT: There is an entry for table "a", but it cannot be referenced from this part of the query. select f1,g from int4_tbl a cross join (select f1 as g) ss; -ERROR: column "f1" does not exist +ERROR: column or variable "f1" does not exist LINE 1: select f1,g from int4_tbl a cross join (select f1 as g) ss; ^ HINT: There is a column named "f1" in table "a", but it cannot be referenced from this part of the query. @@ -6015,7 +6015,7 @@ LINE 1: select 1 from tenk1 a, lateral (select max(a.unique1) from i... create temp table xx1 as select f1 as x1, -f1 as x2 from int4_tbl; -- error, can't do this: update xx1 set x2 = f1 from (select * from int4_tbl where f1 = x1) ss; -ERROR: column "x1" does not exist +ERROR: column or variable "x1" does not exist LINE 1: ... set x2 = f1 from (select * from int4_tbl where f1 = x1) ss; ^ HINT: There is a column named "x1" in table "xx1", but it cannot be referenced from this part of the query. @@ -6035,7 +6035,7 @@ update xx1 set x2 = f1 from xx1, lateral (select * from int4_tbl where f1 = x1) ERROR: table name "xx1" specified more than once -- also errors: delete from xx1 using (select * from int4_tbl where f1 = x1) ss; -ERROR: column "x1" does not exist +ERROR: column or variable "x1" does not exist LINE 1: ...te from xx1 using (select * from int4_tbl where f1 = x1) ss; ^ HINT: There is a column named "x1" in table "xx1", but it cannot be referenced from this part of the query. diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out index 33eb5e54b9..3bb7bb6527 100644 --- a/src/test/regress/expected/plpgsql.out +++ b/src/test/regress/expected/plpgsql.out @@ -2573,7 +2573,7 @@ end; $$ language plpgsql; -- should fail: SQLSTATE and SQLERRM are only in defined EXCEPTION -- blocks select excpt_test1(); -ERROR: column "sqlstate" does not exist +ERROR: column or variable "sqlstate" does not exist LINE 1: sqlstate ^ QUERY: sqlstate @@ -2588,7 +2588,7 @@ begin end; $$ language plpgsql; -- should fail select excpt_test2(); -ERROR: column "sqlstate" does not exist +ERROR: column or variable "sqlstate" does not exist LINE 1: sqlstate ^ QUERY: sqlstate @@ -4602,7 +4602,7 @@ BEGIN RAISE NOTICE '%, %', r.roomno, r.comment; END LOOP; END$$; -ERROR: column "foo" does not exist +ERROR: column or variable "foo" does not exist LINE 1: SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomn... ^ QUERY: SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomno @@ -4644,7 +4644,7 @@ begin raise notice 'x = %', x; end; $$; -ERROR: column "x" does not exist +ERROR: column or variable "x" does not exist LINE 1: x + 1 ^ QUERY: x + 1 @@ -4656,7 +4656,7 @@ begin raise notice 'x = %, y = %', x, y; end; $$; -ERROR: column "x" does not exist +ERROR: column or variable "x" does not exist LINE 1: x + 1 ^ QUERY: x + 1 @@ -5669,7 +5669,7 @@ ALTER TABLE alter_table_under_transition_tables DROP column name; UPDATE alter_table_under_transition_tables SET id = id; -ERROR: column "name" does not exist +ERROR: column or variable "name" does not exist LINE 1: (SELECT string_agg(id || '=' || name, ',') FROM d) ^ QUERY: (SELECT string_agg(id || '=' || name, ',') FROM d) diff --git a/src/test/regress/expected/rowtypes.out b/src/test/regress/expected/rowtypes.out index 0e71baf8fb..0a55166a30 100644 --- a/src/test/regress/expected/rowtypes.out +++ b/src/test/regress/expected/rowtypes.out @@ -927,7 +927,7 @@ LINE 1: select text(fullname) from fullname; ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. select fullname.text from fullname; -- error -ERROR: column fullname.text does not exist +ERROR: column or variable fullname.text does not exist LINE 1: select fullname.text from fullname; ^ -- same, but RECORD instead of named composite type: diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index d652f7b5fb..1100ae9316 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -1191,7 +1191,7 @@ drop rule rules_foorule on rules_foo; -- this should fail because f1 is not exposed for unqualified reference: create rule rules_foorule as on insert to rules_foo where f1 < 100 do instead insert into rules_foo2 values (f1); -ERROR: column "f1" does not exist +ERROR: column or variable "f1" does not exist LINE 2: do instead insert into rules_foo2 values (f1); ^ HINT: There is a column named "f1" in table "old", but it cannot be referenced from this part of the query. @@ -2906,7 +2906,7 @@ select * from rules_fooview; (1 row) select xmin, * from rules_fooview; -- fail, views don't have such a column -ERROR: column "xmin" does not exist +ERROR: column or variable "xmin" does not exist LINE 1: select xmin, * from rules_fooview; ^ select reltoastrelid, relkind, relfrozenxid diff --git a/src/test/regress/expected/transactions.out b/src/test/regress/expected/transactions.out index 61862d595d..cee0d09f55 100644 --- a/src/test/regress/expected/transactions.out +++ b/src/test/regress/expected/transactions.out @@ -218,7 +218,7 @@ SELECT * FROM trans_barbaz; -- should have 1 BEGIN; SAVEPOINT one; SELECT trans_foo; -ERROR: column "trans_foo" does not exist +ERROR: column or variable "trans_foo" does not exist LINE 1: SELECT trans_foo; ^ ROLLBACK TO SAVEPOINT one; @@ -267,7 +267,7 @@ BEGIN; SAVEPOINT one; INSERT INTO savepoints VALUES (5); SELECT trans_foo; -ERROR: column "trans_foo" does not exist +ERROR: column or variable "trans_foo" does not exist LINE 1: SELECT trans_foo; ^ COMMIT; diff --git a/src/test/regress/expected/union.out b/src/test/regress/expected/union.out index dece7310cf..2514a2e4ac 100644 --- a/src/test/regress/expected/union.out +++ b/src/test/regress/expected/union.out @@ -907,7 +907,7 @@ ORDER BY q2,q1; -- This should fail, because q2 isn't a name of an EXCEPT output column SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1; -ERROR: column "q2" does not exist +ERROR: column or variable "q2" does not exist LINE 1: ... int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1... ^ HINT: There is a column named "q2" in table "*SELECT* 2", but it cannot be referenced from this part of the query. -- 2.33.1