mirror of
https://github.com/postgres/postgres.git
synced 2025-05-03 22:24:49 +03:00
Fix a few bogus statement type names in plpgsql error messages.
plpgsql's error location context messages ("PL/pgSQL function fn-name line line-no at stmt-type") would misreport a CONTINUE statement as being an EXIT, and misreport a MOVE statement as being a FETCH. These are clear bugs that have been there a long time, so back-patch to all supported branches. In addition, in 9.5 and HEAD, change the description of EXECUTE from "EXECUTE statement" to just plain EXECUTE; there seems no good reason why this statement type should be described differently from others that have a well-defined head keyword. And distinguish GET STACKED DIAGNOSTICS from plain GET DIAGNOSTICS. These are a bit more of a judgment call, and also affect existing regression-test outputs, so I did not back-patch into stable branches. Pavel Stehule and Tom Lane
This commit is contained in:
parent
f25087d26a
commit
4c3754ffe0
@ -235,7 +235,7 @@ plpgsql_stmt_typename(PLpgSQL_stmt *stmt)
|
||||
case PLPGSQL_STMT_FOREACH_A:
|
||||
return _("FOREACH over array");
|
||||
case PLPGSQL_STMT_EXIT:
|
||||
return "EXIT";
|
||||
return ((PLpgSQL_stmt_exit *) stmt)->is_exit ? "EXIT" : "CONTINUE";
|
||||
case PLPGSQL_STMT_RETURN:
|
||||
return "RETURN";
|
||||
case PLPGSQL_STMT_RETURN_NEXT:
|
||||
@ -249,15 +249,16 @@ plpgsql_stmt_typename(PLpgSQL_stmt *stmt)
|
||||
case PLPGSQL_STMT_EXECSQL:
|
||||
return _("SQL statement");
|
||||
case PLPGSQL_STMT_DYNEXECUTE:
|
||||
return _("EXECUTE statement");
|
||||
return "EXECUTE";
|
||||
case PLPGSQL_STMT_DYNFORS:
|
||||
return _("FOR over EXECUTE statement");
|
||||
case PLPGSQL_STMT_GETDIAG:
|
||||
return "GET DIAGNOSTICS";
|
||||
return ((PLpgSQL_stmt_getdiag *) stmt)->is_stacked ?
|
||||
"GET STACKED DIAGNOSTICS" : "GET DIAGNOSTICS";
|
||||
case PLPGSQL_STMT_OPEN:
|
||||
return "OPEN";
|
||||
case PLPGSQL_STMT_FETCH:
|
||||
return "FETCH";
|
||||
return ((PLpgSQL_stmt_fetch *) stmt)->is_move ? "MOVE" : "FETCH";
|
||||
case PLPGSQL_STMT_CLOSE:
|
||||
return "CLOSE";
|
||||
case PLPGSQL_STMT_PERFORM:
|
||||
|
@ -235,15 +235,15 @@ drop cascades to table schema_one."table two"
|
||||
drop cascades to table schema_one.table_three
|
||||
NOTICE: table "schema_two_table_two" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_two"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
NOTICE: table "audit_tbls_schema_two_table_three" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.audit_tbls_schema_two_table_three"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_three"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
ERROR: object audit_tbls.schema_two_table_three of type table cannot be dropped
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_three"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
DELETE FROM undroppable_objs WHERE object_identity = 'audit_tbls.schema_two_table_three';
|
||||
DROP SCHEMA schema_one, schema_two CASCADE;
|
||||
NOTICE: drop cascades to 7 other objects
|
||||
@ -256,21 +256,21 @@ drop cascades to table schema_one."table two"
|
||||
drop cascades to table schema_one.table_three
|
||||
NOTICE: table "schema_two_table_two" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_two"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
NOTICE: table "audit_tbls_schema_two_table_three" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.audit_tbls_schema_two_table_three"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_three"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
NOTICE: table "schema_one_table_one" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_one_table_one"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
NOTICE: table "schema_one_table two" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls."schema_one_table two""
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
NOTICE: table "schema_one_table_three" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_one_table_three"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
ERROR: object schema_one.table_three of type table cannot be dropped
|
||||
DELETE FROM undroppable_objs WHERE object_identity = 'schema_one.table_three';
|
||||
DROP SCHEMA schema_one, schema_two CASCADE;
|
||||
@ -284,21 +284,21 @@ drop cascades to table schema_one."table two"
|
||||
drop cascades to table schema_one.table_three
|
||||
NOTICE: table "schema_two_table_two" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_two"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
NOTICE: table "audit_tbls_schema_two_table_three" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.audit_tbls_schema_two_table_three"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_three"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
NOTICE: table "schema_one_table_one" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_one_table_one"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
NOTICE: table "schema_one_table two" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls."schema_one_table two""
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
NOTICE: table "schema_one_table_three" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_one_table_three"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
SELECT * FROM dropped_objects WHERE schema IS NULL OR schema <> 'pg_toast';
|
||||
type | schema | object
|
||||
--------------+------------+-------------------------------------
|
||||
@ -330,7 +330,7 @@ SELECT * FROM dropped_objects WHERE schema IS NULL OR schema <> 'pg_toast';
|
||||
DROP OWNED BY regression_bob;
|
||||
NOTICE: schema "audit_tbls" does not exist, skipping
|
||||
CONTEXT: SQL statement "DROP TABLE IF EXISTS audit_tbls.audit_tbls_schema_one_table_two"
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE statement
|
||||
PL/pgSQL function test_evtrig_dropped_objects() line 8 at EXECUTE
|
||||
SELECT * FROM dropped_objects WHERE type = 'schema';
|
||||
type | schema | object
|
||||
--------+--------+------------
|
||||
|
@ -3115,7 +3115,7 @@ begin
|
||||
end$$ language plpgsql;
|
||||
select footest();
|
||||
ERROR: query returned no rows
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE statement
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE
|
||||
create or replace function footest() returns void as $$
|
||||
declare x record;
|
||||
begin
|
||||
@ -3125,7 +3125,7 @@ begin
|
||||
end$$ language plpgsql;
|
||||
select footest();
|
||||
ERROR: query returned more than one row
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE statement
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE
|
||||
drop function footest();
|
||||
-- test printing parameters after failure due to STRICT
|
||||
set plpgsql.print_strict_params to true;
|
||||
@ -3177,7 +3177,7 @@ end$$ language plpgsql;
|
||||
select footest();
|
||||
ERROR: query returned no rows
|
||||
DETAIL: parameters: $1 = '0', $2 = 'foo'
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE statement
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE
|
||||
create or replace function footest() returns void as $$
|
||||
declare x record;
|
||||
begin
|
||||
@ -3188,7 +3188,7 @@ end$$ language plpgsql;
|
||||
select footest();
|
||||
ERROR: query returned more than one row
|
||||
DETAIL: parameters: $1 = '1'
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE statement
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE
|
||||
create or replace function footest() returns void as $$
|
||||
declare x record;
|
||||
begin
|
||||
@ -3198,7 +3198,7 @@ begin
|
||||
end$$ language plpgsql;
|
||||
select footest();
|
||||
ERROR: query returned more than one row
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE statement
|
||||
CONTEXT: PL/pgSQL function footest() line 5 at EXECUTE
|
||||
create or replace function footest() returns void as $$
|
||||
-- override the global
|
||||
#print_strict_params off
|
||||
@ -4237,7 +4237,7 @@ end;
|
||||
$$ language plpgsql;
|
||||
select stacked_diagnostics_test();
|
||||
ERROR: GET STACKED DIAGNOSTICS cannot be used outside an exception handler
|
||||
CONTEXT: PL/pgSQL function stacked_diagnostics_test() line 6 at GET DIAGNOSTICS
|
||||
CONTEXT: PL/pgSQL function stacked_diagnostics_test() line 6 at GET STACKED DIAGNOSTICS
|
||||
drop function zero_divide();
|
||||
drop function stacked_diagnostics_test();
|
||||
-- check cases where implicit SQLSTATE variable could be confused with
|
||||
|
@ -1493,7 +1493,7 @@ CONTEXT: SQL statement "insert into depth_b values (new.id)"
|
||||
PL/pgSQL function depth_a_tf() line 4 at SQL statement
|
||||
NOTICE: depth_c_tr: depth = 3
|
||||
CONTEXT: SQL statement "insert into depth_c values (1)"
|
||||
PL/pgSQL function depth_b_tf() line 5 at EXECUTE statement
|
||||
PL/pgSQL function depth_b_tf() line 5 at EXECUTE
|
||||
SQL statement "insert into depth_b values (new.id)"
|
||||
PL/pgSQL function depth_a_tf() line 4 at SQL statement
|
||||
NOTICE: SQLSTATE = U9999: depth = 2
|
||||
@ -1504,12 +1504,12 @@ CONTEXT: SQL statement "insert into depth_b values (new.id)"
|
||||
PL/pgSQL function depth_a_tf() line 4 at SQL statement
|
||||
NOTICE: depth_c_tr: depth = 3
|
||||
CONTEXT: SQL statement "insert into depth_c values (1)"
|
||||
PL/pgSQL function depth_b_tf() line 12 at EXECUTE statement
|
||||
PL/pgSQL function depth_b_tf() line 12 at EXECUTE
|
||||
SQL statement "insert into depth_b values (new.id)"
|
||||
PL/pgSQL function depth_a_tf() line 4 at SQL statement
|
||||
ERROR: U9999
|
||||
CONTEXT: SQL statement "insert into depth_c values (1)"
|
||||
PL/pgSQL function depth_b_tf() line 12 at EXECUTE statement
|
||||
PL/pgSQL function depth_b_tf() line 12 at EXECUTE
|
||||
SQL statement "insert into depth_b values (new.id)"
|
||||
PL/pgSQL function depth_a_tf() line 4 at SQL statement
|
||||
select pg_trigger_depth();
|
||||
@ -1525,12 +1525,12 @@ CONTEXT: SQL statement "insert into depth_b values (new.id)"
|
||||
PL/pgSQL function depth_a_tf() line 4 at SQL statement
|
||||
NOTICE: depth_c_tr: depth = 3
|
||||
CONTEXT: SQL statement "insert into depth_c values (2)"
|
||||
PL/pgSQL function depth_b_tf() line 5 at EXECUTE statement
|
||||
PL/pgSQL function depth_b_tf() line 5 at EXECUTE
|
||||
SQL statement "insert into depth_b values (new.id)"
|
||||
PL/pgSQL function depth_a_tf() line 4 at SQL statement
|
||||
NOTICE: depth_c_tr: depth = 3
|
||||
CONTEXT: SQL statement "insert into depth_c values (2)"
|
||||
PL/pgSQL function depth_b_tf() line 5 at EXECUTE statement
|
||||
PL/pgSQL function depth_b_tf() line 5 at EXECUTE
|
||||
SQL statement "insert into depth_b values (new.id)"
|
||||
PL/pgSQL function depth_a_tf() line 4 at SQL statement
|
||||
NOTICE: depth_b_tr: depth = 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user