Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitcefb82d

Browse files
committed
Attempt to stabilize partitionwise_aggregate test
Inb07642d, we added code to trigger autovacuums based on the number ofINSERTs into a table. This seems to have cause some destabilization ofthe regression tests. Likely this is due to an autovacuum triggeringmid-test and (per theory from Tom Lane) one of the test's queries causesautovacuum to skip some number of pages, resulting in the reltuplesestimate changing.The failure that this is attempting to fix is around the order of subnodesin an Append. Since the planner orders these according to the subnodecost, then it's possible that a small change in the reltuples value changesthe subnode's cost enough that it swaps position with one of its fellowsubnodes.The failure here only seems to occur on slower buildfarm machines. In thiscase, lousyjack, which seems have taken over 8 minutes to run justthe partitionwise_aggregate test. Such a slow run would increase thechances that the autovacuum launcher would trigger a vacuum mid-test.Faster machines run this test in sub second time, so have a much smallerwindow for an autovacuum to trigger.Here we fix this by disabling autovacuum on all tables created in the test.Additionally, this reverts the change made in thepartitionwise_aggregate test in2dc16ef.Discussion:https://postgr.es/m/22297.1585797192@sss.pgh.pa.us
1 parent2991ac5 commitcefb82d

File tree

2 files changed

+48
-42
lines changed

2 files changed

+48
-42
lines changed

‎src/test/regress/expected/partition_aggregate.out

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
-- PARTITION_AGGREGATE
33
-- Test partitionwise aggregation on partitioned tables
44
--
5+
-- Note: Various tests located within are sensitive to tables being
6+
-- auto-vacuumed while the tests are running. For this reason we
7+
-- run autovacuum_enabled = off for all tables.
58
-- Enable partitionwise aggregate, which by default is disabled.
69
SET enable_partitionwise_aggregate TO true;
710
-- Enable partitionwise join, which by default is disabled.
@@ -12,9 +15,9 @@ SET max_parallel_workers_per_gather TO 0;
1215
-- Tests for list partitioned tables.
1316
--
1417
CREATE TABLE pagg_tab (a int, b int, c text, d int) PARTITION BY LIST(c);
15-
CREATE TABLE pagg_tab_p1 PARTITION OF pagg_tab FOR VALUES IN ('0000', '0001', '0002', '0003');
16-
CREATE TABLE pagg_tab_p2 PARTITION OF pagg_tab FOR VALUES IN ('0004', '0005', '0006', '0007');
17-
CREATE TABLE pagg_tab_p3 PARTITION OF pagg_tab FOR VALUES IN ('0008', '0009', '0010', '0011');
18+
CREATE TABLE pagg_tab_p1 PARTITION OF pagg_tab FOR VALUES IN ('0000', '0001', '0002', '0003') WITH (autovacuum_enabled = off);
19+
CREATE TABLE pagg_tab_p2 PARTITION OF pagg_tab FOR VALUES IN ('0004', '0005', '0006', '0007') WITH (autovacuum_enabled = off);
20+
CREATE TABLE pagg_tab_p3 PARTITION OF pagg_tab FOR VALUES IN ('0008', '0009', '0010', '0011') WITH (autovacuum_enabled = off);
1821
INSERT INTO pagg_tab SELECT i % 20, i % 30, to_char(i % 12, 'FM0000'), i % 30 FROM generate_series(0, 2999) i;
1922
ANALYZE pagg_tab;
2023
-- When GROUP BY clause matches; full aggregation is performed for each partition.
@@ -397,13 +400,13 @@ SELECT a, sum(b order by a) FROM pagg_tab GROUP BY a ORDER BY 1, 2;
397400

