Martin,
This looks really good. I wish it were going into Sarge, though of
course the timing isn't right for that. :)
A couple things I noticed about the automated upgrade procedure
(pg_version_upgrade):
1) Since it uses pg_dumpall, it doesn't seem to be capable of handling
databases with large objects (these have to be dumped individually
using one of the non-text dump formats and the -b option).
Furthermore, I believe it will fail silently, as pg_dumpall will
simply leave out the pg_largeobject table and return success for
such databases, which will be left with dangling LO references.
2) It is fairly commonly recommended, when doing a dump/restore
upgrade, to use the new version's pg_dump to dump out the old
database, as that generally makes it easier to load into the new
version without manual surgery on the dump file. The sentence "All
operations are done with the software version appropriate to the
cluster version." in the document seems to preclude this option.
Thanks for putting so much thought into this!
-Doug