"Andrew Bartley" <abartley@evolvosystems.com> writes:
> select oid, * from pg_class where relname = 'fish'
> 4289092798
> select max(oid) from pg_class
> 4289092798
> Looks like it has not wrapped.
... but you're within hailing distance of a wrap; that's very nearly 4G.
I wonder whether you are consuming OIDs fast enough that you already
wrapped, and are approaching your second (or Nth) wraparound.
How many tables do you actually have (select count(*) from pg_class)?
It could be that this is just the expected post_wrap behavior:
occasional OID conflicts due to regeneration of the same OID value.
However, unless you have a heckuva lot of pg_class entries I'd expect
the probability of a conflict to be mighty small, so I'm surprised that
you are seeing conflicts often enough to complain about it.
regards, tom lane