No Postgres, estou procurando uma maneira de identificar exclusivamente uma tabela, independentemente das alterações de nome. OIDs parecem aptos para isso. Mas os OIDs terminam após 2 ^ 32-1.
Se os OIDs forem encapsulados, posso obter duas tabelas com o mesmo OID em pg_class? Ou há algo que o impeça?
A
oid
coluna é uma chave primária depg_class
:Portanto, não, duas tabelas não podem ter o mesmo OID.
Ao criar uma nova tabela, se o gerador de OID produzir um valor que esteja em conflito com uma linha existente, o Postgres itera até encontrar um OID que não esteja em conflito.
Veja o código em
GetNewOidWithIndex
para ver a implementação comentada.