@@ -190,6 +190,78 @@ SELECT COUNT(*) FROM ONLY test.num_range_rel;
190
190
0
191
191
(1 row)
192
192
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
193
265
/* test special case: ONLY statement with not-ONLY for partitioned table */
194
266
CREATE TABLE test.from_only_test(val INT NOT NULL);
195
267
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
1837
1909
(12 rows)
1838
1910
1839
1911
DROP SCHEMA test CASCADE;
1840
- NOTICE: drop cascades to 46 other objects
1912
+ NOTICE: drop cascades to 47 other objects
1841
1913
DROP EXTENSION pg_pathman CASCADE;
1842
1914
DROP SCHEMA pathman CASCADE;
0 commit comments