]> granicus.if.org Git - postgresql/commitdiff
Clean up duplicate table and function names in regression tests.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 15 Mar 2018 21:08:51 +0000 (17:08 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 15 Mar 2018 21:09:04 +0000 (17:09 -0400)
Many of the objects we create during the regression tests are put in the
public schema, so that using the same names in different regression tests
creates a hazard of test failures if any two such scripts run concurrently.
This patch cleans up a bunch of latent hazards of that sort, as well as two
live hazards.

The current situation in this regard is far worse than it was a year or two
back, because practically all of the partitioning-related test cases have
reused table names with enthusiasm.  I despaired of cleaning up that mess
within the five most-affected tests (create_table, alter_table, insert,
update, inherit); fortunately those don't run concurrently.

Other than partitioning problems, most of the issues boil down to using
names like "foo", "bar", "tmp", etc, without thought for the fact that
other test scripts might use similar names concurrently.  I've made an
effort to make all such names more specific.

One of the live hazards was that commit 7421f4b8 caused with.sql to
create a table named "test", conflicting with a similarly-named table
in alter_table.sql; this was exposed in the buildfarm recently.
The other one was that join.sql and transactions.sql both create tables
named "foo" and "bar"; but join.sql's uses of those names date back
only to December or so.

Since commit 7421f4b8 was back-patched to v10, back-patch a minimal
fix for that problem.  The rest of this is just future-proofing.

Discussion: https://postgr.es/m/4627.1521070268@sss.pgh.pa.us

src/test/regress/expected/with.out
src/test/regress/sql/with.sql

index 3e2b34c6fcdd92aaf468b693c295faf3436c54c3..0646451fb0bc9b54765dad6b38d6522ed857ed5d 100644 (file)
@@ -2280,7 +2280,7 @@ LINE 1: WITH test AS (SELECT 42) INSERT INTO test VALUES (1);
 -- check response to attempt to modify table with same name as a CTE (perhaps
 -- surprisingly it works, because CTEs don't hide tables from data-modifying
 -- statements)
-create table test (i int);
+create temp table test (i int);
 with test as (select 42) insert into test select * from test;
 select * from test;
  i  
index baf65488a8edd9efd078f9422cd2cd8987b6f5a1..512ff1b3ba20c46e456e423203d587254e4ceb1e 100644 (file)
@@ -1035,7 +1035,7 @@ WITH test AS (SELECT 42) INSERT INTO test VALUES (1);
 -- check response to attempt to modify table with same name as a CTE (perhaps
 -- surprisingly it works, because CTEs don't hide tables from data-modifying
 -- statements)
-create table test (i int);
+create temp table test (i int);
 with test as (select 42) insert into test select * from test;
 select * from test;
 drop table test;