Regression tests vs SERIALIZABLE

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Cc: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Date: 2021-03-15T04:24:08Z
Lists: pgsql-hackers

Attachments

Hi,

While reviewing the patch for parallel REFRESH MATERIALIZED VIEW, I
noticed that select_parallel.sql and write_parallel.sql believe that
(1) the tests are supposed to work with serializable as a default
isolation level, and (2) parallelism would be inhibited by that, so
they'd better use something else explicitly.  Here's a patch to update
that second thing in light of commit bb16aba5.  I don't think it
matters enough to bother back-patching it.

However, since commit 862ef372d6b, there *is* one test that fails if
you run make installcheck against a cluster running with -c
default_transaction_isolation=serializable: transaction.sql.  Is that
a mistake?  Is it a goal to be able to run this test suite against all
3 isolation levels?

@@ -1032,7 +1032,7 @@
 SHOW transaction_isolation;  -- out of transaction block
  transaction_isolation
 -----------------------
- read committed
+ serializable
 (1 row)

Commits

  1. Fix transaction.sql tests in higher isolation levels.

  2. Drop SERIALIZABLE workaround from parallel query tests.

  3. Fix behavior of AND CHAIN outside of explicit transaction blocks

  4. Enable parallel query with SERIALIZABLE isolation.