Make oidin/oidout produce and consume unsigned representation of Oid,
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.
Showing
- src/backend/utils/adt/oid.c 68 additions, 27 deletionssrc/backend/utils/adt/oid.c
- src/include/catalog/catversion.h 2 additions, 2 deletionssrc/include/catalog/catversion.h
- src/include/catalog/pg_operator.h 20 additions, 8 deletionssrc/include/catalog/pg_operator.h
- src/include/catalog/pg_proc.h 10 additions, 5 deletionssrc/include/catalog/pg_proc.h
- src/include/utils/builtins.h 9 additions, 7 deletionssrc/include/utils/builtins.h
- src/test/regress/expected/oid.out 51 additions, 44 deletionssrc/test/regress/expected/oid.out
- src/test/regress/sql/oid.sql 11 additions, 7 deletionssrc/test/regress/sql/oid.sql
Loading
Please register or sign in to comment