summaryrefslogtreecommitdiff
path: root/contrib/isn
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2023-02-28 08:04:13 +0900
committerMichael Paquier <michael@paquier.xyz>2023-02-28 08:04:13 +0900
commitb8da37b3ada2e547983538b3e49f8079f85ce120 (patch)
treed3ecf7af84a5b492e7a2b62b79df0398f3c8bccd /contrib/isn
parent728560db7d868b3ded9a8675742083ab89bcff7c (diff)
downloadpostgresql-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.out18
-rw-r--r--contrib/isn/sql/isn.sql8
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