Hi Hans,
I'm not sure I "trust" pg_upgrade, entirely, when it comes to
the "universe of potential databases/sets" it might encounter.
E.g., I have several custom base types that I use. So, as part of
each upgrade, I dig through the sources to see what, if anything,
in the "type interface" may have changed to be sure my existing
types will continue to work when imported to the new implementation.
I find the dump + reload option is the most reassuring one (to me)
as I *know* that my code will rexamine the dumped data as it is
being reloaded. I don't have to worry that some subtle change
will bite me *after* it's in place (without a way of returning to
the known, working configuration).
And, of course, pg_upgrade doesn't help you *build* the new
binaries (which Matthew might require)