398401
-- JOIN query
399402
CREATE TABLE pagg_tab1(x int, y int) PARTITION BY RANGE(x);
400-
CREATE TABLE pagg_tab1_p1 PARTITION OF pagg_tab1 FOR VALUES FROM (0) TO (10);
401-
CREATE TABLE pagg_tab1_p2 PARTITION OF pagg_tab1 FOR VALUES FROM (10) TO (20);
402-
CREATE TABLE pagg_tab1_p3 PARTITION OF pagg_tab1 FOR VALUES FROM (20) TO (30);
403+
CREATE TABLE pagg_tab1_p1 PARTITION OF pagg_tab1 FOR VALUES FROM (0) TO (10) WITH (autovacuum_enabled = off);
404+
CREATE TABLE pagg_tab1_p2 PARTITION OF pagg_tab1 FOR VALUES FROM (10) TO (20) WITH (autovacuum_enabled = off);
405+
CREATE TABLE pagg_tab1_p3 PARTITION OF pagg_tab1 FOR VALUES FROM (20) TO (30) WITH (autovacuum_enabled = off);
403406
CREATE TABLE pagg_tab2(x int, y int) PARTITION BY RANGE(y);
404-
CREATE TABLE pagg_tab2_p1 PARTITION OF pagg_tab2 FOR VALUES FROM (0) TO (10);
405-
CREATE TABLE pagg_tab2_p2 PARTITION OF pagg_tab2 FOR VALUES FROM (10) TO (20);
406-
CREATE TABLE pagg_tab2_p3 PARTITION OF pagg_tab2 FOR VALUES FROM (20) TO (30);
407+
CREATE TABLE pagg_tab2_p1 PARTITION OF pagg_tab2 FOR VALUES FROM (0) TO (10) WITH (autovacuum_enabled = off);
408+
CREATE TABLE pagg_tab2_p2 PARTITION OF pagg_tab2 FOR VALUES FROM (10) TO (20) WITH (autovacuum_enabled = off);
409+
CREATE TABLE pagg_tab2_p3 PARTITION OF pagg_tab2 FOR VALUES FROM (20) TO (30) WITH (autovacuum_enabled = off);
407410
INSERT INTO pagg_tab1 SELECT i % 30, i % 20 FROM generate_series(0, 299, 2) i;
408411
INSERT INTO pagg_tab2 SELECT i % 20, i % 30 FROM generate_series(0, 299, 3) i;
409412
ANALYZE pagg_tab1;
@@ -817,9 +820,9 @@ SELECT a.x, a.y, count(*) FROM (SELECT * FROM pagg_tab1 WHERE x = 1 AND x = 2) a
817820

818821
-- Partition by multiple columns
819822
CREATE TABLE pagg_tab_m (a int, b int, c int) PARTITION BY RANGE(a, ((a+b)/2));
820-
CREATE TABLE pagg_tab_m_p1 PARTITION OF pagg_tab_m FOR VALUES FROM (0, 0) TO (10, 10);
821-
CREATE TABLE pagg_tab_m_p2 PARTITION OF pagg_tab_m FOR VALUES FROM (10, 10) TO (20, 20);
822-
CREATE TABLE pagg_tab_m_p3 PARTITION OF pagg_tab_m FOR VALUES FROM (20, 20) TO (30, 30);
823+
CREATE TABLE pagg_tab_m_p1 PARTITION OF pagg_tab_m FOR VALUES FROM (0, 0) TO (10, 10) WITH (autovacuum_enabled = off);
824+
CREATE TABLE pagg_tab_m_p2 PARTITION OF pagg_tab_m FOR VALUES FROM (10, 10) TO (20, 20) WITH (autovacuum_enabled = off);
825+
CREATE TABLE pagg_tab_m_p3 PARTITION OF pagg_tab_m FOR VALUES FROM (20, 20) TO (30, 30) WITH (autovacuum_enabled = off);
823826
INSERT INTO pagg_tab_m SELECT i % 30, i % 40, i % 50 FROM generate_series(0, 2999) i;
824827
ANALYZE pagg_tab_m;
825828
-- Partial aggregation as GROUP BY clause does not match with PARTITION KEY
@@ -923,18 +926,18 @@ SELECT a, c, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY (a+b)/2, 2, 1 HAV
923926

