/
githubmirror
/
postgres
Обзор
Документация
Войти
/
githubmirror
/
postgres
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/test/regress/expected/oid.out
200 строк
5 KB
John Naylor
Add ssup_datum_uint32_cmp for comparing OIDs
10 авг 2026, 13:25
10 авг 2026, 13:25
94d32ce
Код
Авторство
О чём код?
-- -- 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'); INSERT INTO OID_TBL(f1) VALUES ('99999999'); 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 '); -- bad inputs INSERT INTO OID_TBL(f1) VALUES (''); ERROR: invalid input syntax for type oid: "" LINE 1: INSERT INTO OID_TBL(f1) VALUES (''); ^ INSERT INTO OID_TBL(f1) VALUES (' '); ERROR: invalid input syntax for type oid: " " LINE 1: INSERT INTO OID_TBL(f1) VALUES (' '); ^ INSERT INTO OID_TBL(f1) VALUES ('asdfasd'); ERROR: invalid input syntax for type oid: "asdfasd" LINE 1: INSERT INTO OID_TBL(f1) VALUES ('asdfasd'); ^ INSERT INTO OID_TBL(f1) VALUES ('99asdfasd'); ERROR: invalid input syntax for type oid: "99asdfasd" LINE 1: INSERT INTO OID_TBL(f1) VALUES ('99asdfasd'); ^ INSERT INTO OID_TBL(f1) VALUES ('5 d'); ERROR: invalid input syntax for type oid: "5 d" LINE 1: INSERT INTO OID_TBL(f1) VALUES ('5 d'); ^ INSERT INTO OID_TBL(f1) VALUES (' 5d'); ERROR: invalid input syntax for type oid: " 5d" LINE 1: INSERT INTO OID_TBL(f1) VALUES (' 5d'); ^ INSERT INTO OID_TBL(f1) VALUES ('5 5'); ERROR: invalid input syntax for type oid: "5 5" LINE 1: INSERT INTO OID_TBL(f1) VALUES ('5 5'); ^ INSERT INTO OID_TBL(f1) VALUES (' - 500'); ERROR: invalid input syntax for type oid: " - 500" LINE 1: INSERT INTO OID_TBL(f1) VALUES (' - 500'); ^ INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935'); ERROR: value "32958209582039852935" is out of range for type oid LINE 1: INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935'); ^ INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385'); ERROR: value "-23582358720398502385" is out of range for type oid LINE 1: INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385'); ^ SELECT * FROM OID_TBL; f1 ------------ 1234 1235 987 4294966256 99999999 5 10 15 (8 rows) -- 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 * FROM pg_input_error_info('01XYZ', 'oid'); message | detail | hint | sql_error_code --------------------------------------------+--------+------+---------------- invalid input syntax for type oid: "01XYZ" | | | 22P02 (1 row) SELECT pg_input_is_valid('9999999999', 'oid'); pg_input_is_valid ------------------- f (1 row) SELECT * FROM pg_input_error_info('9999999999', 'oid'); message | detail | hint | sql_error_code -------------------------------------------------+--------+------+---------------- value "9999999999" is out of range for type oid | | | 22003 (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 * FROM pg_input_error_info('01 01XYZ', 'oidvector'); message | detail | hint | sql_error_code ------------------------------------------+--------+------+---------------- invalid input syntax for type oid: "XYZ" | | | 22P02 (1 row) SELECT pg_input_is_valid('01 9999999999', 'oidvector'); pg_input_is_valid ------------------- f (1 row) SELECT * FROM pg_input_error_info('01 9999999999', 'oidvector'); message | detail | hint | sql_error_code -------------------------------------------------+--------+------+---------------- value "9999999999" is out of range for type oid | | | 22003 (1 row) SELECT o.* FROM OID_TBL o WHERE o.f1 = 1234; f1 ------ 1234 (1 row) SELECT o.* FROM OID_TBL o WHERE o.f1 <> '1234'; f1 ------------ 1235 987 4294966256 99999999 5 10 15 (7 rows) SELECT o.* FROM OID_TBL o WHERE o.f1 <= '1234'; f1 ------ 1234 987 5 10 15 (5 rows) SELECT o.* FROM OID_TBL o WHERE o.f1 < '1234'; f1 ----- 987 5 10 15 (4 rows) SELECT o.* FROM OID_TBL o WHERE o.f1 >= '1234'; f1 ------------ 1234 1235 4294966256 99999999 (4 rows) SELECT o.* FROM OID_TBL o WHERE o.f1 > '1234'; f1 ------------ 1235 4294966256 99999999 (3 rows) -- sort support must order oids above 2^31 the way btoidcmp does SELECT f1 FROM (SELECT f1 FROM OID_TBL UNION ALL SELECT '4294967000'::oid) ss ORDER BY f1; f1 ------------ 5 10 15 987 1234 1235 99999999 4294966256 4294967000 (9 rows) DROP TABLE OID_TBL;