On Thu, May 9, 2013 at 06:19:31PM -0400, Bruce Momjian wrote: > > pg_upgrade already deals with the new code deciding not to create a > > toast table (by forcing it to do so anyway in binary upgrade mode). > > Yes, a good point I had forgotten. postgres --binary-upgrade mode can > force the toast table to be created to match the old cluster; see > toasting.c::create_toast_table(): > > /* > * Check to see whether the table actually needs a TOAST table. > * > * If an update-in-place toast relfilenode is specified, force toast file > * creation even if it seems not to need one. > */ > if (!needs_toast_table(rel) && > (!IsBinaryUpgrade || > !OidIsValid(binary_upgrade_next_toast_pg_class_oid))) > return false; > > > It's only the other case that's problematic -- but then AFAICS fixing > > that is just a SMOP. > > Yes, it is this opposite case where the _new_ cluster wants a TOAST > table that the old cluster doesn't have, which is what Evan is > reporting.
So, if we eventually agree we need to be able to _suppress_ creation of the TOAST table on the new cluster, I propose we do it in a similar way to how we force TOAST creation, by having pg_dump set a backend variable that is then tested in the backend to suppress TOAST table creation. I don't think we know enough about the cause of this pg_upgrade failure to know if this is necessary. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. + -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers