Properly dump dropped foreign table cols in binary-upgrade mode.
In binary upgrade mode, we need to recreate and then drop dropped columns so that all the columns get the right attribute number. This is true for foreign tables as well as for native tables. For foreign tables we have been getting the first part right but not the second, leading to bogus columns in the upgraded database. Fix this all the way back to 9.1, where foreign tables were introduced.
This commit is contained in:
parent
3f145f6be3
commit
1c6afc40f7
@ -12440,7 +12440,8 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
|
||||
* attislocal correctly, plus fix up any inherited CHECK constraints.
|
||||
* Analogously, we set up typed tables using ALTER TABLE / OF here.
|
||||
*/
|
||||
if (binary_upgrade && tbinfo->relkind == RELKIND_RELATION)
|
||||
if (binary_upgrade && (tbinfo->relkind == RELKIND_RELATION ||
|
||||
tbinfo->relkind == RELKIND_FOREIGN_TABLE) )
|
||||
{
|
||||
for (j = 0; j < tbinfo->numatts; j++)
|
||||
{
|
||||
@ -12458,8 +12459,13 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
|
||||
appendStringLiteralAH(q, fmtId(tbinfo->dobj.name), fout);
|
||||
appendPQExpBuffer(q, "::pg_catalog.regclass;\n");
|
||||
|
||||
appendPQExpBuffer(q, "ALTER TABLE ONLY %s ",
|
||||
fmtId(tbinfo->dobj.name));
|
||||
if (tbinfo->relkind == RELKIND_RELATION)
|
||||
appendPQExpBuffer(q, "ALTER TABLE ONLY %s ",
|
||||
fmtId(tbinfo->dobj.name));
|
||||
else
|
||||
appendPQExpBuffer(q, "ALTER FOREIGN TABLE %s ",
|
||||
fmtId(tbinfo->dobj.name));
|
||||
|
||||
appendPQExpBuffer(q, "DROP COLUMN %s;\n",
|
||||
fmtId(tbinfo->attnames[j]));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user