diff options
| author | Michael Paquier | 2023-02-27 23:04:13 +0000 |
|---|---|---|
| committer | Michael Paquier | 2023-02-27 23:04:13 +0000 |
| commit | b8da37b3ada2e547983538b3e49f8079f85ce120 (patch) | |
| tree | d3ecf7af84a5b492e7a2b62b79df0398f3c8bccd /contrib/seg | |
| parent | 728560db7d868b3ded9a8675742083ab89bcff7c (diff) | |
Rework pg_input_error_message(), now renamed pg_input_error_info()
pg_input_error_info() is now a SQL function able to return a row with
more than just the error message generated for incorrect data type
inputs when these are able to handle soft failures, returning more
contents of ErrorData, as of:
- The error message (same as before).
- The error detail, if set.
- The error hint, if set.
- SQL error code.
All the regression tests that relied on pg_input_error_message() are
updated to reflect the effects of the rename.
Per discussion with Tom Lane and Andrew Dunstan.
Author: Nathan Bossart
Discussion: https://postgr.es/m/139a68e1-bd1f-a9a7-b5fe-0be9845c6311@dunslane.net
Diffstat (limited to 'contrib/seg')
| -rw-r--r-- | contrib/seg/expected/seg.out | 24 | ||||
| -rw-r--r-- | contrib/seg/sql/seg.sql | 8 |
2 files changed, 20 insertions, 12 deletions
diff --git a/contrib/seg/expected/seg.out b/contrib/seg/expected/seg.out index 7a06113ed82..cd21139b5a7 100644 --- a/contrib/seg/expected/seg.out +++ b/contrib/seg/expected/seg.out @@ -1276,20 +1276,24 @@ FROM test_seg WHERE s @> '11.2..11.3' OR s IS NULL ORDER BY s; -- test non error throwing API SELECT str as seg, pg_input_is_valid(str,'seg') as ok, - pg_input_error_message(str,'seg') as errmsg + errinfo.sql_error_code, + errinfo.message, + errinfo.detail, + errinfo.hint FROM unnest(ARRAY['-1 .. 1'::text, '100(+-)1', '', 'ABC', '1 e7', - '1e700']) str; - seg | ok | errmsg -----------+----+--------------------------------------- - -1 .. 1 | t | - 100(+-)1 | t | - | f | bad seg representation - ABC | f | bad seg representation - 1 e7 | f | bad seg representation - 1e700 | f | "1e700" is out of range for type real + '1e700']) str, + LATERAL pg_input_error_info(str, 'seg') as errinfo; + seg | ok | sql_error_code | message | detail | hint +----------+----+----------------+---------------------------------------+------------------------------+------ + -1 .. 1 | t | | | | + 100(+-)1 | t | | | | + | f | 42601 | bad seg representation | syntax error at end of input | + ABC | f | 42601 | bad seg representation | syntax error at or near "A" | + 1 e7 | f | 42601 | bad seg representation | syntax error at or near "e" | + 1e700 | f | 22003 | "1e700" is out of range for type real | | (6 rows) diff --git a/contrib/seg/sql/seg.sql b/contrib/seg/sql/seg.sql index b9a5d05d09f..c30f1f6bef1 100644 --- a/contrib/seg/sql/seg.sql +++ b/contrib/seg/sql/seg.sql @@ -244,10 +244,14 @@ FROM test_seg WHERE s @> '11.2..11.3' OR s IS NULL ORDER BY s; SELECT str as seg, pg_input_is_valid(str,'seg') as ok, - pg_input_error_message(str,'seg') as errmsg + errinfo.sql_error_code, + errinfo.message, + errinfo.detail, + errinfo.hint FROM unnest(ARRAY['-1 .. 1'::text, '100(+-)1', '', 'ABC', '1 e7', - '1e700']) str; + '1e700']) str, + LATERAL pg_input_error_info(str, 'seg') as errinfo; |
