]> granicus.if.org Git - postgresql/commitdiff
Tweak placement of explicit ANALYZE commands in the regression tests.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 11 Dec 2013 20:08:38 +0000 (15:08 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 11 Dec 2013 20:08:38 +0000 (15:08 -0500)
Make the COPY test, which loads most of the large static tables used in
the tests, also explicitly ANALYZE those tables.  This allows us to get
rid of various ad-hoc, and rather redundant, ANALYZE commands that had
gotten stuck into various test scripts over time to ensure we got
consistent plan choices.  (We could have done a database-wide ANALYZE,
but that would cause stats to get attached to the small static tables
too, which results in plan changes compared to the historical behavior.
I'm not sure that's a good idea, so not going that far for now.)

Back-patch to 9.0, since 9.0 and 9.1 are currently sometimes failing
regression tests for lack of an "ANALYZE tenk1" in the subselect test.
There's no need for this in 8.4 since we didn't print any plans back
then.

12 files changed:
src/test/regress/expected/aggregates.out
src/test/regress/expected/alter_table.out
src/test/regress/expected/arrays.out
src/test/regress/expected/create_index.out
src/test/regress/expected/join.out
src/test/regress/input/copy.source
src/test/regress/output/copy.source
src/test/regress/sql/aggregates.sql
src/test/regress/sql/alter_table.sql
src/test/regress/sql/arrays.sql
src/test/regress/sql/create_index.sql
src/test/regress/sql/join.sql

index b6d79ca387ffb3fb09eb76ba6c9a0ffb10461c31..6f0d20fbae73c855487d2167269c96894939cdb6 100644 (file)
@@ -445,7 +445,6 @@ FROM bool_test;
 -- Test cases that should be optimized into indexscans instead of
 -- the generic aggregate implementation.
 --
-analyze tenk1;         -- ensure we get consistent plans here
 -- Basic cases
 explain (costs off)
   select min(unique1) from tenk1;
index 68d30acc1e4b7b1d857d2518eaac5284ff6313c7..896b5b25d00c13bc71c876879093e1912f7d1f06 100644 (file)
@@ -140,7 +140,6 @@ ALTER INDEX tmp_onek_unique1 RENAME TO onek_unique1;
 CREATE VIEW tmp_view (unique1) AS SELECT unique1 FROM tenk1;
 ALTER TABLE tmp_view RENAME TO tmp_view_new;
 -- hack to ensure we get an indexscan here
-ANALYZE tenk1;
 set enable_seqscan to off;
 set enable_bitmapscan to off;
 -- 5 values, sorted
index 9865b69b8b8364f57a4d16f44aebf75dee6571a7..6e5534995d909fa172fe69466f72d8835c1c7080 100644 (file)
@@ -421,7 +421,6 @@ SELECT 0 || ARRAY[1,2] || 3 AS "{0,1,2,3}";
  {0,1,2,3}
 (1 row)
 
-ANALYZE array_op_test;
 SELECT * FROM array_op_test WHERE i @> '{32}' ORDER BY seqno;
  seqno |                i                |                                                                 t                                                                  
 -------+---------------------------------+------------------------------------------------------------------------------------------------------------------------------------
index 194c6723c4a661ad012759650ee48f23ef1cbf9b..da3bdfbe07ce69a7b85f0d15363fb9f0a1bcb4db 100644 (file)
@@ -2699,7 +2699,7 @@ SELECT count(*) FROM dupindexcols
 --
 -- Check ordering of =ANY indexqual results (bug in 9.2.0)
 --
-vacuum analyze tenk1;          -- ensure we get consistent plans here
+vacuum tenk1;          -- ensure we get consistent plans here
 explain (costs off)
 SELECT unique1 FROM tenk1
 WHERE unique1 IN (1,42,7)
index 8ea15e86277de8ba64f0411b363d204862650d6b..e292ef05f6b05e182cff4dfab8fb43fc9961eb16 100644 (file)
@@ -2129,7 +2129,6 @@ on (x1 = xx1) where (xx2 is not null);
 -- regression test: check for bug with propagation of implied equality
 -- to outside an IN
 --
-analyze tenk1;         -- ensure we get consistent plans here
 select count(*) from tenk1 a where unique1 in
   (select unique1 from tenk1 b join tenk1 c using (unique1)
    where b.unique2 = 42);
index ab3f5083e8d20a5af1ed0288a54a359daa0c262e..80f911fea85281692f5ea36c09cef6861b07e9e4 100644 (file)
@@ -60,6 +60,31 @@ COPY array_op_test FROM '@abs_srcdir@/data/array.data';
 
 COPY array_index_op_test FROM '@abs_srcdir@/data/array.data';
 
+-- analyze all the data we just loaded, to ensure plan consistency
+-- in later tests
+
+ANALYZE aggtest;
+ANALYZE onek;
+ANALYZE tenk1;
+ANALYZE slow_emp4000;
+ANALYZE person;
+ANALYZE emp;
+ANALYZE student;
+ANALYZE stud_emp;
+ANALYZE road;
+ANALYZE real_city;
+ANALYZE hash_i4_heap;
+ANALYZE hash_name_heap;
+ANALYZE hash_txt_heap;
+ANALYZE hash_f8_heap;
+ANALYZE test_tsvector;
+ANALYZE bt_i4_heap;
+ANALYZE bt_name_heap;
+ANALYZE bt_txt_heap;
+ANALYZE bt_f8_heap;
+ANALYZE array_op_test;
+ANALYZE array_index_op_test;
+
 --- test copying in CSV mode with various styles
 --- of embedded line ending characters
 
index febca712bb559c93212f8d9973c27061b9ba99b1..e8951c5b739962cda90f3983aa0de229d0b8d7f0 100644 (file)
@@ -34,6 +34,29 @@ COPY bt_txt_heap FROM '@abs_srcdir@/data/desc.data';
 COPY bt_f8_heap FROM '@abs_srcdir@/data/hash.data';
 COPY array_op_test FROM '@abs_srcdir@/data/array.data';
 COPY array_index_op_test FROM '@abs_srcdir@/data/array.data';
+-- analyze all the data we just loaded, to ensure plan consistency
+-- in later tests
+ANALYZE aggtest;
+ANALYZE onek;
+ANALYZE tenk1;
+ANALYZE slow_emp4000;
+ANALYZE person;
+ANALYZE emp;
+ANALYZE student;
+ANALYZE stud_emp;
+ANALYZE road;
+ANALYZE real_city;
+ANALYZE hash_i4_heap;
+ANALYZE hash_name_heap;
+ANALYZE hash_txt_heap;
+ANALYZE hash_f8_heap;
+ANALYZE test_tsvector;
+ANALYZE bt_i4_heap;
+ANALYZE bt_name_heap;
+ANALYZE bt_txt_heap;
+ANALYZE bt_f8_heap;
+ANALYZE array_op_test;
+ANALYZE array_index_op_test;
 --- test copying in CSV mode with various styles
 --- of embedded line ending characters
 create temp table copytest (
index e33b36bad11c7a625fe711f02a9189a59861c4b3..bfda284bf4a27bd77b5b5ffd438629dd487ba6c3 100644 (file)
@@ -208,7 +208,6 @@ FROM bool_test;
 -- Test cases that should be optimized into indexscans instead of
 -- the generic aggregate implementation.
 --
-analyze tenk1;         -- ensure we get consistent plans here
 
 -- Basic cases
 explain (costs off)
index 404fa95e3f186ae940143c1607361e7cc0f692ba..84529c0530f1fc82c0f93b100a759ed90c16add7 100644 (file)
@@ -178,7 +178,6 @@ CREATE VIEW tmp_view (unique1) AS SELECT unique1 FROM tenk1;
 ALTER TABLE tmp_view RENAME TO tmp_view_new;
 
 -- hack to ensure we get an indexscan here
-ANALYZE tenk1;
 set enable_seqscan to off;
 set enable_bitmapscan to off;
 -- 5 values, sorted
index 294b44ee086f415b396c67942e2dd8ec8443453a..9ea53b1544bbcbddaee0370f6a03060cf0fbc071 100644 (file)
@@ -196,8 +196,6 @@ SELECT ARRAY[[1,2],[3,4]] || ARRAY[5,6] AS "{{1,2},{3,4},{5,6}}";
 SELECT ARRAY[0,0] || ARRAY[1,1] || ARRAY[2,2] AS "{0,0,1,1,2,2}";
 SELECT 0 || ARRAY[1,2] || 3 AS "{0,1,2,3}";
 
-ANALYZE array_op_test;
-
 SELECT * FROM array_op_test WHERE i @> '{32}' ORDER BY seqno;
 SELECT * FROM array_op_test WHERE i && '{32}' ORDER BY seqno;
 SELECT * FROM array_op_test WHERE i @> '{17}' ORDER BY seqno;
index c6ca01c8b464a4297fcedc69c68810995b001a69..6835c884c6e12491610c98f95ba2d25e28811b86 100644 (file)
@@ -896,7 +896,7 @@ SELECT count(*) FROM dupindexcols
 -- Check ordering of =ANY indexqual results (bug in 9.2.0)
 --
 
-vacuum analyze tenk1;          -- ensure we get consistent plans here
+vacuum tenk1;          -- ensure we get consistent plans here
 
 explain (costs off)
 SELECT unique1 FROM tenk1
index 1868b6d8e252582e4f392189295b7796152d2bc4..316a6e93d719180b653af945d03504225b8ee31c 100644 (file)
@@ -330,8 +330,6 @@ on (x1 = xx1) where (xx2 is not null);
 -- regression test: check for bug with propagation of implied equality
 -- to outside an IN
 --
-analyze tenk1;         -- ensure we get consistent plans here
-
 select count(*) from tenk1 a where unique1 in
   (select unique1 from tenk1 b join tenk1 c using (unique1)
    where b.unique2 = 42);