From 624edab582886a40a2a07e4949be82b3d6fe5f1f Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Wed, 3 Apr 2019 17:06:01 -0700 Subject: [PATCH] Handle USE_MODULE_DB for all tests able to use an installed postmaster. When $(MODULES) and $(MODULE_big) are empty, derive the database name from the first element of $(REGRESS) instead of using a constant string. When deriving the database name from $(MODULES), use its first element instead of the entire list; the earlier approach would fail if any multi-module directory had $(REGRESS) tests. Treat isolation suites and src/pl correspondingly. Under USE_MODULE_DB=1, installcheck-world and check-world no longer reuse any database name in a given postmaster. Buildfarm members axolotl, mandrill and frogfish saw spurious "is being accessed by other users" failures that would not have happened without database name reuse. (The CountOtherDBBackends() 5s deadline expired during DROP DATABASE; a backend for an earlier test suite had used the same database name and had not yet exited.) Back-patch to 9.4 (all supported versions), except bits pertaining to isolation suites. Concept reviewed by Andrew Dunstan, Andres Freund and Tom Lane. Discussion: https://postgr.es/m/20190401135213.GE891537@rfd.leadboat.com --- src/Makefile.global.in | 21 +++++++++++++-------- src/makefiles/pgxs.mk | 7 +------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Makefile.global.in b/src/Makefile.global.in index ff47d5c4e7b..b4a2f9c8795 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -512,16 +512,21 @@ submake-libpgport: # # Testing support -PL_TESTDB = pl_regression -CONTRIB_TESTDB = contrib_regression -ifneq ($(MODULE_big),) - CONTRIB_TESTDB_MODULE = contrib_regression_$(MODULE_big) -else - ifneq ($(MODULES),) - CONTRIB_TESTDB_MODULE = contrib_regression_$(MODULES) +ifneq ($(USE_MODULE_DB),) + PL_TESTDB = pl_regression_$(NAME) + # Replace this with $(or ...) if we ever require GNU make 3.81. + ifneq ($(MODULE_big),) + CONTRIB_TESTDB=contrib_regression_$(MODULE_big) else - CONTRIB_TESTDB_MODULE = contrib_regression + ifneq ($(MODULES),) + CONTRIB_TESTDB=contrib_regression_$(word 1,$(MODULES)) + else + CONTRIB_TESTDB=contrib_regression_$(word 1,$(REGRESS)) + endif endif +else + PL_TESTDB = pl_regression + CONTRIB_TESTDB = contrib_regression endif ifdef NO_LOCALE diff --git a/src/makefiles/pgxs.mk b/src/makefiles/pgxs.mk index faa7dd9b987..424741f9d5c 100644 --- a/src/makefiles/pgxs.mk +++ b/src/makefiles/pgxs.mk @@ -256,12 +256,7 @@ distclean maintainer-clean: clean ifdef REGRESS -# Select database to use for running the tests -ifneq ($(USE_MODULE_DB),) - REGRESS_OPTS += --dbname=$(CONTRIB_TESTDB_MODULE) -else - REGRESS_OPTS += --dbname=$(CONTRIB_TESTDB) -endif +REGRESS_OPTS += --dbname=$(CONTRIB_TESTDB) # where to find psql for running the tests PSQLDIR = $(bindir)