Hi all, Trying to do pg_dump[all] on a 9.5 or older server results in spurious failures: pg_dump: column number -1 is out of range 0..36
After looking around, the problem comes from check_tuple_field_number(), more specifically from getTables() where someone has forgotten to add NULL values for amname when querying older server versions. Attached is a patch to fix that. I am not seeing other failures with an instance that includes all the contents of installcheck, so it seems that the rest is fine. This needs to be applied to HEAD, so I am adding an open item. Any objections to the attached? -- Michael
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index e8ce719a0a..a17f6490a4 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -6112,6 +6112,7 @@ getTables(Archive *fout, int *numTables) "tc.relminmxid AS tminmxid, " "c.relpersistence, c.relispopulated, " "c.relreplident, c.relpages, " + "NULL AS amname, " "CASE WHEN c.reloftype <> 0 THEN c.reloftype::pg_catalog.regtype ELSE NULL END AS reloftype, " "d.refobjid AS owning_tab, " "d.refobjsubid AS owning_col, " @@ -6161,6 +6162,7 @@ getTables(Archive *fout, int *numTables) "tc.relminmxid AS tminmxid, " "c.relpersistence, c.relispopulated, " "c.relreplident, c.relpages, " + "NULL AS amname, " "CASE WHEN c.reloftype <> 0 THEN c.reloftype::pg_catalog.regtype ELSE NULL END AS reloftype, " "d.refobjid AS owning_tab, " "d.refobjsubid AS owning_col, " @@ -6210,6 +6212,7 @@ getTables(Archive *fout, int *numTables) "tc.relminmxid AS tminmxid, " "c.relpersistence, c.relispopulated, " "'d' AS relreplident, c.relpages, " + "NULL AS amname, " "CASE WHEN c.reloftype <> 0 THEN c.reloftype::pg_catalog.regtype ELSE NULL END AS reloftype, " "d.refobjid AS owning_tab, " "d.refobjsubid AS owning_col, " @@ -6259,6 +6262,7 @@ getTables(Archive *fout, int *numTables) "0 AS tminmxid, " "c.relpersistence, 't' as relispopulated, " "'d' AS relreplident, c.relpages, " + "NULL AS amname, " "CASE WHEN c.reloftype <> 0 THEN c.reloftype::pg_catalog.regtype ELSE NULL END AS reloftype, " "d.refobjid AS owning_tab, " "d.refobjsubid AS owning_col, " @@ -6306,6 +6310,7 @@ getTables(Archive *fout, int *numTables) "0 AS tminmxid, " "'p' AS relpersistence, 't' as relispopulated, " "'d' AS relreplident, c.relpages, " + "NULL AS amname, " "CASE WHEN c.reloftype <> 0 THEN c.reloftype::pg_catalog.regtype ELSE NULL END AS reloftype, " "d.refobjid AS owning_tab, " "d.refobjsubid AS owning_col, " @@ -6352,6 +6357,7 @@ getTables(Archive *fout, int *numTables) "0 AS tminmxid, " "'p' AS relpersistence, 't' as relispopulated, " "'d' AS relreplident, c.relpages, " + "NULL AS amname, " "NULL AS reloftype, " "d.refobjid AS owning_tab, " "d.refobjsubid AS owning_col, " @@ -6398,6 +6404,7 @@ getTables(Archive *fout, int *numTables) "0 AS tminmxid, " "'p' AS relpersistence, 't' as relispopulated, " "'d' AS relreplident, c.relpages, " + "NULL AS amname, " "NULL AS reloftype, " "d.refobjid AS owning_tab, " "d.refobjsubid AS owning_col, " @@ -6443,6 +6450,7 @@ getTables(Archive *fout, int *numTables) "0 AS tfrozenxid, 0 AS tminmxid," "'p' AS relpersistence, 't' as relispopulated, " "'d' AS relreplident, relpages, " + "NULL AS amname, " "NULL AS reloftype, " "d.refobjid AS owning_tab, " "d.refobjsubid AS owning_col, "
signature.asc
Description: PGP signature