diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-16 19:46:48 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-16 19:46:48 +0000 |
commit | 311bcfc6b3acdd6fd152798c7f287ddf74fa2a98 (patch) | |
tree | 0ec307299b1dada3701e42f4ca6eda57d708261e /src/pl/plpython/expected/plpython_ereport.out | |
parent | Initial commit. (diff) | |
download | postgresql-15-upstream.tar.xz postgresql-15-upstream.zip |
Adding upstream version 15.4.upstream/15.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/pl/plpython/expected/plpython_ereport.out')
-rw-r--r-- | src/pl/plpython/expected/plpython_ereport.out | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/src/pl/plpython/expected/plpython_ereport.out b/src/pl/plpython/expected/plpython_ereport.out new file mode 100644 index 0000000..74dcc41 --- /dev/null +++ b/src/pl/plpython/expected/plpython_ereport.out @@ -0,0 +1,214 @@ +CREATE FUNCTION elog_test() RETURNS void +AS $$ +plpy.debug('debug', detail='some detail') +plpy.log('log', detail='some detail') +plpy.info('info', detail='some detail') +plpy.info() +plpy.info('the question', detail=42); +plpy.info('This is message text.', + detail='This is detail text', + hint='This is hint text.', + sqlstate='XX000', + schema_name='any info about schema', + table_name='any info about table', + column_name='any info about column', + datatype_name='any info about datatype', + constraint_name='any info about constraint') +plpy.notice('notice', detail='some detail') +plpy.warning('warning', detail='some detail') +plpy.error('stop on error', detail='some detail', hint='some hint') +$$ LANGUAGE plpython3u; +SELECT elog_test(); +INFO: info +DETAIL: some detail +INFO: () +INFO: the question +DETAIL: 42 +INFO: This is message text. +DETAIL: This is detail text +HINT: This is hint text. +NOTICE: notice +DETAIL: some detail +WARNING: warning +DETAIL: some detail +ERROR: plpy.Error: stop on error +DETAIL: some detail +HINT: some hint +CONTEXT: Traceback (most recent call last): + PL/Python function "elog_test", line 18, in <module> + plpy.error('stop on error', detail='some detail', hint='some hint') +PL/Python function "elog_test" +DO $$ plpy.info('other types', detail=(10, 20)) $$ LANGUAGE plpython3u; +INFO: other types +DETAIL: (10, 20) +DO $$ +import time; +from datetime import date +plpy.info('other types', detail=date(2016, 2, 26)) +$$ LANGUAGE plpython3u; +INFO: other types +DETAIL: 2016-02-26 +DO $$ +basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana'] +plpy.info('other types', detail=basket) +$$ LANGUAGE plpython3u; +INFO: other types +DETAIL: ['apple', 'orange', 'apple', 'pear', 'orange', 'banana'] +-- should fail +DO $$ plpy.info('wrong sqlstate', sqlstate='54444A') $$ LANGUAGE plpython3u; +ERROR: ValueError: invalid SQLSTATE code +CONTEXT: Traceback (most recent call last): + PL/Python anonymous code block, line 1, in <module> + plpy.info('wrong sqlstate', sqlstate='54444A') +PL/Python anonymous code block +DO $$ plpy.info('unsupported argument', blabla='fooboo') $$ LANGUAGE plpython3u; +ERROR: TypeError: 'blabla' is an invalid keyword argument for this function +CONTEXT: Traceback (most recent call last): + PL/Python anonymous code block, line 1, in <module> + plpy.info('unsupported argument', blabla='fooboo') +PL/Python anonymous code block +DO $$ plpy.info('first message', message='second message') $$ LANGUAGE plpython3u; +ERROR: TypeError: argument 'message' given by name and position +CONTEXT: Traceback (most recent call last): + PL/Python anonymous code block, line 1, in <module> + plpy.info('first message', message='second message') +PL/Python anonymous code block +DO $$ plpy.info('first message', 'second message', message='third message') $$ LANGUAGE plpython3u; +ERROR: TypeError: argument 'message' given by name and position +CONTEXT: Traceback (most recent call last): + PL/Python anonymous code block, line 1, in <module> + plpy.info('first message', 'second message', message='third message') +PL/Python anonymous code block +-- raise exception in python, handle exception in plgsql +CREATE OR REPLACE FUNCTION raise_exception(_message text, _detail text DEFAULT NULL, _hint text DEFAULT NULL, + _sqlstate text DEFAULT NULL, + _schema_name text DEFAULT NULL, + _table_name text DEFAULT NULL, + _column_name text DEFAULT NULL, + _datatype_name text DEFAULT NULL, + _constraint_name text DEFAULT NULL) +RETURNS void AS $$ +kwargs = { + "message": _message, "detail": _detail, "hint": _hint, + "sqlstate": _sqlstate, "schema_name": _schema_name, "table_name": _table_name, + "column_name": _column_name, "datatype_name": _datatype_name, + "constraint_name": _constraint_name +} +# ignore None values +plpy.error(**dict((k, v) for k, v in iter(kwargs.items()) if v)) +$$ LANGUAGE plpython3u; +SELECT raise_exception('hello', 'world'); +ERROR: plpy.Error: hello +DETAIL: world +CONTEXT: Traceback (most recent call last): + PL/Python function "raise_exception", line 9, in <module> + plpy.error(**dict((k, v) for k, v in iter(kwargs.items()) if v)) +PL/Python function "raise_exception" +SELECT raise_exception('message text', 'detail text', _sqlstate => 'YY333'); +ERROR: plpy.Error: message text +DETAIL: detail text +CONTEXT: Traceback (most recent call last): + PL/Python function "raise_exception", line 9, in <module> + plpy.error(**dict((k, v) for k, v in iter(kwargs.items()) if v)) +PL/Python function "raise_exception" +SELECT raise_exception(_message => 'message text', + _detail => 'detail text', + _hint => 'hint text', + _sqlstate => 'XX555', + _schema_name => 'schema text', + _table_name => 'table text', + _column_name => 'column text', + _datatype_name => 'datatype text', + _constraint_name => 'constraint text'); +ERROR: plpy.Error: message text +DETAIL: detail text +HINT: hint text +CONTEXT: Traceback (most recent call last): + PL/Python function "raise_exception", line 9, in <module> + plpy.error(**dict((k, v) for k, v in iter(kwargs.items()) if v)) +PL/Python function "raise_exception" +SELECT raise_exception(_message => 'message text', + _hint => 'hint text', + _schema_name => 'schema text', + _column_name => 'column text', + _constraint_name => 'constraint text'); +ERROR: plpy.Error: message text +HINT: hint text +CONTEXT: Traceback (most recent call last): + PL/Python function "raise_exception", line 9, in <module> + plpy.error(**dict((k, v) for k, v in iter(kwargs.items()) if v)) +PL/Python function "raise_exception" +DO $$ +DECLARE + __message text; + __detail text; + __hint text; + __sqlstate text; + __schema_name text; + __table_name text; + __column_name text; + __datatype_name text; + __constraint_name text; +BEGIN + BEGIN + PERFORM raise_exception(_message => 'message text', + _detail => 'detail text', + _hint => 'hint text', + _sqlstate => 'XX555', + _schema_name => 'schema text', + _table_name => 'table text', + _column_name => 'column text', + _datatype_name => 'datatype text', + _constraint_name => 'constraint text'); + EXCEPTION WHEN SQLSTATE 'XX555' THEN + GET STACKED DIAGNOSTICS __message = MESSAGE_TEXT, + __detail = PG_EXCEPTION_DETAIL, + __hint = PG_EXCEPTION_HINT, + __sqlstate = RETURNED_SQLSTATE, + __schema_name = SCHEMA_NAME, + __table_name = TABLE_NAME, + __column_name = COLUMN_NAME, + __datatype_name = PG_DATATYPE_NAME, + __constraint_name = CONSTRAINT_NAME; + RAISE NOTICE 'handled exception' + USING DETAIL = format('message:(%s), detail:(%s), hint: (%s), sqlstate: (%s), ' + 'schema_name:(%s), table_name:(%s), column_name:(%s), datatype_name:(%s), constraint_name:(%s)', + __message, __detail, __hint, __sqlstate, __schema_name, + __table_name, __column_name, __datatype_name, __constraint_name); + END; +END; +$$; +NOTICE: handled exception +DETAIL: message:(plpy.Error: message text), detail:(detail text), hint: (hint text), sqlstate: (XX555), schema_name:(schema text), table_name:(table text), column_name:(column text), datatype_name:(datatype text), constraint_name:(constraint text) +DO $$ +try: + plpy.execute("select raise_exception(_message => 'my message', _sqlstate => 'XX987', _hint => 'some hint', _table_name => 'users_tab', _datatype_name => 'user_type')") +except Exception as e: + plpy.info(e.spidata) + raise e +$$ LANGUAGE plpython3u; +INFO: (119577128, None, 'some hint', None, 0, None, 'users_tab', None, 'user_type', None) +ERROR: plpy.SPIError: plpy.Error: my message +HINT: some hint +CONTEXT: Traceback (most recent call last): + PL/Python anonymous code block, line 6, in <module> + raise e + PL/Python anonymous code block, line 3, in __plpython_inline_block + plpy.execute("select raise_exception(_message => 'my message', _sqlstate => 'XX987', _hint => 'some hint', _table_name => 'users_tab', _datatype_name => 'user_type')") +PL/Python anonymous code block +DO $$ +try: + plpy.error(message = 'my message', sqlstate = 'XX987', hint = 'some hint', table_name = 'users_tab', datatype_name = 'user_type') +except Exception as e: + plpy.info('sqlstate: %s, hint: %s, table_name: %s, datatype_name: %s' % (e.sqlstate, e.hint, e.table_name, e.datatype_name)) + raise e +$$ LANGUAGE plpython3u; +INFO: sqlstate: XX987, hint: some hint, table_name: users_tab, datatype_name: user_type +ERROR: plpy.Error: my message +HINT: some hint +CONTEXT: Traceback (most recent call last): + PL/Python anonymous code block, line 6, in <module> + raise e + PL/Python anonymous code block, line 3, in __plpython_inline_block + plpy.error(message = 'my message', sqlstate = 'XX987', hint = 'some hint', table_name = 'users_tab', datatype_name = 'user_type') +PL/Python anonymous code block |