Re: Test to dump and restore objects left behind by regression

Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>

From: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
To: Daniel Gustafsson <daniel@yesql.se>
Cc: Michael Paquier <michael@paquier.xyz>, Tom Lane <tgl@sss.pgh.pa.us>, Peter Eisentraut <peter@eisentraut.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: 2025-01-15T12:29:55Z
Lists: pgsql-hackers

Attachments

On Tue, Dec 31, 2024 at 5:24 PM Ashutosh Bapat
<ashutosh.bapat.oss@gmail.com> wrote:
>
> On Fri, Dec 27, 2024 at 6:17 PM Daniel Gustafsson <daniel@yesql.se> wrote:
> >
> > > On 20 Dec 2024, at 11:01, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com> wrote:
> > > On Wed, Dec 18, 2024 at 7:39 PM Daniel Gustafsson <daniel@yesql.se> wrote:
> > >>
> > >>> On 18 Dec 2024, at 12:28, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com> wrote:
> >
> > >> +   if (   $ENV{PG_TEST_EXTRA}
> > >> +       && $ENV{PG_TEST_EXTRA} =~ /\bregress_dump_test\b/)
> > >> Should this also test that $oldnode and $newnode have matching pg_version to
> > >> keep this from running in a cross-version upgrade test?  While it can be argued
> > >> that running this in a cross-version upgrade is breaking it and getting to keep
> > >> both pieces, it's also not ideal to run a resource intensive test we know will
> > >> fail.  (It can't be done at this exact callsite, just picked to illustrate.)
> > >
> > > You already wrote it in parenthesis. At the exact callsite $oldnode
> > > and $newnode can not be of different versions. In fact newnode is yet
> > > to be created at this point. But $oldnode has the same version as the
> > > server run from the code. In a cross-version upgrade this test will
> > > not be executed. I am confused as to what this comment is about.
> >
> > Sure, it can't be checked until $newnode is created, but it seems like a cheap
> > test to ensure it's not executed as part of someones cross-version tests.
>
> Hmm. The new node is always the node created with the version of code.
> It's the old node which may have a different version. Hence I added
> code to compare the versions of source node (which is the oldnode) and
> destination node (which is created the same way as the new node and
> hence has the same version as the new node) in
> test_regression_dump_restore() itself. Additionally the code makes
> sure that the oldnode doesn't use a custom install path. This is 0002
> patch. 0001 in this patchset is 0001 + 0002 in the earlier patch set.

Here's a rebased patch with some cosmetic fixes, typos and grammar
fixes after a self review. I have squashed all the patches into a
single patch now.

-- 
Best Wishes,
Ashutosh Bapat

Commits

  1. Hide expensive pg_upgrade test behind PG_TEST_EXTRA

  2. Set log_statement=none in t/002_pg_upgrade.pl

  3. 002_pg_upgrade.pl: Move pg_dump test code for better stability

  4. 002_pg_upgrade.pl: rename some variables for clarity

  5. Verify roundtrip dump/restore of regression database

  6. Refactor TAP test code for file comparisons into new routine in Utils.pm

  7. Virtual generated columns

  8. Put generated_stored test objects in a schema

  9. Introduce "builtin" collation provider.

  10. Revert "Improve compression and storage support with inheritance"