]> 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:33 +0000 (15:08 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 11 Dec 2013 20:09:15 +0000 (15:09 -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 e17881c59f40d53f498528ae2f0758d1bc8059a4..c05b39cb89dad096b60076ce96fcd7adaa5fbe09 100644 (file)
@@ -506,7 +506,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 232a233be54834c93c8be8f8cdf0efb37421c32d..0f0c638fa5deb96dc71dd0b97f41328573ffcbb8 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 d47861e3dde7b02a9c8c52a52e1f3e9a8627d6f7..23b3902017bd5a383087a93c67fe710861fb5527 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 b7b92036bb75b5f88d79ec9cbb158c7fe1e77e68..d10253b9e9b94220e2a18ad6344fe6113d327a87 100644 (file)
@@ -2715,7 +2715,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 c3598e2d252e0d6062be2d40fdfe672e0dd4ce31..85113a940e9b8c266aace9da625f5194a8b8aec4 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 1bbe073351cb1bf0ec59c4d2fd6684d53de84a0c..f99a07d9833718ca3b2e7ad00b1274f3ebb5a392 100644 (file)
@@ -220,7 +220,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 b55543076f9ac68db07fc0df447f3bcda4511dcb..87973c19550d67450fbe8a2305c20c982361ed17 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 5a5a5825d555ef8c8448935a9dec808e75aff040..e4f9f316ce42102dfcf948a1b65e543204607c1d 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 54f9161ab1e724002d07d67bc2af327fe0759b33..8ac1d1d280f6516856ca0884f9ba5d950092d232 100644 (file)
@@ -898,7 +898,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 6ae37f56381cadc3546e8f4ed59433206c97fdcc..718175b0c0b99870960998248633b52d883dbc23 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);