924927
-- Test with multi-level partitioning scheme
925928
CREATE TABLE pagg_tab_ml (a int, b int, c text) PARTITION BY RANGE(a);
926-
CREATE TABLE pagg_tab_ml_p1 PARTITION OF pagg_tab_ml FOR VALUES FROM (0) TO (10);
929+
CREATE TABLE pagg_tab_ml_p1 PARTITION OF pagg_tab_ml FOR VALUES FROM (0) TO (10) WITH (autovacuum_enabled = off);
927930
CREATE TABLE pagg_tab_ml_p2 PARTITION OF pagg_tab_ml FOR VALUES FROM (10) TO (20) PARTITION BY LIST (c);
928-
CREATE TABLE pagg_tab_ml_p2_s1 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0000', '0001');
929-
CREATE TABLE pagg_tab_ml_p2_s2 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0002', '0003');
931+
CREATE TABLE pagg_tab_ml_p2_s1 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0000', '0001') WITH (autovacuum_enabled = off);
932+
CREATE TABLE pagg_tab_ml_p2_s2 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0002', '0003') WITH (autovacuum_enabled = off);
930933
-- This level of partitioning has different column positions than the parent
931934
CREATE TABLE pagg_tab_ml_p3(b int, c text, a int) PARTITION BY RANGE (b);
932-
CREATE TABLE pagg_tab_ml_p3_s1(c text, a int, b int);
933-
CREATE TABLE pagg_tab_ml_p3_s2 PARTITION OF pagg_tab_ml_p3 FOR VALUES FROM (5) TO (10);
935+
CREATE TABLE pagg_tab_ml_p3_s1(c text, a int, b int) WITH (autovacuum_enabled = off);
936+
CREATE TABLE pagg_tab_ml_p3_s2 PARTITION OF pagg_tab_ml_p3 FOR VALUES FROM (5) TO (10) WITH (autovacuum_enabled = off);
934937
ALTER TABLE pagg_tab_ml_p3 ATTACH PARTITION pagg_tab_ml_p3_s1 FOR VALUES FROM (0) TO (5);
935938
ALTER TABLE pagg_tab_ml ATTACH PARTITION pagg_tab_ml_p3 FOR VALUES FROM (20) TO (30);
936939
INSERT INTO pagg_tab_ml SELECT i % 30, i % 10, to_char(i % 4, 'FM0000') FROM generate_series(0, 29999) i;
937-
VACUUM (ANALYZE) pagg_tab_ml;
940+
ANALYZE pagg_tab_ml;
938941
-- For Parallel Append
939942
SET max_parallel_workers_per_gather TO 2;
940943
-- Full aggregation at level 1 as GROUP BY clause matches with PARTITION KEY
@@ -1329,9 +1332,9 @@ SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a, b, c HAVING avg(b) > 7 O
13291332
-- costing such plans.
13301333
SET parallel_setup_cost TO 10;
13311334
CREATE TABLE pagg_tab_para(x int, y int) PARTITION BY RANGE(x);
1332-
CREATE TABLE pagg_tab_para_p1 PARTITION OF pagg_tab_para FOR VALUES FROM (0) TO (10);
1333-
CREATE TABLE pagg_tab_para_p2 PARTITION OF pagg_tab_para FOR VALUES FROM (10) TO (20);
1334-
CREATE TABLE pagg_tab_para_p3 PARTITION OF pagg_tab_para FOR VALUES FROM (20) TO (30);
1335+
CREATE TABLE pagg_tab_para_p1 PARTITION OF pagg_tab_para FOR VALUES FROM (0) TO (10) WITH (autovacuum_enabled = off);
1336+
CREATE TABLE pagg_tab_para_p2 PARTITION OF pagg_tab_para FOR VALUES FROM (10) TO (20) WITH (autovacuum_enabled = off);
1337+
CREATE TABLE pagg_tab_para_p3 PARTITION OF pagg_tab_para FOR VALUES FROM (20) TO (30) WITH (autovacuum_enabled = off);
13351338
INSERT INTO pagg_tab_para SELECT i % 30, i % 20 FROM generate_series(0, 29999) i;
13361339
ANALYZE pagg_tab_para;
13371340
-- When GROUP BY clause matches; full aggregation is performed for each partition.

‎src/test/regress/sql/partition_aggregate.sql

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
-- PARTITION_AGGREGATE
33
-- Test partitionwise aggregation on partitioned tables
44
--
5+
-- Note: Various tests located within are sensitive to tables being
6+
-- auto-vacuumed while the tests are running. For this reason we
7+
-- run autovacuum_enabled = off for all tables.
58

69
-- Enable partitionwise aggregate, which by default is disabled.
710
SET enable_partitionwise_aggregate TO true;
@@ -14,9 +17,9 @@ SET max_parallel_workers_per_gather TO 0;
1417
-- Tests for list partitioned tables.
1518
--
1619
CREATETABLEpagg_tab (aint, bint, ctext, dint) PARTITION BY LIST(c);
17-
CREATETABLEpagg_tab_p1 PARTITION OF pagg_tab FORVALUESIN ('0000','0001','0002','0003');
18-
CREATETABLEpagg_tab_p2 PARTITION OF pagg_tab FORVALUESIN ('0004','0005','0006','0007');
19-
CREATETABLEpagg_tab_p3 PARTITION OF pagg_tab FORVALUESIN ('0008','0009','0010','0011');
20+
CREATETABLEpagg_tab_p1 PARTITION OF pagg_tab FORVALUESIN ('0000','0001','0002','0003') WITH (autovacuum_enabled= off);
21+
CREATETABLEpagg_tab_p2 PARTITION OF pagg_tab FORVALUESIN ('0004','0005','0006','0007') WITH (autovacuum_enabled= off);
22+
CREATETABLEpagg_tab_p3 PARTITION OF pagg_tab FORVALUESIN ('0008','0009','0010','0011') WITH (autovacuum_enabled= off);
2023
INSERT INTO pagg_tabSELECT i %20, i %30, to_char(i %12,'FM0000'), i %30FROM generate_series(0,2999) i;
2124
ANALYZE pagg_tab;
2225

