dobjcmp10-demo-v0.patch.noci
text/plain
Filename: dobjcmp10-demo-v0.patch.noci
Type: text/plain
Part: 0
From: Noah Misch <noah@leadboat.com>
Demo 002_pg_upgrade.pl schema diffs from using OID in pg_dump sort.
Not for commit. This reverses the pg_dump OID sort for one side of the
diff, simulating a worst case for "pg_restore -j" perturbing OID order.
diff --git a/src/bin/pg_dump/pg_dump_sort.c b/src/bin/pg_dump/pg_dump_sort.c
index 0b09777..a3d49a5 100644
--- a/src/bin/pg_dump/pg_dump_sort.c
+++ b/src/bin/pg_dump/pg_dump_sort.c
@@ -319,7 +319,8 @@ DOTypeNameCompare(const void *p1, const void *p2)
}
/* Usually shouldn't get here, but if we do, sort by OID */
- return oidcmp(obj1->catId.oid, obj2->catId.oid);
+ return (oidcmp(obj1->catId.oid, obj2->catId.oid) *
+ (getenv("PGTEST_DUMP_FALLBACK_REVERSE") ? -1 : 1));
}
diff --git a/src/bin/pg_upgrade/t/002_pg_upgrade.pl b/src/bin/pg_upgrade/t/002_pg_upgrade.pl
index 7d82593..6a22731 100644
--- a/src/bin/pg_upgrade/t/002_pg_upgrade.pl
+++ b/src/bin/pg_upgrade/t/002_pg_upgrade.pl
@@ -413,8 +413,12 @@ SKIP:
# Dump original and restored database for comparison.
my $src_dump =
get_dump_for_comparison($oldnode, 'regression', 'src_dump', 1);
- my $dst_dump =
- get_dump_for_comparison($dstnode, 'regression', 'dest_dump', 0);
+ my $dst_dump;
+ {
+ local $ENV{PGTEST_DUMP_FALLBACK_REVERSE} = 1;
+ $dst_dump =
+ get_dump_for_comparison($dstnode, 'regression', 'dest_dump', 0);
+ }
compare_files($src_dump, $dst_dump,
'dump outputs from original and restored regression databases match');