2000-01-04 17:19:34 +01:00
|
|
|
--
|
|
|
|
-- OID
|
|
|
|
--
|
|
|
|
CREATE TABLE OID_TBL(f1 oid);
|
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('1234');
|
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('1235');
|
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('987');
|
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('-1040');
|
2000-11-21 04:23:21 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('99999999');
|
2004-03-11 03:11:14 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('5 ');
|
|
|
|
INSERT INTO OID_TBL(f1) VALUES (' 10 ');
|
|
|
|
-- leading/trailing hard tab is also allowed
|
|
|
|
INSERT INTO OID_TBL(f1) VALUES (' 15 ');
|
2010-11-23 21:27:50 +01:00
|
|
|
-- bad inputs
|
2005-02-11 05:09:05 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('');
|
|
|
|
ERROR: invalid input syntax for type oid: ""
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES ('');
|
|
|
|
^
|
2005-02-11 05:09:05 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES (' ');
|
|
|
|
ERROR: invalid input syntax for type oid: " "
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES (' ');
|
|
|
|
^
|
2000-01-04 17:19:34 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
|
2004-02-18 01:01:34 +01:00
|
|
|
ERROR: invalid input syntax for type oid: "asdfasd"
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
|
|
|
|
^
|
2000-11-21 04:23:21 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
|
2004-02-18 01:01:34 +01:00
|
|
|
ERROR: invalid input syntax for type oid: "99asdfasd"
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
|
|
|
|
^
|
2004-03-11 03:11:14 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('5 d');
|
|
|
|
ERROR: invalid input syntax for type oid: "5 d"
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES ('5 d');
|
|
|
|
^
|
2004-03-11 03:11:14 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES (' 5d');
|
|
|
|
ERROR: invalid input syntax for type oid: " 5d"
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES (' 5d');
|
|
|
|
^
|
2004-03-11 03:11:14 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('5 5');
|
|
|
|
ERROR: invalid input syntax for type oid: "5 5"
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES ('5 5');
|
|
|
|
^
|
2004-03-11 03:11:14 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES (' - 500');
|
|
|
|
ERROR: invalid input syntax for type oid: " - 500"
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES (' - 500');
|
|
|
|
^
|
2004-03-11 03:11:14 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
|
|
|
|
ERROR: value "32958209582039852935" is out of range for type oid
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
|
|
|
|
^
|
2004-03-11 03:11:14 +01:00
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
|
|
|
|
ERROR: value "-23582358720398502385" is out of range for type oid
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
|
|
|
|
^
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT * FROM OID_TBL;
|
|
|
|
f1
|
|
|
|
------------
|
|
|
|
1234
|
|
|
|
1235
|
|
|
|
987
|
|
|
|
4294966256
|
|
|
|
99999999
|
|
|
|
5
|
|
|
|
10
|
|
|
|
15
|
2004-03-11 03:11:14 +01:00
|
|
|
(8 rows)
|
1997-04-05 13:24:54 +02:00
|
|
|
|
Convert a few more datatype input functions to report errors softly.
Convert assorted internal-ish datatypes, namely aclitemin,
int2vectorin, oidin, oidvectorin, pg_lsn_in, pg_snapshot_in,
and tidin to the new style.
(Some others you might expect to find in this group, such as
cidin and xidin, need no changes because they never throw
errors at all. That seems a little cheesy ... but it is not in
the charter of this patch series to add new error conditions.)
Amul Sul, minor mods by me
Discussion: https://postgr.es/m/CAAJ_b97KeDWUdpTKGOaFYPv0OicjOu6EW+QYWj-Ywrgj_aEy1g@mail.gmail.com
2022-12-14 23:50:24 +01:00
|
|
|
-- Also try it with non-error-throwing API
|
|
|
|
SELECT pg_input_is_valid('1234', 'oid');
|
|
|
|
pg_input_is_valid
|
|
|
|
-------------------
|
|
|
|
t
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT pg_input_is_valid('01XYZ', 'oid');
|
|
|
|
pg_input_is_valid
|
|
|
|
-------------------
|
|
|
|
f
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT pg_input_error_message('01XYZ', 'oid');
|
|
|
|
pg_input_error_message
|
|
|
|
--------------------------------------------
|
|
|
|
invalid input syntax for type oid: "01XYZ"
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT pg_input_is_valid('9999999999', 'oid');
|
|
|
|
pg_input_is_valid
|
|
|
|
-------------------
|
|
|
|
f
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT pg_input_error_message('9999999999', 'oid');
|
|
|
|
pg_input_error_message
|
|
|
|
-------------------------------------------------
|
|
|
|
value "9999999999" is out of range for type oid
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
-- While we're here, check oidvector as well
|
|
|
|
SELECT pg_input_is_valid(' 1 2 4 ', 'oidvector');
|
|
|
|
pg_input_is_valid
|
|
|
|
-------------------
|
|
|
|
t
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT pg_input_is_valid('01 01XYZ', 'oidvector');
|
|
|
|
pg_input_is_valid
|
|
|
|
-------------------
|
|
|
|
f
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT pg_input_error_message('01 01XYZ', 'oidvector');
|
|
|
|
pg_input_error_message
|
|
|
|
------------------------------------------
|
|
|
|
invalid input syntax for type oid: "XYZ"
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT pg_input_is_valid('01 9999999999', 'oidvector');
|
|
|
|
pg_input_is_valid
|
|
|
|
-------------------
|
|
|
|
f
|
|
|
|
(1 row)
|
|
|
|
|
|
|
|
SELECT pg_input_error_message('01 9999999999', 'oidvector');
|
|
|
|
pg_input_error_message
|
|
|
|
-------------------------------------------------
|
|
|
|
value "9999999999" is out of range for type oid
|
|
|
|
(1 row)
|
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT o.* FROM OID_TBL o WHERE o.f1 = 1234;
|
|
|
|
f1
|
|
|
|
------
|
|
|
|
1234
|
1997-04-05 13:24:54 +02:00
|
|
|
(1 row)
|
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT o.* FROM OID_TBL o WHERE o.f1 <> '1234';
|
|
|
|
f1
|
|
|
|
------------
|
|
|
|
1235
|
|
|
|
987
|
|
|
|
4294966256
|
|
|
|
99999999
|
|
|
|
5
|
|
|
|
10
|
|
|
|
15
|
2004-03-11 03:11:14 +01:00
|
|
|
(7 rows)
|
1997-04-05 13:24:54 +02:00
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT o.* FROM OID_TBL o WHERE o.f1 <= '1234';
|
|
|
|
f1
|
|
|
|
------
|
|
|
|
1234
|
|
|
|
987
|
|
|
|
5
|
|
|
|
10
|
|
|
|
15
|
2004-03-11 03:11:14 +01:00
|
|
|
(5 rows)
|
1997-04-05 13:24:54 +02:00
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT o.* FROM OID_TBL o WHERE o.f1 < '1234';
|
|
|
|
f1
|
|
|
|
-----
|
|
|
|
987
|
|
|
|
5
|
|
|
|
10
|
|
|
|
15
|
2004-03-11 03:11:14 +01:00
|
|
|
(4 rows)
|
1997-04-05 13:24:54 +02:00
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT o.* FROM OID_TBL o WHERE o.f1 >= '1234';
|
|
|
|
f1
|
|
|
|
------------
|
|
|
|
1234
|
|
|
|
1235
|
|
|
|
4294966256
|
|
|
|
99999999
|
2000-11-21 04:23:21 +01:00
|
|
|
(4 rows)
|
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT o.* FROM OID_TBL o WHERE o.f1 > '1234';
|
|
|
|
f1
|
|
|
|
------------
|
|
|
|
1235
|
|
|
|
4294966256
|
|
|
|
99999999
|
2000-11-21 04:23:21 +01:00
|
|
|
(3 rows)
|
1997-04-05 13:24:54 +02:00
|
|
|
|
2000-01-04 17:19:34 +01:00
|
|
|
DROP TABLE OID_TBL;
|