@@ -91,14 +94,14 @@ SELECT a, sum(b order by a) FROM pagg_tab GROUP BY a ORDER BY 1, 2;
9194
-- JOIN query
9295

9396
CREATETABLEpagg_tab1(xint, yint) PARTITION BY RANGE(x);
94-
CREATETABLEpagg_tab1_p1 PARTITION OF pagg_tab1 FORVALUESFROM (0) TO (10);
95-
CREATETABLEpagg_tab1_p2 PARTITION OF pagg_tab1 FORVALUESFROM (10) TO (20);
96-
CREATETABLEpagg_tab1_p3 PARTITION OF pagg_tab1 FORVALUESFROM (20) TO (30);
97+
CREATETABLEpagg_tab1_p1 PARTITION OF pagg_tab1 FORVALUESFROM (0) TO (10) WITH (autovacuum_enabled= off);
98+
CREATETABLEpagg_tab1_p2 PARTITION OF pagg_tab1 FORVALUESFROM (10) TO (20) WITH (autovacuum_enabled= off);
99+
CREATETABLEpagg_tab1_p3 PARTITION OF pagg_tab1 FORVALUESFROM (20) TO (30) WITH (autovacuum_enabled= off);
97100

98101
CREATETABLEpagg_tab2(xint, yint) PARTITION BY RANGE(y);
99-
CREATETABLEpagg_tab2_p1 PARTITION OF pagg_tab2 FORVALUESFROM (0) TO (10);
100-
CREATETABLEpagg_tab2_p2 PARTITION OF pagg_tab2 FORVALUESFROM (10) TO (20);
101-
CREATETABLEpagg_tab2_p3 PARTITION OF pagg_tab2 FORVALUESFROM (20) TO (30);
102+
CREATETABLEpagg_tab2_p1 PARTITION OF pagg_tab2 FORVALUESFROM (0) TO (10) WITH (autovacuum_enabled= off);
103+
CREATETABLEpagg_tab2_p2 PARTITION OF pagg_tab2 FORVALUESFROM (10) TO (20) WITH (autovacuum_enabled= off);
104+
CREATETABLEpagg_tab2_p3 PARTITION OF pagg_tab2 FORVALUESFROM (20) TO (30) WITH (autovacuum_enabled= off);
102105

103106
INSERT INTO pagg_tab1SELECT i %30, i %20FROM generate_series(0,299,2) i;
104107
INSERT INTO pagg_tab2SELECT i %20, i %30FROM generate_series(0,299,3) i;
@@ -174,9 +177,9 @@ SELECT a.x, a.y, count(*) FROM (SELECT * FROM pagg_tab1 WHERE x = 1 AND x = 2) a
174177
-- Partition by multiple columns
175178

176179
CREATETABLEpagg_tab_m (aint, bint, cint) PARTITION BY RANGE(a, ((a+b)/2));
177-
CREATETABLEpagg_tab_m_p1 PARTITION OF pagg_tab_m FORVALUESFROM (0,0) TO (10,10);
178-
CREATETABLEpagg_tab_m_p2 PARTITION OF pagg_tab_m FORVALUESFROM (10,10) TO (20,20);
179-
CREATETABLEpagg_tab_m_p3 PARTITION OF pagg_tab_m FORVALUESFROM (20,20) TO (30,30);
180+
CREATETABLEpagg_tab_m_p1 PARTITION OF pagg_tab_m FORVALUESFROM (0,0) TO (10,10) WITH (autovacuum_enabled= off);
181+
CREATETABLEpagg_tab_m_p2 PARTITION OF pagg_tab_m FORVALUESFROM (10,10) TO (20,20) WITH (autovacuum_enabled= off);
182+
CREATETABLEpagg_tab_m_p3 PARTITION OF pagg_tab_m FORVALUESFROM (20,20) TO (30,30) WITH (autovacuum_enabled= off);
180183
INSERT INTO pagg_tab_mSELECT i %30, i %40, i %50FROM generate_series(0,2999) i;
181184
ANALYZE pagg_tab_m;
182185

