You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
pg_class OIDs collide for names sharing first 3 chars and length #93
Any two relations sharing those produce one OID. Demonstrated:
Names
Shared OID
orders / orderz
166426
user_roles / user_rolez
176554
customers / customerz
197947
OID is the join key from pg_class to pg_attribute, pg_index, pg_constraint, and pg_depend, so an ORM introspecting orders can receive orderz's columns.
Pre-existing, not introduced by #87. Fixing it means one canonical low-collision function shared by every view and Rust site, plus a data migration rewriting persisted OIDs in pg_constraint.conrelid, pg_index.indrelid, pg_attrdef.adrelid, and pg_depend.objid/refobjid.
Related: oid_hash (src/functions/hash_functions.rs) uses Rust's DefaultHasher, which is not guaranteed stable across Rust releases, so OIDs derived from it could change on rebuild. It should be retired in the same work.
Activity