v20240320-0018-this-patch-changes-error-message-column-doesn-t-exis.patch
text/x-patch
Filename: v20240320-0018-this-patch-changes-error-message-column-doesn-t-exis.patch
Type: text/x-patch
Part: 2
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 v20240320-0018
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 047636d70aa9c5ecf5a6f2b5b465b161809506a6 Mon Sep 17 00:00:00 2001
From: "okbob@github.com" <okbob@github.com>
Date: Sat, 20 Jan 2024 17:06:04 +0100
Subject: [PATCH 18/19] 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 ccfd7aa1f8..297a1bb8a9 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -508,7 +508,7 @@ transformIndirection(ParseState *pstate, A_Indirection *ind)
* 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 ef186ff969..f49d010034 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"
@@ -3646,6 +3647,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.
*
@@ -3680,7 +3694,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,
@@ -3690,7 +3704,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) ?
@@ -3708,14 +3722,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,
@@ -3729,7 +3743,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 ea522b932b..3d8dbd38e9 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -776,7 +776,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)));
@@ -785,7 +787,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 0d64b300f8..e5aebf99b4 100644
--- a/src/include/parser/parse_expr.h
+++ b/src/include/parser/parse_expr.h
@@ -23,4 +23,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 a9b5b778ef..07abc2e84d 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 789c3123b0..f006db4faa 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 to 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 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/isolation/expected/session-variable.out b/src/test/isolation/expected/session-variable.out
index 19a2e5a8f6..1c4149f6ef 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 7666c76238..158c43bc20 100644
--- a/src/test/regress/expected/alter_table.out
+++ b/src/test/regress/expected/alter_table.out
@@ -1293,19 +1293,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;
@@ -1315,7 +1315,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;
@@ -1329,15 +1329,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;
@@ -1345,11 +1345,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
@@ -1358,7 +1358,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;
@@ -1366,7 +1366,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
@@ -1414,11 +1414,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;
@@ -1704,7 +1704,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".
@@ -1718,7 +1718,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 f98c2d1c4e..2ae61b91db 100644
--- a/src/test/regress/expected/copy2.out
+++ b/src/test/regress/expected/copy2.out
@@ -136,7 +136,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 63cddac0d6..fa4e813d92 100644
--- a/src/test/regress/expected/join.out
+++ b/src/test/regress/expected/join.out
@@ -7207,13 +7207,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.
@@ -8310,7 +8310,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.
@@ -8322,7 +8322,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.
@@ -8359,7 +8359,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.
@@ -8379,7 +8379,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 7d36e9cc0c..d1ccb744db 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 f662a5050a..fd89def959 100644
--- a/src/test/regress/expected/numerology.out
+++ b/src/test/regress/expected/numerology.out
@@ -299,7 +299,7 @@ SELECT 1_000.5e0_1;
-- 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 57c1ae092d..a8fa38ce95 100644
--- a/src/test/regress/expected/plpgsql.out
+++ b/src/test/regress/expected/plpgsql.out
@@ -2600,7 +2600,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
@@ -2615,7 +2615,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
@@ -4648,7 +4648,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
@@ -4690,7 +4690,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
@@ -4702,7 +4702,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
@@ -5742,7 +5742,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 fdc4317e45..d35107f0a1 100644
--- a/src/test/regress/expected/psql.out
+++ b/src/test/regress/expected/psql.out
@@ -120,7 +120,7 @@ SELECT $1, $2 \bind 'foo' 'bar' \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 84e359f6ed..8334c4049b 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 d58a78650c..4e945bf75c 100644
--- a/src/test/regress/expected/session_variables.out
+++ b/src/test/regress/expected/session_variables.out
@@ -296,7 +296,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
@@ -482,7 +482,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
@@ -1029,7 +1029,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 882017afc9..8043f05431 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...
^
DETAIL: There is a column named "q2" in table "*SELECT* 2", but it cannot be referenced from this part of the query.
--
2.44.0