ANALYZE a_star and its children to avoid plan instability in tests.
authorTom Lane <[email protected]>
Fri, 27 Sep 2019 15:28:24 +0000 (11:28 -0400)
committerTom Lane <[email protected]>
Fri, 27 Sep 2019 15:28:24 +0000 (11:28 -0400)
We've noted certain EXPLAIN queries on these tables occasionally showing
unexpected plan choices.  This seems to happen because VACUUM sometimes
fails to update relpages/reltuples for one of these single-page tables,
due to bgwriter or checkpointer holding a pin on the lone page at just
the wrong time.  To ensure those values get set, insert explicit ANALYZE
operations on these tables after we finish populating them.  This
doesn't seem to affect any other test cases, so it's a usable fix.

Back-patch to v12.  In principle the issue exists further back, but
we have not seen it before v12, so I won't risk back-patching further.

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

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

index 8366841ff0455dbdc26b782874e24c552c0afeca..cee35ed02f161993a5e7656de597bef5d90a4f4c 100644 (file)
@@ -130,6 +130,13 @@ INSERT INTO f_star (class, e) VALUES ('f', '-12'::int2);
 INSERT INTO f_star (class, f)
    VALUES ('f', '(11111111,33333333),(22222222,44444444)'::polygon);
 INSERT INTO f_star (class) VALUES ('f');
+-- Analyze the X_star tables for better plan stability in later tests
+ANALYZE a_star;
+ANALYZE b_star;
+ANALYZE c_star;
+ANALYZE d_star;
+ANALYZE e_star;
+ANALYZE f_star;
 --
 -- for internal portal (cursor) tests
 --
index d4a63b7aed2c645f6b7c03c11663e1a429fad905..d0b04a821f8115b54b0bbd5ffd0ceb79f4d2ec6a 100644 (file)
@@ -192,6 +192,14 @@ INSERT INTO f_star (class, f)
 
 INSERT INTO f_star (class) VALUES ('f');
 
+-- Analyze the X_star tables for better plan stability in later tests
+ANALYZE a_star;
+ANALYZE b_star;
+ANALYZE c_star;
+ANALYZE d_star;
+ANALYZE e_star;
+ANALYZE f_star;
+
 
 --
 -- for internal portal (cursor) tests