v20250109-0020-this-patch-changes-error-message-column-doesn-t-exis.patch
text/x-patch
Filename: v20250109-0020-this-patch-changes-error-message-column-doesn-t-exis.patch
Type: text/x-patch
Part: 3
Message:
Re: Re: proposal: schema variables
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v20250109-0020
Subject: this patch changes error message "column doesn't exist" to message "column or variable doesn't exist"
| File | + | − |
|---|---|---|
| src/backend/parser/parse_expr.c | 1 | 1 |
| src/backend/parser/parse_relation.c | 19 | 5 |
| src/backend/parser/parse_target.c | 6 | 2 |
| src/include/parser/parse_expr.h | 2 | 0 |
| src/pl/plpgsql/src/expected/plpgsql_array.out | 1 | 1 |
| src/pl/plpgsql/src/expected/plpgsql_record.out | 2 | 2 |
| src/pl/plpgsql/src/expected/plpgsql_session_variable.out | 1 | 1 |
| src/pl/tcl/expected/pltcl_queries.out | 6 | 6 |
| src/test/isolation/expected/session-variable.out | 2 | 2 |
| src/test/regress/expected/alter_table.out | 16 | 16 |
| src/test/regress/expected/copy2.out | 1 | 1 |
| src/test/regress/expected/errors.out | 4 | 4 |
| src/test/regress/expected/join.out | 6 | 6 |
| src/test/regress/expected/namespace.out | 1 | 1 |
| src/test/regress/expected/numerology.out | 1 | 1 |
| src/test/regress/expected/plpgsql.out | 6 | 6 |
| src/test/regress/expected/psql.out | 1 | 1 |
| src/test/regress/expected/rules.out | 1 | 1 |
| src/test/regress/expected/session_variables.out | 3 | 3 |
| src/test/regress/expected/transactions.out | 2 | 2 |
| src/test/regress/expected/union.out | 1 | 1 |
From 4b750795f63bce2380c4b063c68850fe6fb10614 Mon Sep 17 00:00:00 2001
From: Laurenz Albe <laurenz.albe@cybertec.at>
Date: Wed, 13 Nov 2024 15:10:39 +0100
Subject: [PATCH 20/22] 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 directly related to session variables, and then it is distributed as separate patch
---
src/backend/parser/parse_expr.c | 2 +-
src/backend/parser/parse_relation.c | 24 +++++++++++---
src/backend/parser/parse_target.c | 8 +++--
src/include/parser/parse_expr.h | 2 ++
src/pl/plpgsql/src/expected/plpgsql_array.out | 2 +-
.../plpgsql/src/expected/plpgsql_record.out | 4 +--
.../src/expected/plpgsql_session_variable.out | 2 +-
src/pl/tcl/expected/pltcl_queries.out | 12 +++----
.../isolation/expected/session-variable.out | 4 +--
src/test/regress/expected/alter_table.out | 32 +++++++++----------
src/test/regress/expected/copy2.out | 2 +-
src/test/regress/expected/errors.out | 8 ++---
src/test/regress/expected/join.out | 12 +++----
src/test/regress/expected/namespace.out | 2 +-
src/test/regress/expected/numerology.out | 2 +-
src/test/regress/expected/plpgsql.out | 12 +++----
src/test/regress/expected/psql.out | 2 +-
src/test/regress/expected/rules.out | 2 +-
.../regress/expected/session_variables.out | 6 ++--
src/test/regress/expected/transactions.out | 4 +--
src/test/regress/expected/union.out | 2 +-
21 files changed, 83 insertions(+), 63 deletions(-)
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 3a904e5c25..004166dd50 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -526,7 +526,7 @@ transformIndirection(ParseState *pstate, A_Indirection *ind)
* printed. When we are in an expression where session variables cannot be
* used, we raise the first form of error message.
*/
-static bool
+bool
expr_kind_allows_session_variables(ParseExprKind p_expr_kind)
{
bool result = false;
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 865a12d8b7..c87b42bad2 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -27,6 +27,7 @@
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
#include "parser/parse_enr.h"
+#include "parser/parse_expr.h"
#include "parser/parse_relation.h"
#include "parser/parse_type.h"
#include "parser/parsetree.h"
@@ -3730,6 +3731,19 @@ errorMissingRTE(ParseState *pstate, RangeVar *relation)
parser_errposition(pstate, relation->location)));
}
+/*
+ * set message "column does not exist" or "column or variable does not exist"
+ * in dependency if expression context allows session variables.
+ */
+static int
+column_or_variable_does_not_exists(ParseState *pstate, const char *colname)
+{
+ if (expr_kind_allows_session_variables(pstate->p_expr_kind))
+ return errmsg("column or variable \"%s\" does not exist", colname);
+ else
+ return errmsg("column \"%s\" does not exist", colname);
+}
+
/*
* Generate a suitable error about a missing column.
*
@@ -3764,7 +3778,7 @@ errorMissingColumn(ParseState *pstate,
(errcode(ERRCODE_UNDEFINED_COLUMN),
relname ?
errmsg("column %s.%s does not exist", relname, colname) :
- errmsg("column \"%s\" does not exist", colname),
+ column_or_variable_does_not_exists(pstate, colname),
errdetail("There are columns named \"%s\", but they are in tables that cannot be referenced from this part of the query.",
colname),
!relname ? errhint("Try using a table-qualified name.") : 0,
@@ -3774,7 +3788,7 @@ errorMissingColumn(ParseState *pstate,
(errcode(ERRCODE_UNDEFINED_COLUMN),
relname ?
errmsg("column %s.%s does not exist", relname, colname) :
- errmsg("column \"%s\" does not exist", colname),
+ column_or_variable_does_not_exists(pstate, colname),
errdetail("There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query.",
colname, state->rexact1->eref->aliasname),
rte_visible_if_lateral(pstate, state->rexact1) ?
@@ -3792,14 +3806,14 @@ errorMissingColumn(ParseState *pstate,
(errcode(ERRCODE_UNDEFINED_COLUMN),
relname ?
errmsg("column %s.%s does not exist", relname, colname) :
- errmsg("column \"%s\" does not exist", colname),
+ column_or_variable_does_not_exists(pstate, colname),
parser_errposition(pstate, location)));
/* Handle case where we have a single alternative spelling to offer */
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_COLUMN),
relname ?
errmsg("column %s.%s does not exist", relname, colname) :
- errmsg("column \"%s\" does not exist", colname),
+ column_or_variable_does_not_exists(pstate, colname),
errhint("Perhaps you meant to reference the column \"%s.%s\".",
state->rfirst->eref->aliasname,
strVal(list_nth(state->rfirst->eref->colnames,
@@ -3813,7 +3827,7 @@ errorMissingColumn(ParseState *pstate,
(errcode(ERRCODE_UNDEFINED_COLUMN),
relname ?
errmsg("column %s.%s does not exist", relname, colname) :
- errmsg("column \"%s\" does not exist", colname),
+ column_or_variable_does_not_exists(pstate, colname),
errhint("Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\".",
state->rfirst->eref->aliasname,
strVal(list_nth(state->rfirst->eref->colnames,
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index 300ea34878..3402ee86de 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -779,7 +779,9 @@ transformAssignmentIndirection(ParseState *pstate,
if (!typrelid)
ereport(ERROR,
(errcode(ERRCODE_DATATYPE_MISMATCH),
- errmsg("cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type",
+ errmsg(expr_kind_allows_session_variables(pstate->p_expr_kind) ?
+ "cannot assign to field \"%s\" of column or variable \"%s\" because its type %s is not a composite type" :
+ "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type",
strVal(n), targetName,
format_type_be(targetTypeId)),
parser_errposition(pstate, location)));
@@ -788,7 +790,9 @@ transformAssignmentIndirection(ParseState *pstate,
if (attnum == InvalidAttrNumber)
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_COLUMN),
- errmsg("cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s",
+ errmsg(expr_kind_allows_session_variables(pstate->p_expr_kind) ?
+ "cannot assign to field \"%s\" of column or variable \"%s\" because there is no such column in data type %s" :
+ "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s",
strVal(n), targetName,
format_type_be(targetTypeId)),
parser_errposition(pstate, location)));
diff --git a/src/include/parser/parse_expr.h b/src/include/parser/parse_expr.h
index 5bde43758d..71ec213f88 100644
--- a/src/include/parser/parse_expr.h
+++ b/src/include/parser/parse_expr.h
@@ -24,4 +24,6 @@ extern Node *transformExpr(ParseState *pstate, Node *expr, ParseExprKind exprKin
extern const char *ParseExprKindName(ParseExprKind exprKind);
+extern bool expr_kind_allows_session_variables(ParseExprKind p_expr_kind);
+
#endif /* PARSE_EXPR_H */
diff --git a/src/pl/plpgsql/src/expected/plpgsql_array.out b/src/pl/plpgsql/src/expected/plpgsql_array.out
index ad60e0e8be..c1ab9fd7ed 100644
--- a/src/pl/plpgsql/src/expected/plpgsql_array.out
+++ b/src/pl/plpgsql/src/expected/plpgsql_array.out
@@ -41,7 +41,7 @@ NOTICE: a = {"(,11)"}, a[1].i = 11
-- perhaps this ought to work, but for now it doesn't:
do $$ declare a complex[];
begin a[1:2].i := array[11,12]; raise notice 'a = %', a; end$$;
-ERROR: cannot assign to field "i" of column "a" because its type complex[] is not a composite type
+ERROR: cannot assign to field "i" of column or variable "a" because its type complex[] is not a composite type
LINE 1: a[1:2].i := array[11,12]
^
QUERY: a[1:2].i := array[11,12]
diff --git a/src/pl/plpgsql/src/expected/plpgsql_record.out b/src/pl/plpgsql/src/expected/plpgsql_record.out
index 6974c8f4a4..3970ac721c 100644
--- a/src/pl/plpgsql/src/expected/plpgsql_record.out
+++ b/src/pl/plpgsql/src/expected/plpgsql_record.out
@@ -135,7 +135,7 @@ ERROR: record "c" has no field "x"
CONTEXT: PL/pgSQL assignment "c.x.q1 = 1"
PL/pgSQL function inline_code_block line 1 at assignment
do $$ declare c nested_int8s; begin c.c2.x = 1; end $$;
-ERROR: cannot assign to field "x" of column "c" because there is no such column in data type two_int8s
+ERROR: cannot assign to field "x" of column or variable "c" because there is no such column in data type two_int8s
LINE 1: c.c2.x = 1
^
QUERY: c.c2.x = 1
@@ -157,7 +157,7 @@ ERROR: record "c" has no field "x"
CONTEXT: PL/pgSQL assignment "b.c.x.q1 = 1"
PL/pgSQL function inline_code_block line 1 at assignment
do $$ <<b>> declare c nested_int8s; begin b.c.c2.x = 1; end $$;
-ERROR: cannot assign to field "x" of column "b" because there is no such column in data type two_int8s
+ERROR: cannot assign to field "x" of column or variable "b" because there is no such column in data type two_int8s
LINE 1: b.c.c2.x = 1
^
QUERY: b.c.c2.x = 1
diff --git a/src/pl/plpgsql/src/expected/plpgsql_session_variable.out b/src/pl/plpgsql/src/expected/plpgsql_session_variable.out
index ecac64fcfb..8bd2b398bd 100644
--- a/src/pl/plpgsql/src/expected/plpgsql_session_variable.out
+++ b/src/pl/plpgsql/src/expected/plpgsql_session_variable.out
@@ -232,7 +232,7 @@ SET ROLE TO DEFAULT;
SET ROLE TO regress_var_exec_role;
-- should fail, but not crash
SELECT var_read_func();
-ERROR: column "plpgsql_sv_var1" does not exist
+ERROR: column or variable "plpgsql_sv_var1" does not exist
LINE 1: plpgsql_sv_var1
^
QUERY: plpgsql_sv_var1
diff --git a/src/pl/tcl/expected/pltcl_queries.out b/src/pl/tcl/expected/pltcl_queries.out
index 35cc6e62aa..497cd38189 100644
--- a/src/pl/tcl/expected/pltcl_queries.out
+++ b/src/pl/tcl/expected/pltcl_queries.out
@@ -450,12 +450,12 @@ CONTEXT: while executing
"__PLTcl_proc_tcl_eval_text spi_prepare\ a\ \"b\ \{\""
in PL/Tcl function tcl_eval(text)
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/isolation/expected/session-variable.out b/src/test/isolation/expected/session-variable.out
index e9a254bcd1..d8848d555c 100644
--- a/src/test/isolation/expected/session-variable.out
+++ b/src/test/isolation/expected/session-variable.out
@@ -10,7 +10,7 @@ test
step drop: DROP VARIABLE myvar;
step val: SELECT myvar;
-ERROR: column "myvar" does not exist
+ERROR: column or variable "myvar" does not exist
starting permutation: let val s1 drop val sr1
step let: LET myvar = 'test';
@@ -23,7 +23,7 @@ test
step s1: BEGIN;
step drop: DROP VARIABLE myvar;
step val: SELECT myvar;
-ERROR: column "myvar" does not exist
+ERROR: column or variable "myvar" does not exist
step sr1: ROLLBACK;
starting permutation: let val dbg drop create dbg val
diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out
index 12852aa612..d6eb51e2cf 100644
--- a/src/test/regress/expected/alter_table.out
+++ b/src/test/regress/expected/alter_table.out
@@ -1295,19 +1295,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;
@@ -1317,7 +1317,7 @@ 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;
@@ -1331,15 +1331,15 @@ 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;
@@ -1347,11 +1347,11 @@ ERROR: column 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
@@ -1360,7 +1360,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;
@@ -1368,7 +1368,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
@@ -1416,11 +1416,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;
@@ -1706,7 +1706,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".
@@ -1720,7 +1720,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 64ea33aeae..6874f5ae0d 100644
--- a/src/test/regress/expected/copy2.out
+++ b/src/test/regress/expected/copy2.out
@@ -160,7 +160,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 8c527474da..e53ae451df 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/join.out b/src/test/regress/expected/join.out
index 079fcf46f0..a6e7105acc 100644
--- a/src/test/regress/expected/join.out
+++ b/src/test/regress/expected/join.out
@@ -6397,13 +6397,13 @@ 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".
select ctid from
tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, need qualification
-ERROR: column "ctid" does not exist
+ERROR: column or variable "ctid" does not exist
LINE 1: select ctid from
^
DETAIL: There are columns named "ctid", but they are in tables that cannot be referenced from this part of the query.
@@ -7500,7 +7500,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;
^
DETAIL: There is a column named "f1" in table "a", but it cannot be referenced from this part of the query.
@@ -7512,7 +7512,7 @@ LINE 1: select f1,g from int4_tbl a, (select a.f1 as g) ss;
DETAIL: There is an entry for table "a", but it cannot be referenced from this part of the query.
HINT: To reference that table, you must mark this subquery with LATERAL.
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;
^
DETAIL: There is a column named "f1" in table "a", but it cannot be referenced from this part of the query.
@@ -7549,7 +7549,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;
^
DETAIL: There is a column named "x1" in table "xx1", but it cannot be referenced from this part of the query.
@@ -7569,7 +7569,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;
^
DETAIL: 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/namespace.out b/src/test/regress/expected/namespace.out
index dbbda72d39..d98793f92a 100644
--- a/src/test/regress/expected/namespace.out
+++ b/src/test/regress/expected/namespace.out
@@ -23,7 +23,7 @@ BEGIN;
SET search_path to public, test_ns_schema_1;
CREATE SCHEMA test_ns_schema_2
CREATE VIEW abc_view AS SELECT c FROM abc;
-ERROR: column "c" does not exist
+ERROR: column or variable "c" does not exist
LINE 2: CREATE VIEW abc_view AS SELECT c FROM abc;
^
COMMIT;
diff --git a/src/test/regress/expected/numerology.out b/src/test/regress/expected/numerology.out
index 9e23166fed..672012e146 100644
--- a/src/test/regress/expected/numerology.out
+++ b/src/test/regress/expected/numerology.out
@@ -314,7 +314,7 @@ NOTICE: i = 1002
NOTICE: i = 1003
-- error cases
SELECT _100;
-ERROR: column "_100" does not exist
+ERROR: column or variable "_100" does not exist
LINE 1: SELECT _100;
^
SELECT 100_;
diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out
index 0a6945581b..5c599ba312 100644
--- a/src/test/regress/expected/plpgsql.out
+++ b/src/test/regress/expected/plpgsql.out
@@ -2598,7 +2598,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
@@ -2613,7 +2613,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
@@ -4675,7 +4675,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
@@ -4717,7 +4717,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
@@ -4729,7 +4729,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
@@ -5769,7 +5769,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/psql.out b/src/test/regress/expected/psql.out
index 77a7bf45c8..e1635f686c 100644
--- a/src/test/regress/expected/psql.out
+++ b/src/test/regress/expected/psql.out
@@ -214,7 +214,7 @@ select $1::int as col \bind 1 \g \bind 2 \g
-- errors
-- parse error
SELECT foo \bind \g
-ERROR: column "foo" does not exist
+ERROR: column or variable "foo" does not exist
LINE 1: SELECT foo
^
-- tcop error
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 3014d047fe..7378f95b17 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);
^
DETAIL: There are columns named "f1", but they are in tables that cannot be referenced from this part of the query.
diff --git a/src/test/regress/expected/session_variables.out b/src/test/regress/expected/session_variables.out
index 7638e1a477..565fb5da6e 100644
--- a/src/test/regress/expected/session_variables.out
+++ b/src/test/regress/expected/session_variables.out
@@ -811,7 +811,7 @@ ERROR: session variable "var1" doesn't exist
LINE 1: LET var1 = pi();
^
SELECT var1;
-ERROR: column "var1" does not exist
+ERROR: column or variable "var1" does not exist
LINE 1: SELECT var1;
^
-- should be ok
@@ -1030,7 +1030,7 @@ SELECT v1;
-- should fail, attribute doesn't exist
LET v1.x = 10;
-ERROR: cannot assign to field "x" of column "v1" because there is no such column in data type t1
+ERROR: cannot assign to field "x" of column or variable "v1" because there is no such column in data type t1
LINE 1: LET v1.x = 10;
^
-- should fail, don't allow multi column query
@@ -1750,7 +1750,7 @@ BEGIN;
DROP VARIABLE var1;
-- should fail
SELECT var1;
-ERROR: column "var1" does not exist
+ERROR: column or variable "var1" does not exist
LINE 1: SELECT var1;
^
ROLLBACK;
diff --git a/src/test/regress/expected/transactions.out b/src/test/regress/expected/transactions.out
index 7f5757e89c..b05b16d94b 100644
--- a/src/test/regress/expected/transactions.out
+++ b/src/test/regress/expected/transactions.out
@@ -256,7 +256,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;
@@ -305,7 +305,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 caa8fe70a0..1d3447e84d 100644
--- a/src/test/regress/expected/union.out
+++ b/src/test/regress/expected/union.out
@@ -939,7 +939,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...
^
DETAIL: There is a column named "q2" in table "*SELECT* 2", but it cannot be referenced from this part of the query.
--
2.47.1