postgresql/src/test
Tom Lane bfa3d27906 Create common infrastructure for cross-version upgrade testing.
To test pg_upgrade across major PG versions, we have to be able to
modify or drop any old objects with no-longer-supported properties,
and we have to be able to deal with cosmetic changes in pg_dump output.
Up to now, the buildfarm and pg_upgrade's own test infrastructure had
separate implementations of the former, and we had nothing but very
ad-hoc rules for the latter (including an arbitrary threshold on how
many lines of unchecked diff were okay!).  This patch creates a Perl
module that can be shared by both those use-cases, and adds logic
that deals with pg_dump output diffs in a much more tightly defined
fashion.

This largely supersedes previous efforts in commits 0df9641d3,
9814ff550, and 62be9e4cd, which developed a SQL-script-based solution
for the task of dropping old objects.  There was nothing fundamentally
wrong with that work in itself, but it had no basis for solving the
output-formatting problem.  The most plausible way to deal with
formatting is to build a Perl module that can perform editing on the
dump files; and once we commit to that, it makes more sense for the
same module to also embed the knowledge of what has to be done for
dropping old objects.

Back-patch versions of the helper module as far as 9.2, to
support buildfarm animals that still test that far back.
It's also necessary to back-patch PostgreSQL/Version.pm,
because the new code depends on that.  I fixed up pg_upgrade's
002_pg_upgrade.pl in v15, but did not look into back-patching
it further than that.

Tom Lane and Andrew Dunstan

Discussion: https://postgr.es/m/891521.1673657296@sss.pgh.pa.us
2023-01-16 20:35:53 -05:00
..
examples Client-side fixes for delayed NOTIFY receipt. 2018-10-19 22:22:57 -04:00
isolation Fix CREATE INDEX CONCURRENTLY for simultaneous prepared transactions. 2021-01-30 00:05:34 -08:00
locale Add a temp-install prerequisite to "check"-like targets not having one. 2017-11-05 18:54:52 -08:00
mb Revert "Fix broken multibyte regression tests." 2016-01-26 09:00:33 +09:00
modules doc: Fix naming of SELinux 2020-01-10 09:37:38 +09:00
perl Create common infrastructure for cross-version upgrade testing. 2023-01-16 20:35:53 -05:00
recovery Fix race in test of pg_switch_wal(). 2020-09-13 23:15:08 -07:00
regress Disallow converting an inheritance child table to a view. 2021-02-06 15:17:02 -05:00
ssl Fix searchpath and module location for pg_rewind and ssl TAP tests 2019-02-07 11:10:59 -05:00
thread Fix up .gitignore and cleanup actions in some src/test/ subdirectories. 2015-04-24 17:13:06 -04:00
Makefile Back-patch src/test/recovery and PostgresNode from 9.6 to 9.5. 2020-03-19 09:39:26 -07:00