diff options
author | Michael Paquier <michael@paquier.xyz> | 2023-02-28 08:04:13 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2023-02-28 08:04:13 +0900 |
commit | b8da37b3ada2e547983538b3e49f8079f85ce120 (patch) | |
tree | d3ecf7af84a5b492e7a2b62b79df0398f3c8bccd /contrib/isn | |
parent | 728560db7d868b3ded9a8675742083ab89bcff7c (diff) | |
download | postgresql-b8da37b3ada2e547983538b3e49f8079f85ce120.tar.gz |
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/isn')
-rw-r--r-- | contrib/isn/expected/isn.out | 18 | ||||
-rw-r--r-- | contrib/isn/sql/isn.sql | 8 |
2 files changed, 17 insertions, 9 deletions
diff --git a/contrib/isn/expected/isn.out b/contrib/isn/expected/isn.out index 72171b2790..2f05b7eb86 100644 --- a/contrib/isn/expected/isn.out +++ b/contrib/isn/expected/isn.out @@ -263,16 +263,20 @@ SELECT '12345679'::ISSN = '9771234567003'::EAN13 AS "ok", -- test non-error-throwing input API SELECT str as isn, typ as "type", pg_input_is_valid(str,typ) as ok, - pg_input_error_message(str,typ) as errmsg + errinfo.sql_error_code, + errinfo.message, + errinfo.detail, + errinfo.hint FROM (VALUES ('9780123456786', 'UPC'), ('postgresql...','EAN13'), ('9771234567003','ISSN')) - AS a(str,typ); - isn | type | ok | errmsg ----------------+-------+----+-------------------------------------------------------- - 9780123456786 | UPC | f | cannot cast ISBN to UPC for number: "9780123456786" - postgresql... | EAN13 | f | invalid input syntax for EAN13 number: "postgresql..." - 9771234567003 | ISSN | t | + AS a(str,typ), + LATERAL pg_input_error_info(a.str, a.typ) as errinfo; + isn | type | ok | sql_error_code | message | detail | hint +---------------+-------+----+----------------+--------------------------------------------------------+--------+------ + 9780123456786 | UPC | f | 22P02 | cannot cast ISBN to UPC for number: "9780123456786" | | + postgresql... | EAN13 | f | 22P02 | invalid input syntax for EAN13 number: "postgresql..." | | + 9771234567003 | ISSN | t | | | | (3 rows) -- diff --git a/contrib/isn/sql/isn.sql b/contrib/isn/sql/isn.sql index 6426cb42a0..2c2ea077d1 100644 --- a/contrib/isn/sql/isn.sql +++ b/contrib/isn/sql/isn.sql @@ -110,11 +110,15 @@ SELECT '12345679'::ISSN = '9771234567003'::EAN13 AS "ok", -- test non-error-throwing input API SELECT str as isn, typ as "type", pg_input_is_valid(str,typ) as ok, - pg_input_error_message(str,typ) as errmsg + errinfo.sql_error_code, + errinfo.message, + errinfo.detail, + errinfo.hint FROM (VALUES ('9780123456786', 'UPC'), ('postgresql...','EAN13'), ('9771234567003','ISSN')) - AS a(str,typ); + AS a(str,typ), + LATERAL pg_input_error_info(a.str, a.typ) as errinfo; -- -- cleanup |