Re: [RFC] Removing "magic" oids

Stephen Frost <sfrost@snowman.net>

From: Stephen Frost <sfrost@snowman.net>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2018-10-17T15:52:23Z
Lists: pgsql-hackers
Greetings,

* Robert Haas (robertmhaas@gmail.com) wrote:
> On Sun, Oct 14, 2018 at 6:43 PM Andres Freund <andres@anarazel.de> wrote:
> > I'm not sure we want that however - yes, the short time pain will be
> > lower, but do we really want to inflict the confusion about invisible
> > oids on our users for the next 20 years? I think there's a fair argument
> > to be made that we should cause pain once, rather continuing to inflict
> > lower doeses of pain.
> 
> Yeah, I think that argument has quite a bit of merit.  I suspect that
> there are a lot of people who expect that 'SELECT * FROM pg_whatever'
> is going to show them all of the data in pg_whatever, and take a while
> to figure out that it really doesn't.  I know better and still mess
> this up with some regularity.  Anyone who finds it unintuitive that *
> doesn't really mean everything is going to be happier with this change
> in the long run.
> 
> In the short run, it is indeed possible that some catalog queries will
> break.  But, really, how many?  For the most part, automated queries
> written by tools probably select specific columns rather than
> everything, and IIUC those won't break.  And even if they do use
> 'SELECT *', won't they just end up with two copies of the OID column?
> That might work fine.
> 
> Of course it might not, and then you'd have to fix your code, but it's
> not obvious to me that this would be a horror show.

I tend to agree that this won't be as much of a horror show as made out
to be up-thread.  Tools should certainly be using explicit column names
and if they aren't then we're breaking them regularly anyway whenever
we change what columns exist in a given catalog table.

All the column renaming we did for v10 strikes me as a much bigger deal
than this change and while we did hear some complaints about that, I
certainly feel like it was worth it and that people generally
understood.

Thanks!

Stephen

Commits

  1. Revive test of concurrent OID generation.

  2. Fix typo introduced in 578b229718.

  3. Fix pg_upgrade for oid removal.

  4. Fix sepgsql compile error caused by oid removal.

  5. Remove WITH OIDS support, change oid catalog column visibility.