From 4af123ad45bd5e91221983da1152033e6153498c Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Thu, 5 Sep 2024 15:19:00 +0200 Subject: [PATCH] Fix misleading error message context Author: Pavel Stehule Reviewed-by: Stepan Neretin Discussion: https://www.postgresql.org/message-id/flat/CAFj8pRAw+OkVW=FgMKHKyvY3CgtWy3cWdY7XT+S5TJaTttu=oA@mail.gmail.com --- src/backend/executor/spi.c | 2 +- src/pl/plpgsql/src/expected/plpgsql_record.out | 8 ++++---- src/pl/plpgsql/src/expected/plpgsql_varprops.out | 2 +- src/test/regress/expected/plpgsql.out | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c index d6516b1bca..90d9834576 100644 --- a/src/backend/executor/spi.c +++ b/src/backend/executor/spi.c @@ -2978,7 +2978,7 @@ _SPI_error_callback(void *arg) switch (carg->mode) { case RAW_PARSE_PLPGSQL_EXPR: - errcontext("SQL expression \"%s\"", query); + errcontext("PL/pgSQL expression \"%s\"", query); break; case RAW_PARSE_PLPGSQL_ASSIGN1: case RAW_PARSE_PLPGSQL_ASSIGN2: diff --git a/src/pl/plpgsql/src/expected/plpgsql_record.out b/src/pl/plpgsql/src/expected/plpgsql_record.out index a9b5b778ef..6974c8f4a4 100644 --- a/src/pl/plpgsql/src/expected/plpgsql_record.out +++ b/src/pl/plpgsql/src/expected/plpgsql_record.out @@ -272,7 +272,7 @@ NOTICE: r1.q1 = NOTICE: r1.q2 = NOTICE: r1 = ERROR: record "r1" has no field "nosuchfield" -CONTEXT: SQL expression "r1.nosuchfield" +CONTEXT: PL/pgSQL expression "r1.nosuchfield" PL/pgSQL function inline_code_block line 7 at RAISE -- records, not so much do $$ @@ -286,7 +286,7 @@ end$$; NOTICE: r1 = ERROR: record "r1" is not assigned yet DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. -CONTEXT: SQL expression "r1.f1" +CONTEXT: PL/pgSQL expression "r1.f1" PL/pgSQL function inline_code_block line 5 at RAISE -- but OK if you assign first do $$ @@ -304,7 +304,7 @@ NOTICE: r1.f1 = 1 NOTICE: r1.f2 = 2 NOTICE: r1 = (1,2) ERROR: record "r1" has no field "nosuchfield" -CONTEXT: SQL expression "r1.nosuchfield" +CONTEXT: PL/pgSQL expression "r1.nosuchfield" PL/pgSQL function inline_code_block line 9 at RAISE -- check %type with block-qualified variable names do $$ @@ -598,7 +598,7 @@ create function getf3(x mutable) returns int language plpgsql as $$ begin return x.f3; end $$; select getf3(null::mutable); -- doesn't work yet ERROR: record "x" has no field "f3" -CONTEXT: SQL expression "x.f3" +CONTEXT: PL/pgSQL expression "x.f3" PL/pgSQL function getf3(mutable) line 1 at RETURN alter table mutable add column f3 int; select getf3(null::mutable); -- now it works diff --git a/src/pl/plpgsql/src/expected/plpgsql_varprops.out b/src/pl/plpgsql/src/expected/plpgsql_varprops.out index 25115a02bd..958d7bca9a 100644 --- a/src/pl/plpgsql/src/expected/plpgsql_varprops.out +++ b/src/pl/plpgsql/src/expected/plpgsql_varprops.out @@ -76,7 +76,7 @@ begin raise notice 'x = %', x; end$$; ERROR: division by zero -CONTEXT: SQL expression "1/0" +CONTEXT: PL/pgSQL expression "1/0" PL/pgSQL function inline_code_block line 2 during statement block local variable initialization do $$ declare x bigint[] := array[1,3,5]; diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out index 074af8f33a..0a6945581b 100644 --- a/src/test/regress/expected/plpgsql.out +++ b/src/test/regress/expected/plpgsql.out @@ -2388,7 +2388,7 @@ begin end $$ language plpgsql; select namedparmcursor_test7(); ERROR: division by zero -CONTEXT: SQL expression "42/0 AS p1, 77 AS p2" +CONTEXT: PL/pgSQL expression "42/0 AS p1, 77 AS p2" PL/pgSQL function namedparmcursor_test7() line 6 at OPEN -- check that line comments work correctly within the argument list -- (this used to require a special hack in the code; it no longer does, @@ -4563,11 +4563,11 @@ end $$; select fail(); ERROR: division by zero -CONTEXT: SQL expression "1/0" +CONTEXT: PL/pgSQL expression "1/0" PL/pgSQL function fail() line 3 at RETURN select fail(); ERROR: division by zero -CONTEXT: SQL expression "1/0" +CONTEXT: PL/pgSQL expression "1/0" PL/pgSQL function fail() line 3 at RETURN drop function fail(); -- Test handling of string literals.