summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/xid.out61
-rw-r--r--src/test/regress/sql/xid.sql10
2 files changed, 54 insertions, 17 deletions
diff --git a/src/test/regress/expected/xid.out b/src/test/regress/expected/xid.out
index c7b8d299c84..e62f7019434 100644
--- a/src/test/regress/expected/xid.out
+++ b/src/test/regress/expected/xid.out
@@ -13,29 +13,58 @@ select '010'::xid,
8 | 42 | 4294967295 | 4294967295 | 8 | 42 | 18446744073709551615 | 18446744073709551615
(1 row)
--- garbage values are not yet rejected (perhaps they should be)
+-- garbage values
select ''::xid;
- xid
------
- 0
+ERROR: invalid input syntax for type xid: ""
+LINE 1: select ''::xid;
+ ^
+select 'asdf'::xid;
+ERROR: invalid input syntax for type xid: "asdf"
+LINE 1: select 'asdf'::xid;
+ ^
+select ''::xid8;
+ERROR: invalid input syntax for type xid8: ""
+LINE 1: select ''::xid8;
+ ^
+select 'asdf'::xid8;
+ERROR: invalid input syntax for type xid8: "asdf"
+LINE 1: select 'asdf'::xid8;
+ ^
+-- Also try it with non-error-throwing API
+SELECT pg_input_is_valid('42', 'xid');
+ pg_input_is_valid
+-------------------
+ t
(1 row)
-select 'asdf'::xid;
- xid
------
- 0
+SELECT pg_input_is_valid('asdf', 'xid');
+ pg_input_is_valid
+-------------------
+ f
(1 row)
-select ''::xid8;
- xid8
-------
- 0
+SELECT pg_input_error_message('0xffffffffff', 'xid');
+ pg_input_error_message
+---------------------------------------------------
+ value "0xffffffffff" is out of range for type xid
(1 row)
-select 'asdf'::xid8;
- xid8
-------
- 0
+SELECT pg_input_is_valid('42', 'xid8');
+ pg_input_is_valid
+-------------------
+ t
+(1 row)
+
+SELECT pg_input_is_valid('asdf', 'xid8');
+ pg_input_is_valid
+-------------------
+ f
+(1 row)
+
+SELECT pg_input_error_message('0xffffffffffffffffffff', 'xid8');
+ pg_input_error_message
+--------------------------------------------------------------
+ value "0xffffffffffffffffffff" is out of range for type xid8
(1 row)
-- equality
diff --git a/src/test/regress/sql/xid.sql b/src/test/regress/sql/xid.sql
index 2289803681b..b6996588ef6 100644
--- a/src/test/regress/sql/xid.sql
+++ b/src/test/regress/sql/xid.sql
@@ -10,12 +10,20 @@ select '010'::xid,
'0xffffffffffffffff'::xid8,
'-1'::xid8;
--- garbage values are not yet rejected (perhaps they should be)
+-- garbage values
select ''::xid;
select 'asdf'::xid;
select ''::xid8;
select 'asdf'::xid8;
+-- Also try it with non-error-throwing API
+SELECT pg_input_is_valid('42', 'xid');
+SELECT pg_input_is_valid('asdf', 'xid');
+SELECT pg_input_error_message('0xffffffffff', 'xid');
+SELECT pg_input_is_valid('42', 'xid8');
+SELECT pg_input_is_valid('asdf', 'xid8');
+SELECT pg_input_error_message('0xffffffffffffffffffff', 'xid8');
+
-- equality
select '1'::xid = '1'::xid;
select '1'::xid != '1'::xid;