diff --git a/contrib/dblink/expected/dblink.out b/contrib/dblink/expected/dblink.out index a49b5629a1..950f7ed191 100644 --- a/contrib/dblink/expected/dblink.out +++ b/contrib/dblink/expected/dblink.out @@ -1,4 +1,6 @@ CREATE EXTENSION dblink; +-- want context for notices +\set SHOW_CONTEXT always CREATE TABLE foo(f1 int, f2 text, f3 text[], primary key (f1,f2)); INSERT INTO foo VALUES (0,'a','{"a0","b0","c0"}'); INSERT INTO foo VALUES (1,'b','{"a1","b1","c1"}'); diff --git a/contrib/dblink/sql/dblink.sql b/contrib/dblink/sql/dblink.sql index ea78cc2929..0ebfbd2b91 100644 --- a/contrib/dblink/sql/dblink.sql +++ b/contrib/dblink/sql/dblink.sql @@ -1,5 +1,8 @@ CREATE EXTENSION dblink; +-- want context for notices +\set SHOW_CONTEXT always + CREATE TABLE foo(f1 int, f2 text, f3 text[], primary key (f1,f2)); INSERT INTO foo VALUES (0,'a','{"a0","b0","c0"}'); INSERT INTO foo VALUES (1,'b','{"a1","b1","c1"}'); diff --git a/contrib/hstore_plperl/expected/hstore_plperlu.out b/contrib/hstore_plperl/expected/hstore_plperlu.out index 8c689ad3ad..c97fd3fae2 100644 --- a/contrib/hstore_plperl/expected/hstore_plperlu.out +++ b/contrib/hstore_plperl/expected/hstore_plperlu.out @@ -29,7 +29,6 @@ INFO: $VAR1 = { 'cc' => undef }; -CONTEXT: PL/Perl function "test1" test1 ------- 2 @@ -46,7 +45,6 @@ $$; SELECT test1none('aa=>bb, cc=>NULL'::hstore); INFO: $VAR1 = '"aa"=>"bb", "cc"=>NULL'; -CONTEXT: PL/Perl function "test1none" test1none ----------- 0 @@ -67,7 +65,6 @@ INFO: $VAR1 = { 'cc' => undef }; -CONTEXT: PL/Perl function "test1list" test1list ----------- 2 @@ -92,7 +89,6 @@ $VAR2 = { 'dd' => 'ee' }; -CONTEXT: PL/Perl function "test1arr" test1arr ---------- 2 @@ -120,10 +116,8 @@ INFO: $VAR1 = { 'cc' => undef }; -CONTEXT: PL/Perl function "test3" INFO: $VAR1 = '"a"=>"1", "b"=>"boo", "c"=>NULL'; -CONTEXT: PL/Perl function "test3" test3 ------- @@ -161,7 +155,6 @@ INFO: $VAR1 = { } }; -CONTEXT: PL/Perl function "test4" SELECT * FROM test1; a | b ---+--------------------------------- diff --git a/contrib/hstore_plpython/expected/hstore_plpython.out b/contrib/hstore_plpython/expected/hstore_plpython.out index b7a6a92ac6..23091d3729 100644 --- a/contrib/hstore_plpython/expected/hstore_plpython.out +++ b/contrib/hstore_plpython/expected/hstore_plpython.out @@ -13,7 +13,6 @@ return len(val) $$; SELECT test1('aa=>bb, cc=>NULL'::hstore); INFO: [('aa', 'bb'), ('cc', None)] -CONTEXT: PL/Python function "test1" test1 ------- 2 @@ -32,7 +31,6 @@ return len(val) $$; SELECT test1n('aa=>bb, cc=>NULL'::hstore); INFO: [('aa', 'bb'), ('cc', None)] -CONTEXT: PL/Python function "test1n" test1n -------- 2 diff --git a/contrib/ltree_plpython/expected/ltree_plpython.out b/contrib/ltree_plpython/expected/ltree_plpython.out index 934529ee0f..c6e8a7c087 100644 --- a/contrib/ltree_plpython/expected/ltree_plpython.out +++ b/contrib/ltree_plpython/expected/ltree_plpython.out @@ -9,7 +9,6 @@ return len(val) $$; SELECT test1('aa.bb.cc'::ltree); INFO: ['aa', 'bb', 'cc'] -CONTEXT: PL/Python function "test1" test1 ------- 3 @@ -24,7 +23,6 @@ return len(val) $$; SELECT test1n('aa.bb.cc'::ltree); INFO: ['aa', 'bb', 'cc'] -CONTEXT: PL/Python function "test1n" test1n -------- 3 diff --git a/contrib/sepgsql/expected/alter.out b/contrib/sepgsql/expected/alter.out index 2b5ab3bd70..4335d298fb 100644 --- a/contrib/sepgsql/expected/alter.out +++ b/contrib/sepgsql/expected/alter.out @@ -166,15 +166,10 @@ LINE 1: ..."regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(p... ^ QUERY: SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL) LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog" -CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)" LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table" -CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)" LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column a" -CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)" LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_3" -CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)" LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_3 column x" -CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)" ALTER TABLE regtest_table ADD CONSTRAINT test_ck CHECK (b like '%abc%') NOT VALID; -- not supported ALTER TABLE regtest_table VALIDATE CONSTRAINT test_ck; -- not supported ALTER TABLE regtest_table DROP CONSTRAINT test_ck; -- not supported diff --git a/contrib/sepgsql/expected/label.out b/contrib/sepgsql/expected/label.out index fad1954b41..c84aef7cd6 100644 --- a/contrib/sepgsql/expected/label.out +++ b/contrib/sepgsql/expected/label.out @@ -136,7 +136,6 @@ SET client_min_messages = log; SELECT f1(); -- normal procedure LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_user_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="public.f1()" LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_user_t:s0 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.sepgsql_getcon()" -CONTEXT: SQL function "f1" statement 1 f1 ----------------------------------------------------- unconfined_u:unconfined_r:sepgsql_regtest_user_t:s0 @@ -147,7 +146,6 @@ LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_re LOG: SELinux: allowed { entrypoint } scontext=unconfined_u:unconfined_r:sepgsql_regtest_user_t:s0 tcontext=system_u:object_r:sepgsql_trusted_proc_exec_t:s0 tclass=db_procedure name="function f2()" LOG: SELinux: allowed { transition } scontext=unconfined_u:unconfined_r:sepgsql_regtest_user_t:s0 tcontext=unconfined_u:unconfined_r:sepgsql_trusted_proc_t:s0 tclass=process LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_trusted_proc_t:s0 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.sepgsql_getcon()" -CONTEXT: SQL function "f2" statement 1 f2 ----------------------------------------------------- unconfined_u:unconfined_r:sepgsql_trusted_proc_t:s0 diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 7940ef2713..51cec0fc7c 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -5582,6 +5582,46 @@ PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity); + + + PQsetErrorContextVisibility + + PQsetErrorContextVisibility + + + + + + Determines the handling of CONTEXT fields in messages + returned by PQerrorMessage + and PQresultErrorMessage. + +typedef enum +{ + PQSHOW_CONTEXT_NEVER, + PQSHOW_CONTEXT_ERRORS, + PQSHOW_CONTEXT_ALWAYS +} PGContextVisibility; + +PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibility show_context); + + + PQsetErrorContextVisibility sets the context display mode, + returning the connection's previous setting. This mode controls + whether the CONTEXT field is included in messages + (unless the verbosity setting is TERSE, in which + case CONTEXT is never shown). The NEVER mode + never includes CONTEXT, while ALWAYS always + includes it if available. In ERRORS mode (the + default), CONTEXT fields are included only for error + messages, not for notices and warnings. Changing this mode does not + affect the messages available from + already-existing PGresult objects, only + subsequently-created ones. + + + + PQtrace diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index f996865cd5..6d47935e0d 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -3190,6 +3190,21 @@ bar + + SHOW_CONTEXT + + + This variable can be set to the + values never, errors, or always + to control whether CONTEXT fields are displayed in + messages from the server. The default is errors (meaning + that context will be shown in error messages, but not in notice or + warning messages). This setting has no effect + when VERBOSITY is set to terse. + + + + SINGLELINE diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index a02ef631e8..8156b763e9 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -2029,6 +2029,7 @@ SyncVariables(void) /* send stuff to it, too */ PQsetErrorVerbosity(pset.db, pset.verbosity); + PQsetErrorContextVisibility(pset.db, pset.show_context); } /* diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c index d3e3114cb1..14d351f868 100644 --- a/src/bin/psql/help.c +++ b/src/bin/psql/help.c @@ -65,7 +65,11 @@ usage(unsigned short int pager) } } - output = PageOutput(59, pager ? &(pset.popt.topt) : NULL); + /* + * Keep this line count in sync with the number of lines printed below! + * Use "psql --help=options | wc" to count correctly. + */ + output = PageOutput(60, pager ? &(pset.popt.topt) : NULL); fprintf(output, _("psql is the PostgreSQL interactive terminal.\n\n")); fprintf(output, _("Usage:\n")); @@ -158,9 +162,12 @@ slashUsage(unsigned short int pager) currdb = PQdb(pset.db); - output = PageOutput(103, pager ? &(pset.popt.topt) : NULL); - - /* if you add/remove a line here, change the row count above */ + /* + * Keep this line count in sync with the number of lines printed below! + * Use "psql --help=commands | wc" to count correctly. It's okay to count + * the USE_READLINE line even in builds without that. + */ + output = PageOutput(109, pager ? &(pset.popt.topt) : NULL); fprintf(output, _("General\n")); fprintf(output, _(" \\copyright show PostgreSQL usage and distribution terms\n")); @@ -307,7 +314,13 @@ helpVariables(unsigned short int pager) { FILE *output; - output = PageOutput(85, pager ? &(pset.popt.topt) : NULL); + /* + * Keep this line count in sync with the number of lines printed below! + * Use "psql --help=variables | wc" to count correctly; but notice that + * Windows builds currently print one more line than non-Windows builds. + * Using the larger number is fine. + */ + output = PageOutput(87, pager ? &(pset.popt.topt) : NULL); fprintf(output, _("List of specially treated variables.\n")); @@ -339,6 +352,7 @@ helpVariables(unsigned short int pager) fprintf(output, _(" PROMPT2 specify the prompt used when a statement continues from a previous line\n")); fprintf(output, _(" PROMPT3 specify the prompt used during COPY ... FROM STDIN\n")); fprintf(output, _(" QUIET run quietly (same as -q option)\n")); + fprintf(output, _(" SHOW_CONTEXT control display of message context fields [never, errors, always]\n")); fprintf(output, _(" SINGLELINE end of line terminates SQL command mode (same as -S option)\n")); fprintf(output, _(" SINGLESTEP single-step mode (same as -s option)\n")); fprintf(output, _(" USER the currently connected database user\n")); diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h index d34dc28067..1885bb146e 100644 --- a/src/bin/psql/settings.h +++ b/src/bin/psql/settings.h @@ -129,6 +129,7 @@ typedef struct _psqlSettings const char *prompt2; const char *prompt3; PGVerbosity verbosity; /* current error verbosity level */ + PGContextVisibility show_context; /* current context display level */ } PsqlSettings; extern PsqlSettings pset; diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 28ba75a72e..7aa997d479 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -154,6 +154,7 @@ main(int argc, char *argv[]) /* Default values for variables */ SetVariableBool(pset.vars, "AUTOCOMMIT"); SetVariable(pset.vars, "VERBOSITY", "default"); + SetVariable(pset.vars, "SHOW_CONTEXT", "errors"); SetVariable(pset.vars, "PROMPT1", DEFAULT_PROMPT1); SetVariable(pset.vars, "PROMPT2", DEFAULT_PROMPT2); SetVariable(pset.vars, "PROMPT3", DEFAULT_PROMPT3); @@ -868,6 +869,28 @@ verbosity_hook(const char *newval) PQsetErrorVerbosity(pset.db, pset.verbosity); } +static void +show_context_hook(const char *newval) +{ + if (newval == NULL) + pset.show_context = PQSHOW_CONTEXT_ERRORS; + else if (pg_strcasecmp(newval, "never") == 0) + pset.show_context = PQSHOW_CONTEXT_NEVER; + else if (pg_strcasecmp(newval, "errors") == 0) + pset.show_context = PQSHOW_CONTEXT_ERRORS; + else if (pg_strcasecmp(newval, "always") == 0) + pset.show_context = PQSHOW_CONTEXT_ALWAYS; + else + { + psql_error("unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n", + newval, "SHOW_CONTEXT", "errors"); + pset.show_context = PQSHOW_CONTEXT_ERRORS; + } + + if (pset.db) + PQsetErrorContextVisibility(pset.db, pset.show_context); +} + static void EstablishVariableSpace(void) @@ -889,4 +912,5 @@ EstablishVariableSpace(void) SetVariableAssignHook(pset.vars, "PROMPT2", prompt2_hook); SetVariableAssignHook(pset.vars, "PROMPT3", prompt3_hook); SetVariableAssignHook(pset.vars, "VERBOSITY", verbosity_hook); + SetVariableAssignHook(pset.vars, "SHOW_CONTEXT", show_context_hook); } diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 816deda1cf..9303f6add7 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3962,6 +3962,13 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH_LIST_CS(boolean_value_list); else if (strcmp(prev_wd, "QUIET") == 0) COMPLETE_WITH_LIST_CS(boolean_value_list); + else if (strcmp(prev_wd, "SHOW_CONTEXT") == 0) + { + static const char *const my_list[] = + {"never", "errors", "always", NULL}; + + COMPLETE_WITH_LIST_CS(my_list); + } else if (strcmp(prev_wd, "SINGLELINE") == 0) COMPLETE_WITH_LIST_CS(boolean_value_list); else if (strcmp(prev_wd, "SINGLESTEP") == 0) @@ -4461,8 +4468,9 @@ complete_from_variables(const char *text, const char *prefix, const char *suffix "AUTOCOMMIT", "COMP_KEYWORD_CASE", "DBNAME", "ECHO", "ECHO_HIDDEN", "ENCODING", "FETCH_COUNT", "HISTCONTROL", "HISTFILE", "HISTSIZE", "HOST", "IGNOREEOF", "LASTOID", "ON_ERROR_ROLLBACK", "ON_ERROR_STOP", - "PORT", "PROMPT1", "PROMPT2", "PROMPT3", "QUIET", "SINGLELINE", - "SINGLESTEP", "USER", "VERBOSITY", NULL + "PORT", "PROMPT1", "PROMPT2", "PROMPT3", "QUIET", + "SHOW_CONTEXT", "SINGLELINE", "SINGLESTEP", + "USER", "VERBOSITY", NULL }; varnames = (char **) pg_malloc((maxvars + 1) * sizeof(char *)); diff --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt index 4a21bf1d2c..0bbcae51bb 100644 --- a/src/interfaces/libpq/exports.txt +++ b/src/interfaces/libpq/exports.txt @@ -169,3 +169,4 @@ PQsslInUse 166 PQsslStruct 167 PQsslAttributes 168 PQsslAttribute 169 +PQsetErrorContextVisibility 170 diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index a45f4cba34..f3030fb2c7 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -2782,6 +2782,7 @@ makeEmptyPGconn(void) conn->client_encoding = PG_SQL_ASCII; conn->std_strings = false; /* unless server says differently */ conn->verbosity = PQERRORS_DEFAULT; + conn->show_context = PQSHOW_CONTEXT_ERRORS; conn->sock = PGINVALID_SOCKET; conn->auth_req_received = false; conn->password_needed = false; @@ -5553,6 +5554,18 @@ PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity) return old; } +PGContextVisibility +PQsetErrorContextVisibility(PGconn *conn, PGContextVisibility show_context) +{ + PGContextVisibility old; + + if (!conn) + return PQSHOW_CONTEXT_ERRORS; + old = conn->show_context; + conn->show_context = show_context; + return old; +} + void PQtrace(PGconn *conn, FILE *debug_port) { diff --git a/src/interfaces/libpq/fe-protocol3.c b/src/interfaces/libpq/fe-protocol3.c index dbc0d89a4e..641804cb06 100644 --- a/src/interfaces/libpq/fe-protocol3.c +++ b/src/interfaces/libpq/fe-protocol3.c @@ -250,7 +250,7 @@ pqParseInput3(PGconn *conn) if (!conn->result) { printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("out of memory")); + libpq_gettext("out of memory")); pqSaveErrorResult(conn); } } @@ -321,7 +321,7 @@ pqParseInput3(PGconn *conn) if (!conn->result) { printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("out of memory")); + libpq_gettext("out of memory")); pqSaveErrorResult(conn); } } @@ -934,9 +934,14 @@ pqGetErrorNotice3(PGconn *conn, bool isError) val = PQresultErrorField(res, PG_DIAG_INTERNAL_QUERY); if (val) appendPQExpBuffer(&workBuf, libpq_gettext("QUERY: %s\n"), val); - val = PQresultErrorField(res, PG_DIAG_CONTEXT); - if (val) - appendPQExpBuffer(&workBuf, libpq_gettext("CONTEXT: %s\n"), val); + if (conn->show_context == PQSHOW_CONTEXT_ALWAYS || + (conn->show_context == PQSHOW_CONTEXT_ERRORS && isError)) + { + val = PQresultErrorField(res, PG_DIAG_CONTEXT); + if (val) + appendPQExpBuffer(&workBuf, libpq_gettext("CONTEXT: %s\n"), + val); + } } if (conn->verbosity == PQERRORS_VERBOSE) { diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h index a73eae2087..828c533c1a 100644 --- a/src/interfaces/libpq/libpq-fe.h +++ b/src/interfaces/libpq/libpq-fe.h @@ -110,6 +110,13 @@ typedef enum PQERRORS_VERBOSE /* all the facts, ma'am */ } PGVerbosity; +typedef enum +{ + PQSHOW_CONTEXT_NEVER, /* never show CONTEXT field */ + PQSHOW_CONTEXT_ERRORS, /* show CONTEXT for errors only (default) */ + PQSHOW_CONTEXT_ALWAYS /* always show CONTEXT field */ +} PGContextVisibility; + /* * PGPing - The ordering of this enum should not be altered because the * values are exposed externally via pg_isready. @@ -337,6 +344,10 @@ extern void PQinitOpenSSL(int do_ssl, int do_crypto); /* Set verbosity for PQerrorMessage and PQresultErrorMessage */ extern PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity); +/* Set CONTEXT visibility for PQerrorMessage and PQresultErrorMessage */ +extern PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, + PGContextVisibility show_context); + /* Enable/disable tracing */ extern void PQtrace(PGconn *conn, FILE *debug_port); extern void PQuntrace(PGconn *conn); diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h index 21759578f3..04d056e6a6 100644 --- a/src/interfaces/libpq/libpq-int.h +++ b/src/interfaces/libpq/libpq-int.h @@ -394,6 +394,7 @@ struct pg_conn int client_encoding; /* encoding id */ bool std_strings; /* standard_conforming_strings */ PGVerbosity verbosity; /* error/notice message verbosity */ + PGContextVisibility show_context; /* whether to show CONTEXT field */ PGlobjfuncs *lobjfuncs; /* private state for large-object access fns */ /* Buffer for data received from backend and not yet processed */ diff --git a/src/pl/plperl/expected/plperl.out b/src/pl/plperl/expected/plperl.out index d23a3020a3..14df5f42df 100644 --- a/src/pl/plperl/expected/plperl.out +++ b/src/pl/plperl/expected/plperl.out @@ -614,7 +614,6 @@ DO $$ elog(NOTICE, $a); $$ LANGUAGE plperl; NOTICE: This is a test -CONTEXT: PL/Perl anonymous code block -- check that restricted operations are rejected in a plperl DO block DO $$ system("/nonesuch"); $$ LANGUAGE plperl; ERROR: 'system' trapped by operation mask at line 1. @@ -628,7 +627,6 @@ CONTEXT: PL/Perl anonymous code block -- check that eval is allowed and eval'd restricted ops are caught DO $$ eval q{chdir '.';}; warn "Caught: $@"; $$ LANGUAGE plperl; WARNING: Caught: 'chdir' trapped by operation mask at line 1. -CONTEXT: PL/Perl anonymous code block -- check that compiling do (dofile opcode) is allowed -- but that executing it for a file not already loaded (via require) dies DO $$ warn do "/dev/null"; $$ LANGUAGE plperl; diff --git a/src/pl/plperl/expected/plperl_elog.out b/src/pl/plperl/expected/plperl_elog.out index c447fa22cb..3f9449a965 100644 --- a/src/pl/plperl/expected/plperl_elog.out +++ b/src/pl/plperl/expected/plperl_elog.out @@ -7,7 +7,6 @@ create or replace function perl_elog(text) returns void language plperl as $$ $$; select perl_elog('explicit elog'); NOTICE: explicit elog -CONTEXT: PL/Perl function "perl_elog" perl_elog ----------- @@ -21,7 +20,6 @@ create or replace function perl_warn(text) returns void language plperl as $$ $$; select perl_warn('implicit elog via warn'); WARNING: implicit elog via warn at line 4. -CONTEXT: PL/Perl function "perl_warn" perl_warn ----------- @@ -61,7 +59,6 @@ select uses_global(); -- make sure we don't choke on readonly values do language plperl $$ elog(NOTICE, ${^TAINT}); $$; NOTICE: 0 -CONTEXT: PL/Perl anonymous code block -- test recovery after "die" create or replace function just_die() returns void language plperl AS $$ die "just die"; @@ -94,11 +91,7 @@ return $a + $b; $$; select indirect_die_caller(); NOTICE: caught die -CONTEXT: SQL statement "SELECT die_caller() AS fx" -PL/Perl function "indirect_die_caller" NOTICE: caught die -CONTEXT: SQL statement "SELECT die_caller() AS fx" -PL/Perl function "indirect_die_caller" indirect_die_caller --------------------- 2 diff --git a/src/pl/plperl/expected/plperl_elog_1.out b/src/pl/plperl/expected/plperl_elog_1.out index 0932fde266..34d5d5836d 100644 --- a/src/pl/plperl/expected/plperl_elog_1.out +++ b/src/pl/plperl/expected/plperl_elog_1.out @@ -7,7 +7,6 @@ create or replace function perl_elog(text) returns void language plperl as $$ $$; select perl_elog('explicit elog'); NOTICE: explicit elog -CONTEXT: PL/Perl function "perl_elog" perl_elog ----------- @@ -21,7 +20,6 @@ create or replace function perl_warn(text) returns void language plperl as $$ $$; select perl_warn('implicit elog via warn'); WARNING: implicit elog via warn at line 4. -CONTEXT: PL/Perl function "perl_warn" perl_warn ----------- @@ -61,7 +59,6 @@ select uses_global(); -- make sure we don't choke on readonly values do language plperl $$ elog(NOTICE, ${^TAINT}); $$; NOTICE: 0 -CONTEXT: PL/Perl anonymous code block -- test recovery after "die" create or replace function just_die() returns void language plperl AS $$ die "just die"; @@ -94,11 +91,7 @@ return $a + $b; $$; select indirect_die_caller(); NOTICE: caught die -CONTEXT: SQL statement "SELECT die_caller() AS fx" -PL/Perl function "indirect_die_caller" NOTICE: caught die -CONTEXT: SQL statement "SELECT die_caller() AS fx" -PL/Perl function "indirect_die_caller" indirect_die_caller --------------------- 2 diff --git a/src/pl/plperl/expected/plperl_trigger.out b/src/pl/plperl/expected/plperl_trigger.out index 36ecb92095..5e3860ef97 100644 --- a/src/pl/plperl/expected/plperl_trigger.out +++ b/src/pl/plperl/expected/plperl_trigger.out @@ -62,75 +62,41 @@ BEFORE INSERT OR UPDATE OR DELETE ON trigger_test FOR EACH ROW EXECUTE PROCEDURE trigger_data(23,'skidoo'); insert into trigger_test values(1,'insert', '("(1)")'); NOTICE: $_TD->{argc} = '2' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{args} = ['23', 'skidoo'] -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{event} = 'INSERT' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{level} = 'ROW' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{name} = 'show_trigger_data_trig' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{new} = {'foo' => {'rfoo' => {'i' => '1'}}, 'i' => '1', 'v' => 'insert'} -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relid} = 'bogus:12345' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relname} = 'trigger_test' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_name} = 'trigger_test' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_schema} = 'public' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{when} = 'BEFORE' -CONTEXT: PL/Perl function "trigger_data" update trigger_test set v = 'update' where i = 1; NOTICE: $_TD->{argc} = '2' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{args} = ['23', 'skidoo'] -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{event} = 'UPDATE' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{level} = 'ROW' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{name} = 'show_trigger_data_trig' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{new} = {'foo' => {'rfoo' => {'i' => '1'}}, 'i' => '1', 'v' => 'update'} -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{old} = {'foo' => {'rfoo' => {'i' => '1'}}, 'i' => '1', 'v' => 'insert'} -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relid} = 'bogus:12345' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relname} = 'trigger_test' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_name} = 'trigger_test' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_schema} = 'public' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{when} = 'BEFORE' -CONTEXT: PL/Perl function "trigger_data" delete from trigger_test; NOTICE: $_TD->{argc} = '2' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{args} = ['23', 'skidoo'] -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{event} = 'DELETE' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{level} = 'ROW' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{name} = 'show_trigger_data_trig' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{old} = {'foo' => {'rfoo' => {'i' => '1'}}, 'i' => '1', 'v' => 'update'} -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relid} = 'bogus:12345' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relname} = 'trigger_test' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_name} = 'trigger_test' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_schema} = 'public' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{when} = 'BEFORE' -CONTEXT: PL/Perl function "trigger_data" DROP TRIGGER show_trigger_data_trig on trigger_test; insert into trigger_test values(1,'insert', '("(1)")'); CREATE VIEW trigger_test_view AS SELECT * FROM trigger_test; @@ -139,75 +105,41 @@ INSTEAD OF INSERT OR UPDATE OR DELETE ON trigger_test_view FOR EACH ROW EXECUTE PROCEDURE trigger_data(24,'skidoo view'); insert into trigger_test_view values(2,'insert', '("(2)")'); NOTICE: $_TD->{argc} = '2' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{args} = ['24', 'skidoo view'] -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{event} = 'INSERT' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{level} = 'ROW' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{name} = 'show_trigger_data_trig' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{new} = {'foo' => {'rfoo' => {'i' => '2'}}, 'i' => '2', 'v' => 'insert'} -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relid} = 'bogus:12345' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relname} = 'trigger_test_view' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_name} = 'trigger_test_view' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_schema} = 'public' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{when} = 'INSTEAD OF' -CONTEXT: PL/Perl function "trigger_data" update trigger_test_view set v = 'update', foo = '("(3)")' where i = 1; NOTICE: $_TD->{argc} = '2' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{args} = ['24', 'skidoo view'] -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{event} = 'UPDATE' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{level} = 'ROW' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{name} = 'show_trigger_data_trig' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{new} = {'foo' => {'rfoo' => {'i' => '3'}}, 'i' => '1', 'v' => 'update'} -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{old} = {'foo' => {'rfoo' => {'i' => '1'}}, 'i' => '1', 'v' => 'insert'} -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relid} = 'bogus:12345' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relname} = 'trigger_test_view' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_name} = 'trigger_test_view' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_schema} = 'public' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{when} = 'INSTEAD OF' -CONTEXT: PL/Perl function "trigger_data" delete from trigger_test_view; NOTICE: $_TD->{argc} = '2' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{args} = ['24', 'skidoo view'] -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{event} = 'DELETE' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{level} = 'ROW' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{name} = 'show_trigger_data_trig' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{old} = {'foo' => {'rfoo' => {'i' => '1'}}, 'i' => '1', 'v' => 'insert'} -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relid} = 'bogus:12345' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{relname} = 'trigger_test_view' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_name} = 'trigger_test_view' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{table_schema} = 'public' -CONTEXT: PL/Perl function "trigger_data" NOTICE: $_TD->{when} = 'INSTEAD OF' -CONTEXT: PL/Perl function "trigger_data" DROP VIEW trigger_test_view; delete from trigger_test; DROP FUNCTION trigger_data(); @@ -319,28 +251,18 @@ create event trigger perl_b_snitch on ddl_command_end execute procedure perlsnitch(); create or replace function foobar() returns int language sql as $$select 1;$$; NOTICE: perlsnitch: ddl_command_start CREATE FUNCTION -CONTEXT: PL/Perl function "perlsnitch" NOTICE: perlsnitch: ddl_command_end CREATE FUNCTION -CONTEXT: PL/Perl function "perlsnitch" alter function foobar() cost 77; NOTICE: perlsnitch: ddl_command_start ALTER FUNCTION -CONTEXT: PL/Perl function "perlsnitch" NOTICE: perlsnitch: ddl_command_end ALTER FUNCTION -CONTEXT: PL/Perl function "perlsnitch" drop function foobar(); NOTICE: perlsnitch: ddl_command_start DROP FUNCTION -CONTEXT: PL/Perl function "perlsnitch" NOTICE: perlsnitch: ddl_command_end DROP FUNCTION -CONTEXT: PL/Perl function "perlsnitch" create table foo(); NOTICE: perlsnitch: ddl_command_start CREATE TABLE -CONTEXT: PL/Perl function "perlsnitch" NOTICE: perlsnitch: ddl_command_end CREATE TABLE -CONTEXT: PL/Perl function "perlsnitch" drop table foo; NOTICE: perlsnitch: ddl_command_start DROP TABLE -CONTEXT: PL/Perl function "perlsnitch" NOTICE: perlsnitch: ddl_command_end DROP TABLE -CONTEXT: PL/Perl function "perlsnitch" drop event trigger perl_a_snitch; drop event trigger perl_b_snitch; diff --git a/src/pl/plperl/expected/plperlu.out b/src/pl/plperl/expected/plperlu.out index 3daf4ced86..a3edb38497 100644 --- a/src/pl/plperl/expected/plperlu.out +++ b/src/pl/plperl/expected/plperlu.out @@ -6,7 +6,6 @@ LOAD 'plperl'; SET plperl.on_plperlu_init = '$_SHARED{init} = 42'; DO $$ warn $_SHARED{init} $$ language plperlu; WARNING: 42 at line 1. -CONTEXT: PL/Perl anonymous code block -- -- Test compilation of unicode regex - regardless of locale. -- This code fails in plain plperl in a non-UTF8 database. diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 935fa62851..2d19e9ac6a 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -42,8 +42,6 @@ #include "utils/typcache.h" -static const char *const raise_skip_msg = "RAISE"; - typedef struct { int nargs; /* number of arguments */ @@ -933,10 +931,6 @@ plpgsql_exec_error_callback(void *arg) { PLpgSQL_execstate *estate = (PLpgSQL_execstate *) arg; - /* if we are doing RAISE, don't report its location */ - if (estate->err_text == raise_skip_msg) - return; - if (estate->err_text != NULL) { /* @@ -3152,8 +3146,6 @@ exec_stmt_raise(PLpgSQL_execstate *estate, PLpgSQL_stmt_raise *stmt) /* * Throw the error (may or may not come back) */ - estate->err_text = raise_skip_msg; /* suppress traceback of raise */ - ereport(stmt->elog_level, (err_code ? errcode(err_code) : 0, errmsg_internal("%s", err_message), @@ -3170,8 +3162,6 @@ exec_stmt_raise(PLpgSQL_execstate *estate, PLpgSQL_stmt_raise *stmt) (err_schema != NULL) ? err_generic_string(PG_DIAG_SCHEMA_NAME, err_schema) : 0)); - estate->err_text = NULL; /* un-suppress... */ - if (condname != NULL) pfree(condname); if (err_message != NULL) diff --git a/src/pl/plpython/expected/plpython_do.out b/src/pl/plpython/expected/plpython_do.out index 0977812084..e300530e03 100644 --- a/src/pl/plpython/expected/plpython_do.out +++ b/src/pl/plpython/expected/plpython_do.out @@ -1,9 +1,7 @@ DO $$ plpy.notice("This is plpythonu.") $$ LANGUAGE plpythonu; NOTICE: This is plpythonu. -CONTEXT: PL/Python anonymous code block DO $$ plpy.notice("This is plpython2u.") $$ LANGUAGE plpython2u; NOTICE: This is plpython2u. -CONTEXT: PL/Python anonymous code block DO $$ raise Exception("error test") $$ LANGUAGE plpythonu; ERROR: Exception: error test CONTEXT: Traceback (most recent call last): diff --git a/src/pl/plpython/expected/plpython_error.out b/src/pl/plpython/expected/plpython_error.out index be2ec9708a..1f52af7fe0 100644 --- a/src/pl/plpython/expected/plpython_error.out +++ b/src/pl/plpython/expected/plpython_error.out @@ -108,7 +108,6 @@ return None LANGUAGE plpythonu; SELECT invalid_type_caught('rick'); NOTICE: type "test" does not exist -CONTEXT: PL/Python function "invalid_type_caught" invalid_type_caught --------------------- @@ -232,7 +231,6 @@ return "you''ve been warned" LANGUAGE plpythonu; SELECT nested_warning(); WARNING: boom -CONTEXT: PL/Python function "nested_warning" nested_warning -------------------- you've been warned @@ -336,7 +334,6 @@ SELECT specific_exception(2); SELECT specific_exception(NULL); NOTICE: Violated the NOT NULL constraint, sqlstate 23502 -CONTEXT: PL/Python function "specific_exception" specific_exception -------------------- @@ -344,7 +341,6 @@ CONTEXT: PL/Python function "specific_exception" SELECT specific_exception(2); NOTICE: Violated the UNIQUE constraint, sqlstate 23505 -CONTEXT: PL/Python function "specific_exception" specific_exception -------------------- diff --git a/src/pl/plpython/expected/plpython_error_0.out b/src/pl/plpython/expected/plpython_error_0.out index 39c63c547a..5323906122 100644 --- a/src/pl/plpython/expected/plpython_error_0.out +++ b/src/pl/plpython/expected/plpython_error_0.out @@ -108,7 +108,6 @@ return None LANGUAGE plpythonu; SELECT invalid_type_caught('rick'); NOTICE: type "test" does not exist -CONTEXT: PL/Python function "invalid_type_caught" invalid_type_caught --------------------- @@ -232,7 +231,6 @@ return "you''ve been warned" LANGUAGE plpythonu; SELECT nested_warning(); WARNING: boom -CONTEXT: PL/Python function "nested_warning" nested_warning -------------------- you've been warned @@ -336,7 +334,6 @@ SELECT specific_exception(2); SELECT specific_exception(NULL); NOTICE: Violated the NOT NULL constraint, sqlstate 23502 -CONTEXT: PL/Python function "specific_exception" specific_exception -------------------- @@ -344,7 +341,6 @@ CONTEXT: PL/Python function "specific_exception" SELECT specific_exception(2); NOTICE: Violated the UNIQUE constraint, sqlstate 23505 -CONTEXT: PL/Python function "specific_exception" specific_exception -------------------- diff --git a/src/pl/plpython/expected/plpython_error_5.out b/src/pl/plpython/expected/plpython_error_5.out index fcd944cfa2..5ff46ca50a 100644 --- a/src/pl/plpython/expected/plpython_error_5.out +++ b/src/pl/plpython/expected/plpython_error_5.out @@ -108,7 +108,6 @@ return None LANGUAGE plpython3u; SELECT invalid_type_caught('rick'); NOTICE: type "test" does not exist -CONTEXT: PL/Python function "invalid_type_caught" invalid_type_caught --------------------- @@ -232,7 +231,6 @@ return "you''ve been warned" LANGUAGE plpython3u; SELECT nested_warning(); WARNING: boom -CONTEXT: PL/Python function "nested_warning" nested_warning -------------------- you've been warned @@ -336,7 +334,6 @@ SELECT specific_exception(2); SELECT specific_exception(NULL); NOTICE: Violated the NOT NULL constraint, sqlstate 23502 -CONTEXT: PL/Python function "specific_exception" specific_exception -------------------- @@ -344,7 +341,6 @@ CONTEXT: PL/Python function "specific_exception" SELECT specific_exception(2); NOTICE: Violated the UNIQUE constraint, sqlstate 23505 -CONTEXT: PL/Python function "specific_exception" specific_exception -------------------- diff --git a/src/pl/plpython/expected/plpython_spi.out b/src/pl/plpython/expected/plpython_spi.out index e2861dfa72..e715ee5393 100644 --- a/src/pl/plpython/expected/plpython_spi.out +++ b/src/pl/plpython/expected/plpython_spi.out @@ -130,13 +130,9 @@ else: $$ LANGUAGE plpythonu; SELECT result_metadata_test($$SELECT 1 AS foo, '11'::text AS bar UNION SELECT 2, '22'$$); INFO: True -CONTEXT: PL/Python function "result_metadata_test" INFO: ['foo', 'bar'] -CONTEXT: PL/Python function "result_metadata_test" INFO: [23, 25] -CONTEXT: PL/Python function "result_metadata_test" INFO: [-1, -1] -CONTEXT: PL/Python function "result_metadata_test" result_metadata_test ---------------------- 2 @@ -144,7 +140,6 @@ CONTEXT: PL/Python function "result_metadata_test" SELECT result_metadata_test($$CREATE TEMPORARY TABLE foo1 (a int, b text)$$); INFO: True -CONTEXT: PL/Python function "result_metadata_test" ERROR: plpy.Error: command did not produce a result set CONTEXT: Traceback (most recent call last): PL/Python function "result_metadata_test", line 6, in @@ -234,15 +229,10 @@ else: $$ LANGUAGE plpythonu; SELECT result_subscript_test(); INFO: 2 -CONTEXT: PL/Python function "result_subscript_test" INFO: 4 -CONTEXT: PL/Python function "result_subscript_test" INFO: [2, 3] -CONTEXT: PL/Python function "result_subscript_test" INFO: [1, 3] -CONTEXT: PL/Python function "result_subscript_test" INFO: [10, 100, 3, 1000] -CONTEXT: PL/Python function "result_subscript_test" result_subscript_test ----------------------- @@ -257,7 +247,6 @@ plpy.info(result[:]) $$ LANGUAGE plpythonu; SELECT result_empty_test(); INFO: [] -CONTEXT: PL/Python function "result_empty_test" result_empty_test ------------------- diff --git a/src/pl/plpython/expected/plpython_subtransaction.out b/src/pl/plpython/expected/plpython_subtransaction.out index c7bf6ccd42..da3b312a06 100644 --- a/src/pl/plpython/expected/plpython_subtransaction.out +++ b/src/pl/plpython/expected/plpython_subtransaction.out @@ -154,7 +154,6 @@ SELECT * FROM subtransaction_tbl; TRUNCATE subtransaction_tbl; SELECT subtransaction_nested_test('t'); NOTICE: Swallowed SyntaxError('syntax error at or near "error"',) -CONTEXT: PL/Python function "subtransaction_nested_test" subtransaction_nested_test ---------------------------- ok @@ -180,9 +179,6 @@ return "ok" $$ LANGUAGE plpythonu; SELECT subtransaction_deeply_nested_test(); NOTICE: Swallowed SyntaxError('syntax error at or near "error"',) -CONTEXT: PL/Python function "subtransaction_nested_test" -SQL statement "SELECT subtransaction_nested_test('t')" -PL/Python function "subtransaction_nested_test" subtransaction_deeply_nested_test ----------------------------------- ok @@ -251,7 +247,6 @@ CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_without_enter" SELECT subtransaction_enter_without_exit(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_without_exit" subtransaction_enter_without_exit ----------------------------------- @@ -259,7 +254,6 @@ CONTEXT: PL/Python function "subtransaction_enter_without_exit" SELECT subtransaction_exit_twice(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_exit_twice" ERROR: ValueError: this subtransaction has not been entered CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_twice", line 3, in @@ -267,9 +261,7 @@ CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_twice" SELECT subtransaction_enter_twice(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_twice" WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_twice" subtransaction_enter_twice ---------------------------- @@ -283,7 +275,6 @@ CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_same_subtransaction_twice" SELECT subtransaction_enter_same_subtransaction_twice(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_same_subtransaction_twice" ERROR: ValueError: this subtransaction has already been entered CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_enter_same_subtransaction_twice", line 4, in @@ -329,9 +320,7 @@ except plpy.SPIError: $$ LANGUAGE plpythonu; SELECT subtransaction_mix_explicit_and_implicit(); WARNING: Caught a SPI error from an explicit subtransaction -CONTEXT: PL/Python function "subtransaction_mix_explicit_and_implicit" WARNING: Caught a SPI error -CONTEXT: PL/Python function "subtransaction_mix_explicit_and_implicit" subtransaction_mix_explicit_and_implicit ------------------------------------------ @@ -370,7 +359,6 @@ with plpy.subtransaction(): $$ LANGUAGE plpythonu; SELECT try_catch_inside_subtransaction(); NOTICE: caught -CONTEXT: PL/Python function "try_catch_inside_subtransaction" try_catch_inside_subtransaction --------------------------------- @@ -395,7 +383,6 @@ with plpy.subtransaction(): $$ LANGUAGE plpythonu; SELECT pk_violation_inside_subtransaction(); NOTICE: caught -CONTEXT: PL/Python function "pk_violation_inside_subtransaction" pk_violation_inside_subtransaction ------------------------------------ diff --git a/src/pl/plpython/expected/plpython_subtransaction_0.out b/src/pl/plpython/expected/plpython_subtransaction_0.out index 73bd7242bd..e6cc38a033 100644 --- a/src/pl/plpython/expected/plpython_subtransaction_0.out +++ b/src/pl/plpython/expected/plpython_subtransaction_0.out @@ -235,7 +235,6 @@ CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_without_enter" SELECT subtransaction_enter_without_exit(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_without_exit" subtransaction_enter_without_exit ----------------------------------- @@ -243,7 +242,6 @@ CONTEXT: PL/Python function "subtransaction_enter_without_exit" SELECT subtransaction_exit_twice(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_exit_twice" ERROR: ValueError: this subtransaction has not been entered CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_twice", line 3, in @@ -251,9 +249,7 @@ CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_twice" SELECT subtransaction_enter_twice(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_twice" WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_twice" subtransaction_enter_twice ---------------------------- @@ -267,7 +263,6 @@ CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_same_subtransaction_twice" SELECT subtransaction_enter_same_subtransaction_twice(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_same_subtransaction_twice" ERROR: ValueError: this subtransaction has already been entered CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_enter_same_subtransaction_twice", line 4, in diff --git a/src/pl/plpython/expected/plpython_subtransaction_5.out b/src/pl/plpython/expected/plpython_subtransaction_5.out index d1776200d2..6fbafa3166 100644 --- a/src/pl/plpython/expected/plpython_subtransaction_5.out +++ b/src/pl/plpython/expected/plpython_subtransaction_5.out @@ -235,7 +235,6 @@ CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_without_enter" SELECT subtransaction_enter_without_exit(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_without_exit" subtransaction_enter_without_exit ----------------------------------- @@ -243,7 +242,6 @@ CONTEXT: PL/Python function "subtransaction_enter_without_exit" SELECT subtransaction_exit_twice(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_exit_twice" ERROR: ValueError: this subtransaction has not been entered CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_twice", line 3, in @@ -251,9 +249,7 @@ CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_twice" SELECT subtransaction_enter_twice(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_twice" WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_twice" subtransaction_enter_twice ---------------------------- @@ -267,7 +263,6 @@ CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_exit_same_subtransaction_twice" SELECT subtransaction_enter_same_subtransaction_twice(); WARNING: forcibly aborting a subtransaction that has not been exited -CONTEXT: PL/Python function "subtransaction_enter_same_subtransaction_twice" ERROR: ValueError: this subtransaction has already been entered CONTEXT: Traceback (most recent call last): PL/Python function "subtransaction_enter_same_subtransaction_twice", line 4, in diff --git a/src/pl/plpython/expected/plpython_test.out b/src/pl/plpython/expected/plpython_test.out index a884fc0e27..7b76faf4ee 100644 --- a/src/pl/plpython/expected/plpython_test.out +++ b/src/pl/plpython/expected/plpython_test.out @@ -62,17 +62,11 @@ plpy.error('error') $$ LANGUAGE plpythonu; SELECT elog_test(); INFO: info -CONTEXT: PL/Python function "elog_test" INFO: 37 -CONTEXT: PL/Python function "elog_test" INFO: () -CONTEXT: PL/Python function "elog_test" INFO: ('info', 37, [1, 2, 3]) -CONTEXT: PL/Python function "elog_test" NOTICE: notice -CONTEXT: PL/Python function "elog_test" WARNING: warning -CONTEXT: PL/Python function "elog_test" ERROR: plpy.Error: error CONTEXT: Traceback (most recent call last): PL/Python function "elog_test", line 10, in diff --git a/src/pl/plpython/expected/plpython_trigger.out b/src/pl/plpython/expected/plpython_trigger.out index 80e478b3f2..4148963f3a 100644 --- a/src/pl/plpython/expected/plpython_trigger.out +++ b/src/pl/plpython/expected/plpython_trigger.out @@ -98,208 +98,108 @@ BEFORE INSERT OR UPDATE OR DELETE OR TRUNCATE ON trigger_test FOR EACH STATEMENT EXECUTE PROCEDURE trigger_data(23,'skidoo'); insert into trigger_test values(1,'insert'); NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => INSERT -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => STATEMENT -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_stmt -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => BEFORE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => INSERT -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => ROW -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_before -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => {'i': 1, 'v': 'insert'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => BEFORE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => INSERT -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => ROW -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_after -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => {'i': 1, 'v': 'insert'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => AFTER -CONTEXT: PL/Python function "trigger_data" update trigger_test set v = 'update' where i = 1; NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => UPDATE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => STATEMENT -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_stmt -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => BEFORE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => UPDATE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => ROW -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_before -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => {'i': 1, 'v': 'update'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => {'i': 1, 'v': 'insert'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => BEFORE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => UPDATE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => ROW -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_after -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => {'i': 1, 'v': 'update'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => {'i': 1, 'v': 'insert'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => AFTER -CONTEXT: PL/Python function "trigger_data" delete from trigger_test; NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => DELETE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => STATEMENT -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_stmt -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => BEFORE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => DELETE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => ROW -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_before -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => {'i': 1, 'v': 'update'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => BEFORE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => DELETE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => ROW -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_after -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => {'i': 1, 'v': 'update'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => AFTER -CONTEXT: PL/Python function "trigger_data" truncate table trigger_test; NOTICE: TD[args] => ['23', 'skidoo'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => TRUNCATE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => STATEMENT -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig_stmt -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => BEFORE -CONTEXT: PL/Python function "trigger_data" DROP TRIGGER show_trigger_data_trig_stmt on trigger_test; DROP TRIGGER show_trigger_data_trig_before on trigger_test; DROP TRIGGER show_trigger_data_trig_after on trigger_test; @@ -310,67 +210,37 @@ INSTEAD OF INSERT OR UPDATE OR DELETE ON trigger_test_view FOR EACH ROW EXECUTE PROCEDURE trigger_data(24,'skidoo view'); insert into trigger_test_view values(2,'insert'); NOTICE: TD[args] => ['24', 'skidoo view'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => INSERT -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => ROW -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => {'i': 2, 'v': 'insert'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test_view -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => INSTEAD OF -CONTEXT: PL/Python function "trigger_data" update trigger_test_view set v = 'update' where i = 1; NOTICE: TD[args] => ['24', 'skidoo view'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => UPDATE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => ROW -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => {'i': 1, 'v': 'update'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => {'i': 1, 'v': 'insert'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test_view -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => INSTEAD OF -CONTEXT: PL/Python function "trigger_data" delete from trigger_test_view; NOTICE: TD[args] => ['24', 'skidoo view'] -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[event] => DELETE -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[level] => ROW -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[name] => show_trigger_data_trig -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[new] => None -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[old] => {'i': 1, 'v': 'insert'} -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[relid] => bogus:12345 -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_name] => trigger_test_view -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[table_schema] => public -CONTEXT: PL/Python function "trigger_data" NOTICE: TD[when] => INSTEAD OF -CONTEXT: PL/Python function "trigger_data" DROP FUNCTION trigger_data() CASCADE; NOTICE: drop cascades to trigger show_trigger_data_trig on view trigger_test_view DROP VIEW trigger_test_view; @@ -402,7 +272,6 @@ BEFORE DELETE ON trigger_test FOR EACH ROW EXECUTE PROCEDURE stupid2(); DELETE FROM trigger_test WHERE i = 0; WARNING: PL/Python trigger function returned "MODIFY" in a DELETE trigger -- ignored -CONTEXT: PL/Python function "stupid2" DROP TRIGGER stupid_trigger2 ON trigger_test; INSERT INTO trigger_test VALUES (0, 'zero'); -- returning unrecognized string from trigger function diff --git a/src/pl/plpython/expected/plpython_types.out b/src/pl/plpython/expected/plpython_types.out index 17057a543d..f0b6abd274 100644 --- a/src/pl/plpython/expected/plpython_types.out +++ b/src/pl/plpython/expected/plpython_types.out @@ -10,7 +10,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_bool(true); INFO: (True, ) -CONTEXT: PL/Python function "test_type_conversion_bool" test_type_conversion_bool --------------------------- t @@ -18,7 +17,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool" SELECT * FROM test_type_conversion_bool(false); INFO: (False, ) -CONTEXT: PL/Python function "test_type_conversion_bool" test_type_conversion_bool --------------------------- f @@ -26,7 +24,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool" SELECT * FROM test_type_conversion_bool(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_bool" test_type_conversion_bool --------------------------- @@ -54,7 +51,6 @@ return ret $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_bool_other(0); INFO: (0, False) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- f @@ -62,7 +58,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(1); INFO: (5, True) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- t @@ -70,7 +65,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(2); INFO: ('', False) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- f @@ -78,7 +72,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(3); INFO: ('fa', True) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- t @@ -86,7 +79,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(4); INFO: ([], False) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- f @@ -94,7 +86,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(5); INFO: ([0], True) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- t @@ -106,7 +97,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_char('a'); INFO: ('a', ) -CONTEXT: PL/Python function "test_type_conversion_char" test_type_conversion_char --------------------------- a @@ -114,7 +104,6 @@ CONTEXT: PL/Python function "test_type_conversion_char" SELECT * FROM test_type_conversion_char(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_char" test_type_conversion_char --------------------------- @@ -126,7 +115,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_int2(100::int2); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_int2" test_type_conversion_int2 --------------------------- 100 @@ -134,7 +122,6 @@ CONTEXT: PL/Python function "test_type_conversion_int2" SELECT * FROM test_type_conversion_int2(-100::int2); INFO: (-100, ) -CONTEXT: PL/Python function "test_type_conversion_int2" test_type_conversion_int2 --------------------------- -100 @@ -142,7 +129,6 @@ CONTEXT: PL/Python function "test_type_conversion_int2" SELECT * FROM test_type_conversion_int2(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_int2" test_type_conversion_int2 --------------------------- @@ -154,7 +140,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_int4(100); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_int4" test_type_conversion_int4 --------------------------- 100 @@ -162,7 +147,6 @@ CONTEXT: PL/Python function "test_type_conversion_int4" SELECT * FROM test_type_conversion_int4(-100); INFO: (-100, ) -CONTEXT: PL/Python function "test_type_conversion_int4" test_type_conversion_int4 --------------------------- -100 @@ -170,7 +154,6 @@ CONTEXT: PL/Python function "test_type_conversion_int4" SELECT * FROM test_type_conversion_int4(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_int4" test_type_conversion_int4 --------------------------- @@ -182,7 +165,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_int8(100); INFO: (100L, ) -CONTEXT: PL/Python function "test_type_conversion_int8" test_type_conversion_int8 --------------------------- 100 @@ -190,7 +172,6 @@ CONTEXT: PL/Python function "test_type_conversion_int8" SELECT * FROM test_type_conversion_int8(-100); INFO: (-100L, ) -CONTEXT: PL/Python function "test_type_conversion_int8" test_type_conversion_int8 --------------------------- -100 @@ -198,7 +179,6 @@ CONTEXT: PL/Python function "test_type_conversion_int8" SELECT * FROM test_type_conversion_int8(5000000000); INFO: (5000000000L, ) -CONTEXT: PL/Python function "test_type_conversion_int8" test_type_conversion_int8 --------------------------- 5000000000 @@ -206,7 +186,6 @@ CONTEXT: PL/Python function "test_type_conversion_int8" SELECT * FROM test_type_conversion_int8(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_int8" test_type_conversion_int8 --------------------------- @@ -220,7 +199,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_numeric(100); INFO: ('100', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 100 @@ -228,7 +206,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(-100); INFO: ('-100', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ -100 @@ -236,7 +213,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(100.0); INFO: ('100.0', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 100.0 @@ -244,7 +220,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(100.00); INFO: ('100.00', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 100.00 @@ -252,7 +227,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(5000000000.5); INFO: ('5000000000.5', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 5000000000.5 @@ -260,7 +234,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(1234567890.0987654321); INFO: ('1234567890.0987654321', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 1234567890.0987654321 @@ -268,7 +241,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(-1234567890.0987654321); INFO: ('-1234567890.0987654321', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ -1234567890.0987654321 @@ -276,7 +248,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(null); INFO: ('None', 'NoneType') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ @@ -288,7 +259,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_float4(100); INFO: (100.0, ) -CONTEXT: PL/Python function "test_type_conversion_float4" test_type_conversion_float4 ----------------------------- 100 @@ -296,7 +266,6 @@ CONTEXT: PL/Python function "test_type_conversion_float4" SELECT * FROM test_type_conversion_float4(-100); INFO: (-100.0, ) -CONTEXT: PL/Python function "test_type_conversion_float4" test_type_conversion_float4 ----------------------------- -100 @@ -304,7 +273,6 @@ CONTEXT: PL/Python function "test_type_conversion_float4" SELECT * FROM test_type_conversion_float4(5000.5); INFO: (5000.5, ) -CONTEXT: PL/Python function "test_type_conversion_float4" test_type_conversion_float4 ----------------------------- 5000.5 @@ -312,7 +280,6 @@ CONTEXT: PL/Python function "test_type_conversion_float4" SELECT * FROM test_type_conversion_float4(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_float4" test_type_conversion_float4 ----------------------------- @@ -324,7 +291,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_float8(100); INFO: (100.0, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- 100 @@ -332,7 +298,6 @@ CONTEXT: PL/Python function "test_type_conversion_float8" SELECT * FROM test_type_conversion_float8(-100); INFO: (-100.0, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- -100 @@ -340,7 +305,6 @@ CONTEXT: PL/Python function "test_type_conversion_float8" SELECT * FROM test_type_conversion_float8(5000000000.5); INFO: (5000000000.5, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- 5000000000.5 @@ -348,7 +312,6 @@ CONTEXT: PL/Python function "test_type_conversion_float8" SELECT * FROM test_type_conversion_float8(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- @@ -356,7 +319,6 @@ CONTEXT: PL/Python function "test_type_conversion_float8" SELECT * FROM test_type_conversion_float8(100100100.654321); INFO: (100100100.654321, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- 100100100.654321 @@ -368,7 +330,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_oid(100); INFO: (100L, ) -CONTEXT: PL/Python function "test_type_conversion_oid" test_type_conversion_oid -------------------------- 100 @@ -376,7 +337,6 @@ CONTEXT: PL/Python function "test_type_conversion_oid" SELECT * FROM test_type_conversion_oid(2147483649); INFO: (2147483649L, ) -CONTEXT: PL/Python function "test_type_conversion_oid" test_type_conversion_oid -------------------------- 2147483649 @@ -384,7 +344,6 @@ CONTEXT: PL/Python function "test_type_conversion_oid" SELECT * FROM test_type_conversion_oid(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_oid" test_type_conversion_oid -------------------------- @@ -396,7 +355,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_text('hello world'); INFO: ('hello world', ) -CONTEXT: PL/Python function "test_type_conversion_text" test_type_conversion_text --------------------------- hello world @@ -404,7 +362,6 @@ CONTEXT: PL/Python function "test_type_conversion_text" SELECT * FROM test_type_conversion_text(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_text" test_type_conversion_text --------------------------- @@ -416,7 +373,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_bytea('hello world'); INFO: ('hello world', ) -CONTEXT: PL/Python function "test_type_conversion_bytea" test_type_conversion_bytea ---------------------------- \x68656c6c6f20776f726c64 @@ -424,7 +380,6 @@ CONTEXT: PL/Python function "test_type_conversion_bytea" SELECT * FROM test_type_conversion_bytea(E'null\\000byte'); INFO: ('null\x00byte', ) -CONTEXT: PL/Python function "test_type_conversion_bytea" test_type_conversion_bytea ---------------------------- \x6e756c6c0062797465 @@ -432,7 +387,6 @@ CONTEXT: PL/Python function "test_type_conversion_bytea" SELECT * FROM test_type_conversion_bytea(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_bytea" test_type_conversion_bytea ---------------------------- @@ -481,7 +435,6 @@ return y $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_uint2(100::uint2, 50); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_uint2" test_type_conversion_uint2 ---------------------------- 50 @@ -489,13 +442,11 @@ CONTEXT: PL/Python function "test_type_conversion_uint2" SELECT * FROM test_type_conversion_uint2(100::uint2, -50); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_uint2" ERROR: value for domain uint2 violates check constraint "uint2_check" CONTEXT: while creating return value PL/Python function "test_type_conversion_uint2" SELECT * FROM test_type_conversion_uint2(null, 1); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_uint2" test_type_conversion_uint2 ---------------------------- 1 @@ -524,7 +475,6 @@ return y $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_bytea10('hello wold', 'hello wold'); INFO: ('hello wold', ) -CONTEXT: PL/Python function "test_type_conversion_bytea10" test_type_conversion_bytea10 ------------------------------ \x68656c6c6f20776f6c64 @@ -534,7 +484,6 @@ SELECT * FROM test_type_conversion_bytea10('hello world', 'hello wold'); ERROR: value for domain bytea10 violates check constraint "bytea10_check" SELECT * FROM test_type_conversion_bytea10('hello word', 'hello world'); INFO: ('hello word', ) -CONTEXT: PL/Python function "test_type_conversion_bytea10" ERROR: value for domain bytea10 violates check constraint "bytea10_check" CONTEXT: while creating return value PL/Python function "test_type_conversion_bytea10" @@ -542,7 +491,6 @@ SELECT * FROM test_type_conversion_bytea10(null, 'hello word'); ERROR: value for domain bytea10 violates check constraint "bytea10_check" SELECT * FROM test_type_conversion_bytea10('hello word', null); INFO: ('hello word', ) -CONTEXT: PL/Python function "test_type_conversion_bytea10" ERROR: value for domain bytea10 violates check constraint "bytea10_check" CONTEXT: while creating return value PL/Python function "test_type_conversion_bytea10" @@ -555,7 +503,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_array_int4(ARRAY[0, 100]); INFO: ([0, 100], ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- {0,100} @@ -563,7 +510,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_int4" SELECT * FROM test_type_conversion_array_int4(ARRAY[0,-100,55]); INFO: ([0, -100, 55], ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- {0,-100,55} @@ -571,7 +517,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_int4" SELECT * FROM test_type_conversion_array_int4(ARRAY[NULL,1]); INFO: ([None, 1], ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- {NULL,1} @@ -579,7 +524,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_int4" SELECT * FROM test_type_conversion_array_int4(ARRAY[]::integer[]); INFO: ([], ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- {} @@ -587,7 +531,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_int4" SELECT * FROM test_type_conversion_array_int4(NULL); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- @@ -603,7 +546,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_array_text(ARRAY['foo', 'bar']); INFO: (['foo', 'bar'], ) -CONTEXT: PL/Python function "test_type_conversion_array_text" test_type_conversion_array_text --------------------------------- {foo,bar} @@ -615,7 +557,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_array_bytea(ARRAY[E'\\xdeadbeef'::bytea, NULL]); INFO: (['\xde\xad\xbe\xef', None], ) -CONTEXT: PL/Python function "test_type_conversion_array_bytea" test_type_conversion_array_bytea ---------------------------------- {"\\xdeadbeef",NULL} @@ -681,7 +622,6 @@ return x $$ LANGUAGE plpythonu; SELECT * FROM test_type_conversion_array_domain(ARRAY[0, 100]::ordered_pair_domain); INFO: ([0, 100], ) -CONTEXT: PL/Python function "test_type_conversion_array_domain" test_type_conversion_array_domain ----------------------------------- {0,100} @@ -689,7 +629,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_domain" SELECT * FROM test_type_conversion_array_domain(NULL::ordered_pair_domain); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_array_domain" test_type_conversion_array_domain ----------------------------------- @@ -783,7 +722,6 @@ return rv[0]['val'] $$; SELECT test_prep_bool_output(); -- false INFO: {'val': False} -CONTEXT: PL/Python function "test_prep_bool_output" test_prep_bool_output ----------------------- f @@ -812,7 +750,6 @@ return rv[0]['val'] $$; SELECT test_prep_bytea_output(); INFO: {'val': '\xaa\x00\xbb'} -CONTEXT: PL/Python function "test_prep_bytea_output" test_prep_bytea_output ------------------------ \xaa00bb diff --git a/src/pl/plpython/expected/plpython_types_3.out b/src/pl/plpython/expected/plpython_types_3.out index c439011ba3..56b78e1a5f 100644 --- a/src/pl/plpython/expected/plpython_types_3.out +++ b/src/pl/plpython/expected/plpython_types_3.out @@ -10,7 +10,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_bool(true); INFO: (True, ) -CONTEXT: PL/Python function "test_type_conversion_bool" test_type_conversion_bool --------------------------- t @@ -18,7 +17,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool" SELECT * FROM test_type_conversion_bool(false); INFO: (False, ) -CONTEXT: PL/Python function "test_type_conversion_bool" test_type_conversion_bool --------------------------- f @@ -26,7 +24,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool" SELECT * FROM test_type_conversion_bool(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_bool" test_type_conversion_bool --------------------------- @@ -54,7 +51,6 @@ return ret $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_bool_other(0); INFO: (0, False) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- f @@ -62,7 +58,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(1); INFO: (5, True) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- t @@ -70,7 +65,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(2); INFO: ('', False) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- f @@ -78,7 +72,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(3); INFO: ('fa', True) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- t @@ -86,7 +79,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(4); INFO: ([], False) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- f @@ -94,7 +86,6 @@ CONTEXT: PL/Python function "test_type_conversion_bool_other" SELECT * FROM test_type_conversion_bool_other(5); INFO: ([0], True) -CONTEXT: PL/Python function "test_type_conversion_bool_other" test_type_conversion_bool_other --------------------------------- t @@ -106,7 +97,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_char('a'); INFO: ('a', ) -CONTEXT: PL/Python function "test_type_conversion_char" test_type_conversion_char --------------------------- a @@ -114,7 +104,6 @@ CONTEXT: PL/Python function "test_type_conversion_char" SELECT * FROM test_type_conversion_char(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_char" test_type_conversion_char --------------------------- @@ -126,7 +115,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_int2(100::int2); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_int2" test_type_conversion_int2 --------------------------- 100 @@ -134,7 +122,6 @@ CONTEXT: PL/Python function "test_type_conversion_int2" SELECT * FROM test_type_conversion_int2(-100::int2); INFO: (-100, ) -CONTEXT: PL/Python function "test_type_conversion_int2" test_type_conversion_int2 --------------------------- -100 @@ -142,7 +129,6 @@ CONTEXT: PL/Python function "test_type_conversion_int2" SELECT * FROM test_type_conversion_int2(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_int2" test_type_conversion_int2 --------------------------- @@ -154,7 +140,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_int4(100); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_int4" test_type_conversion_int4 --------------------------- 100 @@ -162,7 +147,6 @@ CONTEXT: PL/Python function "test_type_conversion_int4" SELECT * FROM test_type_conversion_int4(-100); INFO: (-100, ) -CONTEXT: PL/Python function "test_type_conversion_int4" test_type_conversion_int4 --------------------------- -100 @@ -170,7 +154,6 @@ CONTEXT: PL/Python function "test_type_conversion_int4" SELECT * FROM test_type_conversion_int4(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_int4" test_type_conversion_int4 --------------------------- @@ -182,7 +165,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_int8(100); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_int8" test_type_conversion_int8 --------------------------- 100 @@ -190,7 +172,6 @@ CONTEXT: PL/Python function "test_type_conversion_int8" SELECT * FROM test_type_conversion_int8(-100); INFO: (-100, ) -CONTEXT: PL/Python function "test_type_conversion_int8" test_type_conversion_int8 --------------------------- -100 @@ -198,7 +179,6 @@ CONTEXT: PL/Python function "test_type_conversion_int8" SELECT * FROM test_type_conversion_int8(5000000000); INFO: (5000000000, ) -CONTEXT: PL/Python function "test_type_conversion_int8" test_type_conversion_int8 --------------------------- 5000000000 @@ -206,7 +186,6 @@ CONTEXT: PL/Python function "test_type_conversion_int8" SELECT * FROM test_type_conversion_int8(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_int8" test_type_conversion_int8 --------------------------- @@ -220,7 +199,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_numeric(100); INFO: ('100', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 100 @@ -228,7 +206,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(-100); INFO: ('-100', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ -100 @@ -236,7 +213,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(100.0); INFO: ('100.0', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 100.0 @@ -244,7 +220,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(100.00); INFO: ('100.00', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 100.00 @@ -252,7 +227,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(5000000000.5); INFO: ('5000000000.5', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 5000000000.5 @@ -260,7 +234,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(1234567890.0987654321); INFO: ('1234567890.0987654321', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ 1234567890.0987654321 @@ -268,7 +241,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(-1234567890.0987654321); INFO: ('-1234567890.0987654321', 'Decimal') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ -1234567890.0987654321 @@ -276,7 +248,6 @@ CONTEXT: PL/Python function "test_type_conversion_numeric" SELECT * FROM test_type_conversion_numeric(null); INFO: ('None', 'NoneType') -CONTEXT: PL/Python function "test_type_conversion_numeric" test_type_conversion_numeric ------------------------------ @@ -288,7 +259,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_float4(100); INFO: (100.0, ) -CONTEXT: PL/Python function "test_type_conversion_float4" test_type_conversion_float4 ----------------------------- 100 @@ -296,7 +266,6 @@ CONTEXT: PL/Python function "test_type_conversion_float4" SELECT * FROM test_type_conversion_float4(-100); INFO: (-100.0, ) -CONTEXT: PL/Python function "test_type_conversion_float4" test_type_conversion_float4 ----------------------------- -100 @@ -304,7 +273,6 @@ CONTEXT: PL/Python function "test_type_conversion_float4" SELECT * FROM test_type_conversion_float4(5000.5); INFO: (5000.5, ) -CONTEXT: PL/Python function "test_type_conversion_float4" test_type_conversion_float4 ----------------------------- 5000.5 @@ -312,7 +280,6 @@ CONTEXT: PL/Python function "test_type_conversion_float4" SELECT * FROM test_type_conversion_float4(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_float4" test_type_conversion_float4 ----------------------------- @@ -324,7 +291,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_float8(100); INFO: (100.0, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- 100 @@ -332,7 +298,6 @@ CONTEXT: PL/Python function "test_type_conversion_float8" SELECT * FROM test_type_conversion_float8(-100); INFO: (-100.0, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- -100 @@ -340,7 +305,6 @@ CONTEXT: PL/Python function "test_type_conversion_float8" SELECT * FROM test_type_conversion_float8(5000000000.5); INFO: (5000000000.5, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- 5000000000.5 @@ -348,7 +312,6 @@ CONTEXT: PL/Python function "test_type_conversion_float8" SELECT * FROM test_type_conversion_float8(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- @@ -356,7 +319,6 @@ CONTEXT: PL/Python function "test_type_conversion_float8" SELECT * FROM test_type_conversion_float8(100100100.654321); INFO: (100100100.654321, ) -CONTEXT: PL/Python function "test_type_conversion_float8" test_type_conversion_float8 ----------------------------- 100100100.654321 @@ -368,7 +330,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_oid(100); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_oid" test_type_conversion_oid -------------------------- 100 @@ -376,7 +337,6 @@ CONTEXT: PL/Python function "test_type_conversion_oid" SELECT * FROM test_type_conversion_oid(2147483649); INFO: (2147483649, ) -CONTEXT: PL/Python function "test_type_conversion_oid" test_type_conversion_oid -------------------------- 2147483649 @@ -384,7 +344,6 @@ CONTEXT: PL/Python function "test_type_conversion_oid" SELECT * FROM test_type_conversion_oid(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_oid" test_type_conversion_oid -------------------------- @@ -396,7 +355,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_text('hello world'); INFO: ('hello world', ) -CONTEXT: PL/Python function "test_type_conversion_text" test_type_conversion_text --------------------------- hello world @@ -404,7 +362,6 @@ CONTEXT: PL/Python function "test_type_conversion_text" SELECT * FROM test_type_conversion_text(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_text" test_type_conversion_text --------------------------- @@ -416,7 +373,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_bytea('hello world'); INFO: (b'hello world', ) -CONTEXT: PL/Python function "test_type_conversion_bytea" test_type_conversion_bytea ---------------------------- \x68656c6c6f20776f726c64 @@ -424,7 +380,6 @@ CONTEXT: PL/Python function "test_type_conversion_bytea" SELECT * FROM test_type_conversion_bytea(E'null\\000byte'); INFO: (b'null\x00byte', ) -CONTEXT: PL/Python function "test_type_conversion_bytea" test_type_conversion_bytea ---------------------------- \x6e756c6c0062797465 @@ -432,7 +387,6 @@ CONTEXT: PL/Python function "test_type_conversion_bytea" SELECT * FROM test_type_conversion_bytea(null); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_bytea" test_type_conversion_bytea ---------------------------- @@ -481,7 +435,6 @@ return y $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_uint2(100::uint2, 50); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_uint2" test_type_conversion_uint2 ---------------------------- 50 @@ -489,13 +442,11 @@ CONTEXT: PL/Python function "test_type_conversion_uint2" SELECT * FROM test_type_conversion_uint2(100::uint2, -50); INFO: (100, ) -CONTEXT: PL/Python function "test_type_conversion_uint2" ERROR: value for domain uint2 violates check constraint "uint2_check" CONTEXT: while creating return value PL/Python function "test_type_conversion_uint2" SELECT * FROM test_type_conversion_uint2(null, 1); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_uint2" test_type_conversion_uint2 ---------------------------- 1 @@ -524,7 +475,6 @@ return y $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_bytea10('hello wold', 'hello wold'); INFO: (b'hello wold', ) -CONTEXT: PL/Python function "test_type_conversion_bytea10" test_type_conversion_bytea10 ------------------------------ \x68656c6c6f20776f6c64 @@ -534,7 +484,6 @@ SELECT * FROM test_type_conversion_bytea10('hello world', 'hello wold'); ERROR: value for domain bytea10 violates check constraint "bytea10_check" SELECT * FROM test_type_conversion_bytea10('hello word', 'hello world'); INFO: (b'hello word', ) -CONTEXT: PL/Python function "test_type_conversion_bytea10" ERROR: value for domain bytea10 violates check constraint "bytea10_check" CONTEXT: while creating return value PL/Python function "test_type_conversion_bytea10" @@ -542,7 +491,6 @@ SELECT * FROM test_type_conversion_bytea10(null, 'hello word'); ERROR: value for domain bytea10 violates check constraint "bytea10_check" SELECT * FROM test_type_conversion_bytea10('hello word', null); INFO: (b'hello word', ) -CONTEXT: PL/Python function "test_type_conversion_bytea10" ERROR: value for domain bytea10 violates check constraint "bytea10_check" CONTEXT: while creating return value PL/Python function "test_type_conversion_bytea10" @@ -555,7 +503,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_array_int4(ARRAY[0, 100]); INFO: ([0, 100], ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- {0,100} @@ -563,7 +510,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_int4" SELECT * FROM test_type_conversion_array_int4(ARRAY[0,-100,55]); INFO: ([0, -100, 55], ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- {0,-100,55} @@ -571,7 +517,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_int4" SELECT * FROM test_type_conversion_array_int4(ARRAY[NULL,1]); INFO: ([None, 1], ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- {NULL,1} @@ -579,7 +524,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_int4" SELECT * FROM test_type_conversion_array_int4(ARRAY[]::integer[]); INFO: ([], ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- {} @@ -587,7 +531,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_int4" SELECT * FROM test_type_conversion_array_int4(NULL); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_array_int4" test_type_conversion_array_int4 --------------------------------- @@ -603,7 +546,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_array_text(ARRAY['foo', 'bar']); INFO: (['foo', 'bar'], ) -CONTEXT: PL/Python function "test_type_conversion_array_text" test_type_conversion_array_text --------------------------------- {foo,bar} @@ -615,7 +557,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_array_bytea(ARRAY[E'\\xdeadbeef'::bytea, NULL]); INFO: ([b'\xde\xad\xbe\xef', None], ) -CONTEXT: PL/Python function "test_type_conversion_array_bytea" test_type_conversion_array_bytea ---------------------------------- {"\\xdeadbeef",NULL} @@ -681,7 +622,6 @@ return x $$ LANGUAGE plpython3u; SELECT * FROM test_type_conversion_array_domain(ARRAY[0, 100]::ordered_pair_domain); INFO: ([0, 100], ) -CONTEXT: PL/Python function "test_type_conversion_array_domain" test_type_conversion_array_domain ----------------------------------- {0,100} @@ -689,7 +629,6 @@ CONTEXT: PL/Python function "test_type_conversion_array_domain" SELECT * FROM test_type_conversion_array_domain(NULL::ordered_pair_domain); INFO: (None, ) -CONTEXT: PL/Python function "test_type_conversion_array_domain" test_type_conversion_array_domain ----------------------------------- @@ -783,7 +722,6 @@ return rv[0]['val'] $$; SELECT test_prep_bool_output(); -- false INFO: {'val': False} -CONTEXT: PL/Python function "test_prep_bool_output" test_prep_bool_output ----------------------- f @@ -812,7 +750,6 @@ return rv[0]['val'] $$; SELECT test_prep_bytea_output(); INFO: {'val': b'\xaa\x00\xbb'} -CONTEXT: PL/Python function "test_prep_bytea_output" test_prep_bytea_output ------------------------ \xaa00bb diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out index 5e3173774f..72ada21e63 100644 --- a/src/test/regress/expected/copy2.out +++ b/src/test/regress/expected/copy2.out @@ -447,12 +447,9 @@ Check constraints: copy check_con_tbl from stdin; NOTICE: input = {"f1":1} -CONTEXT: COPY check_con_tbl, line 1: "1" NOTICE: input = {"f1":null} -CONTEXT: COPY check_con_tbl, line 2: "\N" copy check_con_tbl from stdin; NOTICE: input = {"f1":0} -CONTEXT: COPY check_con_tbl, line 1: "0" ERROR: new row for relation "check_con_tbl" violates check constraint "check_con_tbl_check" DETAIL: Failing row contains (0). CONTEXT: COPY check_con_tbl, line 1: "0" diff --git a/src/test/regress/expected/event_trigger.out b/src/test/regress/expected/event_trigger.out index 95387a888b..5503a65531 100644 --- a/src/test/regress/expected/event_trigger.out +++ b/src/test/regress/expected/event_trigger.out @@ -234,15 +234,10 @@ drop cascades to table schema_one.table_one 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 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 -SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_three" -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" +CONTEXT: PL/pgSQL function undroppable() line 14 at RAISE +SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_three" 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; @@ -255,23 +250,12 @@ drop cascades to table schema_one.table_one 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 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 -SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_three" -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 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 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 ERROR: object schema_one.table_three of type table cannot be dropped +CONTEXT: PL/pgSQL function undroppable() line 14 at RAISE DELETE FROM undroppable_objs WHERE object_identity = 'schema_one.table_three'; DROP SCHEMA schema_one, schema_two CASCADE; NOTICE: drop cascades to 7 other objects @@ -283,22 +267,10 @@ drop cascades to table schema_one.table_one 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 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 -SQL statement "DROP TABLE IF EXISTS audit_tbls.schema_two_table_three" -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 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 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 SELECT * FROM dropped_objects WHERE schema IS NULL OR schema <> 'pg_toast'; type | schema | object --------------+------------+------------------------------------- @@ -329,8 +301,6 @@ 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 SELECT * FROM dropped_objects WHERE type = 'schema'; type | schema | object --------+--------+------------ @@ -392,7 +362,7 @@ ERROR: pg_event_trigger_table_rewrite_oid() can only be called in a table_rewri CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN - RAISE EXCEPTION 'I''m sorry Sir, No Rewrite Allowed.'; + RAISE EXCEPTION 'rewrites not allowed'; END; $$; create event trigger no_rewrite_allowed on table_rewrite @@ -401,9 +371,11 @@ create table rewriteme (id serial primary key, foo float); insert into rewriteme select x * 1.001 from generate_series(1, 500) as t(x); alter table rewriteme alter column foo type numeric; -ERROR: I'm sorry Sir, No Rewrite Allowed. +ERROR: rewrites not allowed +CONTEXT: PL/pgSQL function test_evtrig_no_rewrite() line 3 at RAISE alter table rewriteme add column baz int default 0; -ERROR: I'm sorry Sir, No Rewrite Allowed. +ERROR: rewrites not allowed +CONTEXT: PL/pgSQL function test_evtrig_no_rewrite() line 3 at RAISE -- test with more than one reason to rewrite a single table CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger LANGUAGE plpgsql AS $$ diff --git a/src/test/regress/expected/plancache.out b/src/test/regress/expected/plancache.out index 864f70f7b5..3f3db337c5 100644 --- a/src/test/regress/expected/plancache.out +++ b/src/test/regress/expected/plancache.out @@ -234,8 +234,6 @@ begin end$$ language plpgsql; select cachebug(); NOTICE: table "temptable" does not exist, skipping -CONTEXT: SQL statement "drop table if exists temptable cascade" -PL/pgSQL function cachebug() line 4 at SQL statement NOTICE: 1 NOTICE: 2 NOTICE: 3 @@ -246,8 +244,6 @@ NOTICE: 3 select cachebug(); NOTICE: drop cascades to view vv -CONTEXT: SQL statement "drop table if exists temptable cascade" -PL/pgSQL function cachebug() line 4 at SQL statement NOTICE: 1 NOTICE: 2 NOTICE: 3 diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out index 83c643847d..141c9982f8 100644 --- a/src/test/regress/expected/plpgsql.out +++ b/src/test/regress/expected/plpgsql.out @@ -1518,27 +1518,35 @@ ERROR: duplicate key value violates unique constraint "pfield_name" DETAIL: Key (name)=(PF1_1) already exists. update PSlot set backlink = 'WS.not.there' where slotname = 'PS.base.a1'; ERROR: WS.not.there does not exist -CONTEXT: PL/pgSQL function tg_backlink_a() line 17 at assignment +CONTEXT: PL/pgSQL function tg_backlink_set(character,character) line 30 at RAISE +PL/pgSQL function tg_backlink_a() line 17 at assignment update PSlot set backlink = 'XX.illegal' where slotname = 'PS.base.a1'; ERROR: illegal backlink beginning with XX -CONTEXT: PL/pgSQL function tg_backlink_a() line 17 at assignment +CONTEXT: PL/pgSQL function tg_backlink_set(character,character) line 47 at RAISE +PL/pgSQL function tg_backlink_a() line 17 at assignment update PSlot set slotlink = 'PS.not.there' where slotname = 'PS.base.a1'; ERROR: PS.not.there does not exist -CONTEXT: PL/pgSQL function tg_slotlink_a() line 17 at assignment +CONTEXT: PL/pgSQL function tg_slotlink_set(character,character) line 30 at RAISE +PL/pgSQL function tg_slotlink_a() line 17 at assignment update PSlot set slotlink = 'XX.illegal' where slotname = 'PS.base.a1'; ERROR: illegal slotlink beginning with XX -CONTEXT: PL/pgSQL function tg_slotlink_a() line 17 at assignment +CONTEXT: PL/pgSQL function tg_slotlink_set(character,character) line 77 at RAISE +PL/pgSQL function tg_slotlink_a() line 17 at assignment insert into HSlot values ('HS', 'base.hub1', 1, ''); ERROR: duplicate key value violates unique constraint "hslot_name" DETAIL: Key (slotname)=(HS.base.hub1.1 ) already exists. insert into HSlot values ('HS', 'base.hub1', 20, ''); ERROR: no manual manipulation of HSlot +CONTEXT: PL/pgSQL function tg_hslot_biu() line 12 at RAISE delete from HSlot; ERROR: no manual manipulation of HSlot +CONTEXT: PL/pgSQL function tg_hslot_bd() line 12 at RAISE insert into IFace values ('IF', 'notthere', 'eth0', ''); ERROR: system "notthere" does not exist +CONTEXT: PL/pgSQL function tg_iface_biu() line 8 at RAISE insert into IFace values ('IF', 'orion', 'ethernet_interface_name_too_long', ''); ERROR: IFace slotname "IF.orion.ethernet_interface_name_too_long" too long (20 char max) +CONTEXT: PL/pgSQL function tg_iface_biu() line 14 at RAISE -- -- The following tests are unrelated to the scenario outlined above; -- they merely exercise specific parts of PL/pgSQL @@ -1963,6 +1971,7 @@ NOTICE: should see this NOTICE: should see this only if -100 <> 0 NOTICE: should see this only if -100 fits in smallint ERROR: -100 is less than zero +CONTEXT: PL/pgSQL function trap_zero_divide(integer) line 12 at RAISE create function trap_matching_test(int) returns int as $$ declare x int; sx smallint; @@ -2066,14 +2075,8 @@ begin end$$ language plpgsql; select test_variable_storage(); NOTICE: should see this -CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" -PL/pgSQL function test_variable_storage() line 8 at PERFORM NOTICE: should see this only if -100 <> 0 -CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" -PL/pgSQL function test_variable_storage() line 8 at PERFORM NOTICE: should see this only if -100 fits in smallint -CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" -PL/pgSQL function test_variable_storage() line 8 at PERFORM test_variable_storage ----------------------- 123456789012 @@ -4103,6 +4106,7 @@ DETAIL: some detail info HINT: some hint ERROR: 1 2 3 DETAIL: some detail info +CONTEXT: PL/pgSQL function raise_test() line 5 at RAISE -- Since we can't actually see the thrown SQLSTATE in default psql output, -- test it like this; this also tests re-RAISE create or replace function raise_test() returns void as $$ @@ -4119,6 +4123,7 @@ select raise_test(); NOTICE: SQLSTATE: 22012 SQLERRM: check me ERROR: check me DETAIL: some detail info +CONTEXT: PL/pgSQL function raise_test() line 3 at RAISE create or replace function raise_test() returns void as $$ begin raise 'check me' @@ -4133,6 +4138,7 @@ select raise_test(); NOTICE: SQLSTATE: 1234F SQLERRM: check me ERROR: check me DETAIL: some detail info +CONTEXT: PL/pgSQL function raise_test() line 3 at RAISE -- SQLSTATE specification in WHEN create or replace function raise_test() returns void as $$ begin @@ -4148,6 +4154,7 @@ select raise_test(); NOTICE: SQLSTATE: 1234F SQLERRM: check me ERROR: check me DETAIL: some detail info +CONTEXT: PL/pgSQL function raise_test() line 3 at RAISE create or replace function raise_test() returns void as $$ begin raise division_by_zero using detail = 'some detail info'; @@ -4161,6 +4168,7 @@ select raise_test(); NOTICE: SQLSTATE: 22012 SQLERRM: division_by_zero ERROR: division_by_zero DETAIL: some detail info +CONTEXT: PL/pgSQL function raise_test() line 3 at RAISE create or replace function raise_test() returns void as $$ begin raise division_by_zero; @@ -4168,6 +4176,7 @@ end; $$ language plpgsql; select raise_test(); ERROR: division_by_zero +CONTEXT: PL/pgSQL function raise_test() line 3 at RAISE create or replace function raise_test() returns void as $$ begin raise sqlstate '1234F'; @@ -4175,6 +4184,7 @@ end; $$ language plpgsql; select raise_test(); ERROR: 1234F +CONTEXT: PL/pgSQL function raise_test() line 3 at RAISE create or replace function raise_test() returns void as $$ begin raise division_by_zero using message = 'custom' || ' message'; @@ -4182,6 +4192,7 @@ end; $$ language plpgsql; select raise_test(); ERROR: custom message +CONTEXT: PL/pgSQL function raise_test() line 3 at RAISE create or replace function raise_test() returns void as $$ begin raise using message = 'custom' || ' message', errcode = '22012'; @@ -4189,6 +4200,7 @@ end; $$ language plpgsql; select raise_test(); ERROR: custom message +CONTEXT: PL/pgSQL function raise_test() line 3 at RAISE -- conflict on message create or replace function raise_test() returns void as $$ begin @@ -4305,6 +4317,7 @@ $$ language plpgsql; select raise_test(); NOTICE: 22012 ERROR: substitute message +CONTEXT: PL/pgSQL function raise_test() line 7 at RAISE drop function raise_test(); -- test passing column_name, constraint_name, datatype_name, table_name -- and schema_name error fields @@ -4864,7 +4877,6 @@ LINE 1: SELECT 'foo\\bar\041baz' ^ HINT: Use the escape string syntax for backslashes, e.g., E'\\'. QUERY: SELECT 'foo\\bar\041baz' -CONTEXT: PL/pgSQL function strtest() line 4 at RETURN strtest ------------- foo\bar!baz @@ -5380,22 +5392,14 @@ $$ language plpgsql; select outer_outer_func(10); NOTICE: calling down into outer_func() NOTICE: calling down into inner_func() -CONTEXT: PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: ***PL/pgSQL function inner_func(integer) line 4 at GET DIAGNOSTICS PL/pgSQL function outer_func(integer) line 6 at assignment PL/pgSQL function outer_outer_func(integer) line 6 at assignment*** -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: ***PL/pgSQL function inner_func(integer) line 7 at GET DIAGNOSTICS PL/pgSQL function outer_func(integer) line 6 at assignment PL/pgSQL function outer_outer_func(integer) line 6 at assignment*** -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: lets make sure we didnt break anything -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: inner_func() done -CONTEXT: PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: outer_func() done outer_outer_func ------------------ @@ -5406,22 +5410,14 @@ NOTICE: outer_func() done select outer_outer_func(20); NOTICE: calling down into outer_func() NOTICE: calling down into inner_func() -CONTEXT: PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: ***PL/pgSQL function inner_func(integer) line 4 at GET DIAGNOSTICS PL/pgSQL function outer_func(integer) line 6 at assignment PL/pgSQL function outer_outer_func(integer) line 6 at assignment*** -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: ***PL/pgSQL function inner_func(integer) line 7 at GET DIAGNOSTICS PL/pgSQL function outer_func(integer) line 6 at assignment PL/pgSQL function outer_outer_func(integer) line 6 at assignment*** -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: lets make sure we didnt break anything -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: inner_func() done -CONTEXT: PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: outer_func() done outer_outer_func ------------------ @@ -5478,22 +5474,14 @@ $$ language plpgsql; select outer_outer_func(10); NOTICE: calling down into outer_func() NOTICE: calling down into inner_func() -CONTEXT: PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: ***PL/pgSQL function inner_func(integer) line 10 at GET DIAGNOSTICS PL/pgSQL function outer_func(integer) line 6 at assignment PL/pgSQL function outer_outer_func(integer) line 6 at assignment*** -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: ***PL/pgSQL function inner_func(integer) line 15 at GET DIAGNOSTICS PL/pgSQL function outer_func(integer) line 6 at assignment PL/pgSQL function outer_outer_func(integer) line 6 at assignment*** -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: lets make sure we didnt break anything -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: inner_func() done -CONTEXT: PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: outer_func() done outer_outer_func ------------------ @@ -5504,22 +5492,14 @@ NOTICE: outer_func() done select outer_outer_func(20); NOTICE: calling down into outer_func() NOTICE: calling down into inner_func() -CONTEXT: PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: ***PL/pgSQL function inner_func(integer) line 10 at GET DIAGNOSTICS PL/pgSQL function outer_func(integer) line 6 at assignment PL/pgSQL function outer_outer_func(integer) line 6 at assignment*** -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: ***PL/pgSQL function inner_func(integer) line 15 at GET DIAGNOSTICS PL/pgSQL function outer_func(integer) line 6 at assignment PL/pgSQL function outer_outer_func(integer) line 6 at assignment*** -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: lets make sure we didnt break anything -CONTEXT: PL/pgSQL function outer_func(integer) line 6 at assignment -PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: inner_func() done -CONTEXT: PL/pgSQL function outer_outer_func(integer) line 6 at assignment NOTICE: outer_func() done outer_outer_func ------------------ diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out index c0cd9fac46..88bdc2cdfc 100644 --- a/src/test/regress/expected/privileges.out +++ b/src/test/regress/expected/privileges.out @@ -1023,7 +1023,6 @@ GRANT regressgroup2 TO regressuser5; -- fails: no ADMIN OPTION ERROR: must have admin option on role "regressgroup2" SELECT dogrant_ok(); -- ok: SECURITY DEFINER conveys ADMIN NOTICE: role "regressuser5" is already a member of role "regressgroup2" -CONTEXT: SQL function "dogrant_ok" statement 1 dogrant_ok ------------ diff --git a/src/test/regress/expected/psql.out b/src/test/regress/expected/psql.out index 6ff9be1167..d6f4f4831d 100644 --- a/src/test/regress/expected/psql.out +++ b/src/test/regress/expected/psql.out @@ -2332,3 +2332,31 @@ execute q; l|11 |==== deallocate q; +-- SHOW_CONTEXT +\set SHOW_CONTEXT never +do $$ +begin + raise notice 'foo'; + raise exception 'bar'; +end $$; +NOTICE: foo +ERROR: bar +\set SHOW_CONTEXT errors +do $$ +begin + raise notice 'foo'; + raise exception 'bar'; +end $$; +NOTICE: foo +ERROR: bar +CONTEXT: PL/pgSQL function inline_code_block line 4 at RAISE +\set SHOW_CONTEXT always +do $$ +begin + raise notice 'foo'; + raise exception 'bar'; +end $$; +NOTICE: foo +CONTEXT: PL/pgSQL function inline_code_block line 3 at RAISE +ERROR: bar +CONTEXT: PL/pgSQL function inline_code_block line 4 at RAISE diff --git a/src/test/regress/expected/rangefuncs.out b/src/test/regress/expected/rangefuncs.out index 6dabe503cc..00ef421054 100644 --- a/src/test/regress/expected/rangefuncs.out +++ b/src/test/regress/expected/rangefuncs.out @@ -1704,9 +1704,7 @@ create trigger tnoticetrigger after insert on tt for each row execute procedure noticetrigger(); select insert_tt2('foolme','barme') limit 1; NOTICE: noticetrigger 11 foolme -CONTEXT: SQL function "insert_tt2" statement 1 NOTICE: noticetrigger 12 barme -CONTEXT: SQL function "insert_tt2" statement 1 insert_tt2 ------------ 11 @@ -1735,9 +1733,7 @@ create rule insert_tt_rule as on insert to tt do also insert into tt_log values(new.*); select insert_tt2('foollog','barlog') limit 1; NOTICE: noticetrigger 13 foollog -CONTEXT: SQL function "insert_tt2" statement 1 NOTICE: noticetrigger 14 barlog -CONTEXT: SQL function "insert_tt2" statement 1 insert_tt2 ------------ 13 diff --git a/src/test/regress/expected/triggers.out b/src/test/regress/expected/triggers.out index f5980c624c..dd4a99bff1 100644 --- a/src/test/regress/expected/triggers.out +++ b/src/test/regress/expected/triggers.out @@ -958,11 +958,7 @@ NOTICE: main_view BEFORE INSERT STATEMENT (before_view_ins_stmt) NOTICE: main_view INSTEAD OF INSERT ROW (instead_of_ins) NOTICE: NEW: (20,30) NOTICE: trigger_func(before_ins_stmt) called: action = INSERT, when = BEFORE, level = STATEMENT -CONTEXT: SQL statement "INSERT INTO main_table VALUES (NEW.a, NEW.b)" -PL/pgSQL function view_trigger() line 17 at SQL statement NOTICE: trigger_func(after_ins_stmt) called: action = INSERT, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "INSERT INTO main_table VALUES (NEW.a, NEW.b)" -PL/pgSQL function view_trigger() line 17 at SQL statement NOTICE: main_view AFTER INSERT STATEMENT (after_view_ins_stmt) INSERT 0 1 INSERT INTO main_view VALUES (21, 31) RETURNING a, b; @@ -970,11 +966,7 @@ NOTICE: main_view BEFORE INSERT STATEMENT (before_view_ins_stmt) NOTICE: main_view INSTEAD OF INSERT ROW (instead_of_ins) NOTICE: NEW: (21,31) NOTICE: trigger_func(before_ins_stmt) called: action = INSERT, when = BEFORE, level = STATEMENT -CONTEXT: SQL statement "INSERT INTO main_table VALUES (NEW.a, NEW.b)" -PL/pgSQL function view_trigger() line 17 at SQL statement NOTICE: trigger_func(after_ins_stmt) called: action = INSERT, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "INSERT INTO main_table VALUES (NEW.a, NEW.b)" -PL/pgSQL function view_trigger() line 17 at SQL statement NOTICE: main_view AFTER INSERT STATEMENT (after_view_ins_stmt) a | b ----+---- @@ -988,17 +980,9 @@ NOTICE: main_view BEFORE UPDATE STATEMENT (before_view_upd_stmt) NOTICE: main_view INSTEAD OF UPDATE ROW (instead_of_upd) NOTICE: OLD: (20,30), NEW: (20,31) NOTICE: trigger_func(before_upd_a_stmt) called: action = UPDATE, when = BEFORE, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(before_upd_a_row) called: action = UPDATE, when = BEFORE, level = ROW -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_b_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: main_view AFTER UPDATE STATEMENT (after_view_upd_stmt) UPDATE 0 UPDATE main_view SET b = 32 WHERE a = 21 AND b = 31 RETURNING a, b; @@ -1006,17 +990,9 @@ NOTICE: main_view BEFORE UPDATE STATEMENT (before_view_upd_stmt) NOTICE: main_view INSTEAD OF UPDATE ROW (instead_of_upd) NOTICE: OLD: (21,31), NEW: (21,32) NOTICE: trigger_func(before_upd_a_stmt) called: action = UPDATE, when = BEFORE, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(before_upd_a_row) called: action = UPDATE, when = BEFORE, level = ROW -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_b_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: main_view AFTER UPDATE STATEMENT (after_view_upd_stmt) a | b ---+--- @@ -1031,20 +1007,10 @@ NOTICE: main_view BEFORE UPDATE STATEMENT (before_view_upd_stmt) NOTICE: main_view INSTEAD OF UPDATE ROW (instead_of_upd) NOTICE: OLD: (20,30), NEW: (20,31) NOTICE: trigger_func(before_upd_a_stmt) called: action = UPDATE, when = BEFORE, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_a_b_row) called: action = UPDATE, when = AFTER, level = ROW -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_b_row) called: action = UPDATE, when = AFTER, level = ROW -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_b_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: main_view AFTER UPDATE STATEMENT (after_view_upd_stmt) UPDATE 1 UPDATE main_view SET b = 32 WHERE a = 21 AND b = 31 RETURNING a, b; @@ -1052,20 +1018,10 @@ NOTICE: main_view BEFORE UPDATE STATEMENT (before_view_upd_stmt) NOTICE: main_view INSTEAD OF UPDATE ROW (instead_of_upd) NOTICE: OLD: (21,31), NEW: (21,32) NOTICE: trigger_func(before_upd_a_stmt) called: action = UPDATE, when = BEFORE, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_a_b_row) called: action = UPDATE, when = AFTER, level = ROW -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_b_row) called: action = UPDATE, when = AFTER, level = ROW -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_b_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: trigger_func(after_upd_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT -CONTEXT: SQL statement "UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b" -PL/pgSQL function view_trigger() line 23 at SQL statement NOTICE: main_view AFTER UPDATE STATEMENT (after_view_upd_stmt) a | b ----+---- @@ -1277,6 +1233,7 @@ INSERT 0 1 -- UPDATE .. RETURNING UPDATE city_view SET country_name = 'Japon' WHERE city_name = 'Tokyo'; -- error ERROR: No such country: "Japon" +CONTEXT: PL/pgSQL function city_update() line 9 at RAISE UPDATE city_view SET country_name = 'Japan' WHERE city_name = 'Takyo'; -- no match UPDATE 0 UPDATE city_view SET country_name = 'Japan' WHERE city_name = 'Tokyo' RETURNING *; -- OK @@ -1489,26 +1446,13 @@ select pg_trigger_depth(); insert into depth_a values (1); NOTICE: depth_a_tr: depth = 1 NOTICE: depth_b_tr: depth = 2 -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 -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 -CONTEXT: 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 -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 -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)" +CONTEXT: PL/pgSQL function depth_c_tf() line 5 at RAISE +SQL statement "insert into depth_c values (1)" 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 @@ -1521,21 +1465,9 @@ select pg_trigger_depth(); insert into depth_a values (2); NOTICE: depth_a_tr: depth = 1 NOTICE: depth_b_tr: depth = 2 -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 -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 -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 -CONTEXT: SQL statement "insert into depth_b values (new.id)" -PL/pgSQL function depth_a_tf() line 4 at SQL statement NOTICE: depth_a_tr: depth = 1 select pg_trigger_depth(); pg_trigger_depth diff --git a/src/test/regress/expected/xml.out b/src/test/regress/expected/xml.out index 9b2d264414..5691e4740d 100644 --- a/src/test/regress/expected/xml.out +++ b/src/test/regress/expected/xml.out @@ -934,7 +934,6 @@ SELECT xpath('/*', ''); WARNING: line 1: xmlns: URI relative is not absolute ^ -CONTEXT: SQL function "xpath" statement 1 xpath -------------------------------------- {""} diff --git a/src/test/regress/sql/event_trigger.sql b/src/test/regress/sql/event_trigger.sql index ec220fc7ec..b293f5c048 100644 --- a/src/test/regress/sql/event_trigger.sql +++ b/src/test/regress/sql/event_trigger.sql @@ -282,7 +282,7 @@ select pg_event_trigger_table_rewrite_oid(); CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN - RAISE EXCEPTION 'I''m sorry Sir, No Rewrite Allowed.'; + RAISE EXCEPTION 'rewrites not allowed'; END; $$; diff --git a/src/test/regress/sql/psql.sql b/src/test/regress/sql/psql.sql index fa1df8b2d7..b93764a684 100644 --- a/src/test/regress/sql/psql.sql +++ b/src/test/regress/sql/psql.sql @@ -301,3 +301,26 @@ execute q; execute q; deallocate q; + +-- SHOW_CONTEXT + +\set SHOW_CONTEXT never +do $$ +begin + raise notice 'foo'; + raise exception 'bar'; +end $$; + +\set SHOW_CONTEXT errors +do $$ +begin + raise notice 'foo'; + raise exception 'bar'; +end $$; + +\set SHOW_CONTEXT always +do $$ +begin + raise notice 'foo'; + raise exception 'bar'; +end $$;