Re: Re: [COMMITTERS] pgsql: Remove old-style VACUUM FULL (which was known for a little while

From: Greg Smith <greg(at)2ndquadrant(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Simon Riggs <simon(at)2ndquadrant(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Re: [COMMITTERS] pgsql: Remove old-style VACUUM FULL (which was known for a little while
Date: 2010-02-13 08:34:23
Message-ID: 4B76640F.1080404@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

Robert Haas wrote:
> Recording some bookkeeping information in pg_class so that pg_migrator can tell what's going on
> at a glance seems like the right approach, but I'm fuzzy on the details.
>

November of 2008 was a pretty good month for me, so I enjoyed this
flashback to it. That's when the path for how to handle space
reservation wandered to this same place and then died there: how to
know for sure what information to put into the catalog for the upgrade
utility, before the upgrade utility exists. Message from Bruce at
http://archives.postgresql.org/message-id/200901300457.n0U4v1707979@momjian.us
and my follow-up summarized/linked to the highlights of the earlier
discussion on that one.

This time around, the way the upgrade is being staged allows a possible
path through this dependency chain, as noted by Tom:

> It would probably be useful to have a utility that runs *in 9.0* and
> gets rid of MOVED bits, so that we could drop support for them in 9.1.
> But it's not happening for 9.0.

As long as this one gets deprecated nicely here--so the server still
knows how to deal with the ugly parts, but will not introduce any more
of them--this should make for a good test case to gain experience with
handling this whole class of problem. If the above exercise finishes
with a clear "had we just recorded <x> in the catalog before 9.0 came
out we could have done this more easily", I think it would be much more
likely that a future "we should record <y> in the catalog to improve the
odds of adding this feature in a way that can upgrade to it in-place"
decision might get made correctly in advance of the upgrade utility
actually existing. Right now, just like the 8.4 case, it seems quite
possible no one will develop a plan in time they can prove will work
well enough to justify adding speculative catalog support for it. Much
easier to figure that out in retrospect though, after the matching
utility that uses the data exists.

If you think through the implications of that far enough, eventually you
start to realize that you really can't even add a feature that requires
an in-place upgrade hack to fix without first having the code that
performs said hack done. Otherwise you're never completely sure that
you put the right catalog pieces and related support code into the
version you want to upgrade from. This is why it's not unheard of for
commercial database products to require a working in-place upgrade code
*before* the feature change gets committed.

In this case, we get a lucky break in that it's easy to leave support
for old path in there and punt the problem for now. I hope that we all
learn something useful about this class of issue during this opportunity
to get away with that with little downside.

--
Greg Smith 2ndQuadrant Baltimore, MD
PostgreSQL Training, Services and Support
greg(at)2ndQuadrant(dot)com www.2ndQuadrant.com

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Simon Riggs 2010-02-13 16:15:49 pgsql: Fix relcache init file invalidation during Hot Standby for the
Previous Message Bruce Momjian 2010-02-13 03:38:26 pgsql: Remove tabs from sgml.

Browse pgsql-hackers by date

  From Date Subject
Next Message Greg Smith 2010-02-13 08:45:33 Re: Confusion over Python drivers {license}
Previous Message Hitoshi Harada 2010-02-13 06:42:05 Re: review: More frame options in window functions