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

From: Greg Stark <gsstark(at)mit(dot)edu>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: Greg Smith <greg(at)2ndquadrant(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, 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: [COMMITTERS] pgsql: Remove old-style VACUUM FULL (which was known for a little while
Date: 2010-02-16 15:17:33
Message-ID: 407d949e1002160717jf5612d4l8853378c2087f87b@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

On Tue, Feb 16, 2010 at 2:04 PM, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
> The MOVE_* bits go away after a while by vacuum and there is an easy
> solution for 9.1 --- vacuum everything in 9.0.  Where things really get
> hard is when we have to support two page formats or two data formats in
> the same database.  You might think we will never get there, but there
> have been such changes in the past, and I suspect that we will have them
> in the future, maybe not in 9.1, but perhaps 9.3.

I think a O(size of database) step in the upgrade process is
acceptable iff it can be performed while the database is operational.

In this case that would mean having some code in 8.4.3 to prevent
VACUUM FULL from being used once a flag indicating that a migration is
under way. Then you would have to vacuum every table which would set a
flag indicating that no MOVED_* bits were set. Then pg_migrator would
check that that flag was set on every table before allowing you to
migrate.

This might actually be a reasonable thing to put in 9.0. We already
have the code to prevent you from running VACUUM FULL -- namely that
it doesn't exist any longer. And I think we can tell whether there are
any MOVED_* bits set by looking at the vacuum freeze age of the table.
The only thing we're missing is the youngest xid seen in 8.4 before
the 9.0 migration.

--
greg

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Meskes 2010-02-16 18:41:23 pgsql: Do not check nan values for infinity.
Previous Message Bruce Momjian 2010-02-16 14:04:11 Re: Re: [COMMITTERS] pgsql: Remove old-style VACUUM FULL (which was known for a little while

Browse pgsql-hackers by date

  From Date Subject
Next Message Pavel Stehule 2010-02-16 15:22:06 9.0 - core dump - plpgsql - #option dump
Previous Message Tom Lane 2010-02-16 15:17:14 Re: OpenVMS?