@@ -199,21 +202,21 @@ SELECT a, c, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY (a+b)/2, 2, 1 HAV
199202
-- Test with multi-level partitioning scheme
200203

201204
CREATETABLEpagg_tab_ml (aint, bint, ctext) PARTITION BY RANGE(a);
202-
CREATETABLEpagg_tab_ml_p1 PARTITION OF pagg_tab_ml FORVALUESFROM (0) TO (10);
205+
CREATETABLEpagg_tab_ml_p1 PARTITION OF pagg_tab_ml FORVALUESFROM (0) TO (10) WITH (autovacuum_enabled= off);
203206
CREATETABLEpagg_tab_ml_p2 PARTITION OF pagg_tab_ml FORVALUESFROM (10) TO (20) PARTITION BY LIST (c);
204-
CREATETABLEpagg_tab_ml_p2_s1 PARTITION OF pagg_tab_ml_p2 FORVALUESIN ('0000','0001');
205-
CREATETABLEpagg_tab_ml_p2_s2 PARTITION OF pagg_tab_ml_p2 FORVALUESIN ('0002','0003');
207+
CREATETABLEpagg_tab_ml_p2_s1 PARTITION OF pagg_tab_ml_p2 FORVALUESIN ('0000','0001') WITH (autovacuum_enabled= off);
208+
CREATETABLEpagg_tab_ml_p2_s2 PARTITION OF pagg_tab_ml_p2 FORVALUESIN ('0002','0003') WITH (autovacuum_enabled= off);
206209

207210
-- This level of partitioning has different column positions than the parent
208211
CREATETABLEpagg_tab_ml_p3(bint, ctext, aint) PARTITION BY RANGE (b);
209-
CREATETABLEpagg_tab_ml_p3_s1(ctext, aint, bint);
210-
CREATETABLEpagg_tab_ml_p3_s2 PARTITION OF pagg_tab_ml_p3 FORVALUESFROM (5) TO (10);
212+
CREATETABLEpagg_tab_ml_p3_s1(ctext, aint, bint) WITH (autovacuum_enabled= off);
213+
CREATETABLEpagg_tab_ml_p3_s2 PARTITION OF pagg_tab_ml_p3 FORVALUESFROM (5) TO (10) WITH (autovacuum_enabled= off);
211214

212215
ALTERTABLE pagg_tab_ml_p3 ATTACH PARTITION pagg_tab_ml_p3_s1 FORVALUESFROM (0) TO (5);
213216
ALTERTABLE pagg_tab_ml ATTACH PARTITION pagg_tab_ml_p3 FORVALUESFROM (20) TO (30);
214217

215218
INSERT INTO pagg_tab_mlSELECT i %30, i %10, to_char(i %4,'FM0000')FROM generate_series(0,29999) i;
216-
VACUUM (ANALYZE) pagg_tab_ml;
219+
ANALYZE pagg_tab_ml;
217220

218221
-- For Parallel Append
219222
SET max_parallel_workers_per_gather TO2;
@@ -284,9 +287,9 @@ SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a, b, c HAVING avg(b) > 7 O
284287
SET parallel_setup_cost TO10;
285288

286289
CREATETABLEpagg_tab_para(xint, yint) PARTITION BY RANGE(x);
287-
CREATETABLEpagg_tab_para_p1 PARTITION OF pagg_tab_para FORVALUESFROM (0) TO (10);
288-
CREATETABLEpagg_tab_para_p2 PARTITION OF pagg_tab_para FORVALUESFROM (10) TO (20);
289-
CREATETABLEpagg_tab_para_p3 PARTITION OF pagg_tab_para FORVALUESFROM (20) TO (30);
290+
CREATETABLEpagg_tab_para_p1 PARTITION OF pagg_tab_para FORVALUESFROM (0) TO (10) WITH (autovacuum_enabled= off);
291+
CREATETABLEpagg_tab_para_p2 PARTITION OF pagg_tab_para FORVALUESFROM (10) TO (20) WITH (autovacuum_enabled= off);
292+
CREATETABLEpagg_tab_para_p3 PARTITION OF pagg_tab_para FORVALUESFROM (20) TO (30) WITH (autovacuum_enabled= off);
290293

291294
INSERT INTO pagg_tab_paraSELECT i %30, i %20FROM generate_series(0,29999) i;
292295

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp