mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-20 05:17:00 +08:00
rather than just being aliases for int4in/int4out. Give type Oid a full set of comparison operators that do proper unsigned comparison, instead of reusing the int4 comparators. Since pg_dump is now doing unsigned comparisons of OIDs, it is now *necessary* that we play by the rules here. In fact, given that btoidcmp() has been doing unsigned comparison for quite some time, it seems likely that we have index- corruption problems in 7.0 and before once the Oid counter goes past 2G. Fixing these operators is a necessary step before we can think about 8-byte Oid, too.
40 lines
816 B
SQL
40 lines
816 B
SQL
--
|
|
-- 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 ('');
|
|
|
|
-- bad inputs
|
|
|
|
INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
|
|
INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
|
|
|
|
SELECT '' AS six, OID_TBL.*;
|
|
|
|
|
|
SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 = 1234;
|
|
|
|
SELECT '' AS five, o.* FROM OID_TBL o WHERE o.f1 <> '1234';
|
|
|
|
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 <= '1234';
|
|
|
|
SELECT '' AS two, o.* FROM OID_TBL o WHERE o.f1 < '1234';
|
|
|
|
SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 >= '1234';
|
|
|
|
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 > '1234';
|
|
|
|
DROP TABLE OID_TBL;
|