From: Kyotaro Horiguchi Date: Thu, 30 Apr 2020 14:06:51 +0900 Subject: [PATCH 1/2] Move tablespace cleanup out of pg_regress. Tablespace directory is cleaned-up in regress/GNUmakefile for all platforms other than Windows. For Windoiws pg_regress does that on behalf of make, which is ugly. In addition to that, pg_regress does the clean up twice at once. This patch moves the cleanup code out of pg_regress into vcregress.pl, which is more sutable place. --- src/test/regress/pg_regress.c | 22 ---------------------- src/tools/msvc/vcregress.pl | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index 38b2b1e8e1..c56bfaf7f5 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -491,28 +491,6 @@ convert_sourcefiles_in(const char *source_subdir, const char *dest_dir, const ch snprintf(testtablespace, MAXPGPATH, "%s/testtablespace", outputdir); -#ifdef WIN32 - - /* - * On Windows only, clean out the test tablespace dir, or create it if it - * doesn't exist. On other platforms we expect the Makefile to take care - * of that. (We don't migrate that functionality in here because it'd be - * harder to cope with platform-specific issues such as SELinux.) - * - * XXX it would be better if pg_regress.c had nothing at all to do with - * testtablespace, and this were handled by a .BAT file or similar on - * Windows. See pgsql-hackers discussion of 2008-01-18. - */ - if (directory_exists(testtablespace)) - if (!rmtree(testtablespace, true)) - { - fprintf(stderr, _("\n%s: could not remove test tablespace \"%s\"\n"), - progname, testtablespace); - exit(2); - } - make_directory(testtablespace); -#endif - /* finally loop on each file and do the replacement */ for (name = names; *name; name++) { diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index f95f7a5c7a..74d37a31de 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -104,6 +104,7 @@ exit 0; sub installcheck_internal { my ($schedule, @EXTRA_REGRESS_OPTS) = @_; + my @args = ( "../../../$Config/pg_regress/pg_regress", "--dlpath=.", @@ -114,6 +115,7 @@ sub installcheck_internal "--no-locale"); push(@args, $maxconn) if $maxconn; push(@args, @EXTRA_REGRESS_OPTS); + CleanupTablespaceDirectory(); system(@args); my $status = $? >> 8; exit $status if $status; @@ -143,6 +145,7 @@ sub check "--temp-instance=./tmp_check"); push(@args, $maxconn) if $maxconn; push(@args, $temp_config) if $temp_config; + CleanupTablespaceDirectory(); system(@args); my $status = $? >> 8; exit $status if $status; @@ -178,6 +181,7 @@ sub ecpgcheck sub isolationcheck { chdir "../isolation"; + CleanupTablespaceDirectory(); copy("../../../$Config/isolationtester/isolationtester.exe", "../../../$Config/pg_isolation_regress"); my @args = ( @@ -382,6 +386,7 @@ sub plcheck "$topdir/$Config/pg_regress/pg_regress", "--bindir=$topdir/$Config/psql", "--dbname=pl_regression", @lang_args, @tests); + CleanupTablespaceDirectory(); system(@args); my $status = $? >> 8; exit $status if $status; @@ -439,6 +444,7 @@ sub subdircheck print "============================================================\n"; print "Checking $module\n"; + CleanupTablespaceDirectory(); my @args = ( "$topdir/$Config/pg_regress/pg_regress", "--bindir=${topdir}/${Config}/psql", @@ -741,6 +747,14 @@ sub InstallTemp return; } +sub CleanupTablespaceDirectory +{ + my $tablespace = 'testtablespace'; + + rmtree($tablespace) if (-e $tablespace); + mkdir($tablespace); +} + sub usage { print STDERR -- 2.18.2 ----Next_Part(Mon_May_11_17_13_54_2020_626)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0002-Don-t-setup-tablespace-directory-while-testing-pg_up.patch"