Skip to content

Commit 30556ad

Browse files
committed
tests for improved append_child_relation() & set_append_rel_pathlist()
1 parent f722696 commit 30556ad

File tree

2 files changed

+94
-1
lines changed

2 files changed

+94
-1
lines changed

expected/pathman_basic.out

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,78 @@ SELECT COUNT(*) FROM ONLY test.num_range_rel;
190190
0
191191
(1 row)
192192

193+
/* since rel_1_2_beta: check append_child_relation(), make_ands_explicit(), dummy path */
194+
CREATE TABLE test.improved_dummy (id BIGSERIAL, name TEXT NOT NULL);
195+
INSERT INTO test.improved_dummy (name) SELECT md5(g::TEXT) FROM generate_series(1, 100) as g;
196+
SELECT pathman.create_range_partitions('test.improved_dummy', 'id', 1, 10);
197+
NOTICE: sequence "improved_dummy_seq" does not exist, skipping
198+
create_range_partitions
199+
-------------------------
200+
10
201+
(1 row)
202+
203+
INSERT INTO test.improved_dummy (name) VALUES ('test'); /* spawns new partition */
204+
EXPLAIN (COSTS OFF) SELECT * FROM test.improved_dummy WHERE id = 101 OR id = 5 AND name = 'ib';
205+
QUERY PLAN
206+
----------------------------------------------------
207+
Append
208+
-> Seq Scan on improved_dummy_1
209+
Filter: ((id = 5) AND (name = 'ib'::text))
210+
-> Seq Scan on improved_dummy_11
211+
Filter: (id = 101)
212+
(5 rows)
213+
214+
SELECT pathman.set_enable_parent('test.improved_dummy', true); /* enable parent */
215+
set_enable_parent
216+
-------------------
217+
218+
(1 row)
219+
220+
EXPLAIN (COSTS OFF) SELECT * FROM test.improved_dummy WHERE id = 101 OR id = 5 AND name = 'ib';
221+
QUERY PLAN
222+
--------------------------------------------------------------------
223+
Append
224+
-> Seq Scan on improved_dummy
225+
Filter: ((id = 101) OR ((id = 5) AND (name = 'ib'::text)))
226+
-> Seq Scan on improved_dummy_1
227+
Filter: ((id = 5) AND (name = 'ib'::text))
228+
-> Seq Scan on improved_dummy_11
229+
Filter: (id = 101)
230+
(7 rows)
231+
232+
SELECT pathman.set_enable_parent('test.improved_dummy', false); /* disable parent */
233+
set_enable_parent
234+
-------------------
235+
236+
(1 row)
237+
238+
ALTER TABLE test.improved_dummy_1 ADD CHECK (name != 'ib'); /* make test.improved_dummy_1 disappear */
239+
EXPLAIN (COSTS OFF) SELECT * FROM test.improved_dummy WHERE id = 101 OR id = 5 AND name = 'ib';
240+
QUERY PLAN
241+
-------------------------------------
242+
Append
243+
-> Seq Scan on improved_dummy_11
244+
Filter: (id = 101)
245+
(3 rows)
246+
247+
SELECT pathman.set_enable_parent('test.improved_dummy', true); /* enable parent */
248+
set_enable_parent
249+
-------------------
250+
251+
(1 row)
252+
253+
EXPLAIN (COSTS OFF) SELECT * FROM test.improved_dummy WHERE id = 101 OR id = 5 AND name = 'ib';
254+
QUERY PLAN
255+
--------------------------------------------------------------------
256+
Append
257+
-> Seq Scan on improved_dummy
258+
Filter: ((id = 101) OR ((id = 5) AND (name = 'ib'::text)))
259+
-> Seq Scan on improved_dummy_11
260+
Filter: (id = 101)
261+
(5 rows)
262+
263+
DROP TABLE test.improved_dummy CASCADE;
264+
NOTICE: drop cascades to 11 other objects
193265
/* test special case: ONLY statement with not-ONLY for partitioned table */
194266
CREATE TABLE test.from_only_test(val INT NOT NULL);
195267
INSERT INTO test.from_only_test SELECT generate_series(1, 20);
@@ -1837,6 +1909,6 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.index_on_childs WHERE c1 > 100 AND c1 < 2
18371909
(12 rows)
18381910

18391911
DROP SCHEMA test CASCADE;
1840-
NOTICE: drop cascades to 46 other objects
1912+
NOTICE: drop cascades to 47 other objects
18411913
DROP EXTENSION pg_pathman CASCADE;
18421914
DROP SCHEMA pathman CASCADE;

sql/pathman_basic.sql

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,27 @@ INSERT INTO test.num_range_rel
5757
SELECT COUNT(*) FROM test.num_range_rel;
5858
SELECT COUNT(*) FROM ONLY test.num_range_rel;
5959

60+
61+
/* since rel_1_2_beta: check append_child_relation(), make_ands_explicit(), dummy path */
62+
CREATE TABLE test.improved_dummy (id BIGSERIAL, name TEXT NOT NULL);
63+
INSERT INTO test.improved_dummy (name) SELECT md5(g::TEXT) FROM generate_series(1, 100) as g;
64+
SELECT pathman.create_range_partitions('test.improved_dummy', 'id', 1, 10);
65+
INSERT INTO test.improved_dummy (name) VALUES ('test'); /* spawns new partition */
66+
67+
EXPLAIN (COSTS OFF) SELECT * FROM test.improved_dummy WHERE id = 101 OR id = 5 AND name = 'ib';
68+
SELECT pathman.set_enable_parent('test.improved_dummy', true); /* enable parent */
69+
EXPLAIN (COSTS OFF) SELECT * FROM test.improved_dummy WHERE id = 101 OR id = 5 AND name = 'ib';
70+
SELECT pathman.set_enable_parent('test.improved_dummy', false); /* disable parent */
71+
72+
ALTER TABLE test.improved_dummy_1 ADD CHECK (name != 'ib'); /* make test.improved_dummy_1 disappear */
73+
74+
EXPLAIN (COSTS OFF) SELECT * FROM test.improved_dummy WHERE id = 101 OR id = 5 AND name = 'ib';
75+
SELECT pathman.set_enable_parent('test.improved_dummy', true); /* enable parent */
76+
EXPLAIN (COSTS OFF) SELECT * FROM test.improved_dummy WHERE id = 101 OR id = 5 AND name = 'ib';
77+
78+
DROP TABLE test.improved_dummy CASCADE;
79+
80+
6081
/* test special case: ONLY statement with not-ONLY for partitioned table */
6182
CREATE TABLE test.from_only_test(val INT NOT NULL);
6283
INSERT INTO test.from_only_test SELECT generate_series(1, 20);

0 commit comments

Comments
 (0)