mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-23 14:57:03 +08:00
Oversight in b139bd3b6ef0, per reports from buildfarm members longfin and prion, that use -DSTRESS_SORT_INT_MIN. Thanks to Tom Lane for the poke. Discussion: https://postgr.es/m/1656709.1767754981@sss.pgh.pa.us
88 lines
2.8 KiB
SQL
88 lines
2.8 KiB
SQL
--
|
|
-- OID8
|
|
--
|
|
|
|
CREATE TABLE OID8_TBL(f1 oid8);
|
|
|
|
INSERT INTO OID8_TBL(f1) VALUES ('1234');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('1235');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('987');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('-1040');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('99999999');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('5 ');
|
|
INSERT INTO OID8_TBL(f1) VALUES (' 10 ');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('123456789012345678');
|
|
-- UINT64_MAX
|
|
INSERT INTO OID8_TBL(f1) VALUES ('18446744073709551615');
|
|
-- leading/trailing hard tab is also allowed
|
|
INSERT INTO OID8_TBL(f1) VALUES (' 15 ');
|
|
|
|
-- bad inputs
|
|
INSERT INTO OID8_TBL(f1) VALUES ('');
|
|
INSERT INTO OID8_TBL(f1) VALUES (' ');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('asdfasd');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('99asdfasd');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('5 d');
|
|
INSERT INTO OID8_TBL(f1) VALUES (' 5d');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('5 5');
|
|
INSERT INTO OID8_TBL(f1) VALUES (' - 500');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('3908203590239580293850293850329485');
|
|
INSERT INTO OID8_TBL(f1) VALUES ('-1204982019841029840928340329840934');
|
|
-- UINT64_MAX + 1
|
|
INSERT INTO OID8_TBL(f1) VALUES ('18446744073709551616');
|
|
|
|
SELECT * FROM OID8_TBL;
|
|
|
|
-- Also try it with non-error-throwing API
|
|
SELECT pg_input_is_valid('1234', 'oid8');
|
|
SELECT pg_input_is_valid('01XYZ', 'oid8');
|
|
SELECT * FROM pg_input_error_info('01XYZ', 'oid8');
|
|
SELECT pg_input_is_valid('3908203590239580293850293850329485', 'oid8');
|
|
SELECT * FROM pg_input_error_info('-1204982019841029840928340329840934', 'oid8');
|
|
|
|
-- Operators
|
|
SELECT o.* FROM OID8_TBL o WHERE o.f1 = 1234;
|
|
SELECT o.* FROM OID8_TBL o WHERE o.f1 <> '1234';
|
|
SELECT o.* FROM OID8_TBL o WHERE o.f1 <= '1234';
|
|
SELECT o.* FROM OID8_TBL o WHERE o.f1 < '1234';
|
|
SELECT o.* FROM OID8_TBL o WHERE o.f1 >= '1234';
|
|
SELECT o.* FROM OID8_TBL o WHERE o.f1 > '1234';
|
|
|
|
-- Casts
|
|
SELECT 1::int2::oid8;
|
|
SELECT 1::int4::oid8;
|
|
SELECT 1::int8::oid8;
|
|
SELECT 1::oid8::int8;
|
|
SELECT 1::oid::oid8; -- ok
|
|
SELECT 1::oid8::oid; -- not ok
|
|
|
|
-- Aggregates
|
|
SELECT min(f1), max(f1) FROM OID8_TBL;
|
|
|
|
-- Check btree and hash opclasses
|
|
EXPLAIN (COSTS OFF)
|
|
SELECT DISTINCT (i || '000000000000' || j)::oid8 f
|
|
FROM generate_series(1, 10) i,
|
|
generate_series(1, 10) j,
|
|
generate_series(1, 5) k
|
|
WHERE i <= 10 AND j > 0 AND j <= 10
|
|
ORDER BY f;
|
|
|
|
SELECT DISTINCT (i || '000000000000' || j)::oid8 f
|
|
FROM generate_series(1, 10) i,
|
|
generate_series(1, 10) j,
|
|
generate_series(1, 5) k
|
|
WHERE i <= 10 AND j > 0 AND j <= 10
|
|
ORDER BY f;
|
|
|
|
-- 3-way compare for btrees
|
|
SELECT btoid8cmp(1::oid8, 2::oid8) < 0 AS val_lower;
|
|
SELECT btoid8cmp(2::oid8, 2::oid8) = 0 AS val_equal;
|
|
SELECT btoid8cmp(2::oid8, 1::oid8) > 0 AS val_higher;
|
|
|
|
-- oid8 has btree and hash opclasses
|
|
CREATE INDEX on OID8_TBL USING btree(f1);
|
|
CREATE INDEX ON OID8_TBL USING hash(f1);
|
|
|
|
DROP TABLE OID8_TBL;
|