|
| 1 | +/* |
| 2 | +* pathman_mergejoin_1.out and pathman_mergejoin_2.out seem to deal with pgpro's |
| 3 | +* different behaviour. 8edd0e794 (>= 12) Append nodes with single subplan |
| 4 | +* are eliminated, hence pathman_mergejoin_3.out |
| 5 | +* |
| 6 | +* Since 55a1954da16 and 6ef77cf46e8 (>= 13) output of EXPLAIN was changed, |
| 7 | +* now it includes aliases for inherited tables. |
| 8 | +* |
| 9 | +* --------------------------------------------- |
| 10 | +* NOTE: This test behaves differenly on PgPro |
| 11 | +* --------------------------------------------- |
| 12 | +*/ |
| 13 | +\set VERBOSITY terse |
| 14 | +SET search_path = 'public'; |
| 15 | +CREATE SCHEMA pathman; |
| 16 | +CREATE EXTENSION pg_pathman SCHEMA pathman; |
| 17 | +CREATE SCHEMA test; |
| 18 | +CREATE TABLE test.range_rel ( |
| 19 | +id SERIAL PRIMARY KEY, |
| 20 | +dt TIMESTAMP NOT NULL, |
| 21 | +txt TEXT); |
| 22 | +CREATE INDEX ON test.range_rel (dt); |
| 23 | +INSERT INTO test.range_rel (dt, txt) |
| 24 | +SELECT g, md5(g::TEXT) FROM generate_series('2015-01-01', '2015-04-30', '1 day'::interval) as g; |
| 25 | +SELECT pathman.create_range_partitions('test.range_rel', 'DT', '2015-01-01'::DATE, '1 month'::INTERVAL); |
| 26 | +create_range_partitions |
| 27 | +------------------------- |
| 28 | +4 |
| 29 | +(1 row) |
| 30 | + |
| 31 | +CREATE TABLE test.num_range_rel ( |
| 32 | +id SERIAL PRIMARY KEY, |
| 33 | +txt TEXT); |
| 34 | +INSERT INTO test.num_range_rel SELECT g, md5(g::TEXT) FROM generate_series(1, 3000) as g; |
| 35 | +SELECT pathman.create_range_partitions('test.num_range_rel', 'id', 0, 1000, 4); |
| 36 | +create_range_partitions |
| 37 | +------------------------- |
| 38 | +4 |
| 39 | +(1 row) |
| 40 | + |
| 41 | +/* |
| 42 | +* Merge join between 3 partitioned tables |
| 43 | +* |
| 44 | +* test case for the fix of sorting, merge append and index scan issues |
| 45 | +* details in commit 54dd0486fc55b2d25cf7d095f83dee6ff4adee06 |
| 46 | +*/ |
| 47 | +SET enable_hashjoin = OFF; |
| 48 | +SET enable_nestloop = OFF; |
| 49 | +SET enable_mergejoin = ON; |
| 50 | +SET enable_indexscan = ON; |
| 51 | +SET enable_seqscan = OFF; |
| 52 | +EXPLAIN (COSTS OFF) |
| 53 | +SELECT * FROM test.range_rel j1 |
| 54 | +JOIN test.range_rel j2 on j2.id = j1.id |
| 55 | +JOIN test.num_range_rel j3 on j3.id = j1.id |
| 56 | +WHERE j1.dt < '2015-03-01' AND j2.dt >= '2015-02-01' ORDER BY j2.dt; |
| 57 | +QUERY PLAN |
| 58 | +--------------------------------------------------------------------------------- |
| 59 | +Sort |
| 60 | +Sort Key: j2.dt |
| 61 | +-> Merge Join |
| 62 | +Merge Cond: (j2.id = j3.id) |
| 63 | +-> Index Scan using range_rel_2_pkey on range_rel_2 j2 |
| 64 | +-> Append |
| 65 | +-> Index Scan using num_range_rel_1_pkey on num_range_rel_1 j3_1 |
| 66 | +-> Index Scan using num_range_rel_2_pkey on num_range_rel_2 j3_2 |
| 67 | +-> Index Scan using num_range_rel_3_pkey on num_range_rel_3 j3_3 |
| 68 | +-> Index Scan using num_range_rel_4_pkey on num_range_rel_4 j3_4 |
| 69 | +(10 rows) |
| 70 | + |
| 71 | +SET enable_hashjoin = ON; |
| 72 | +SET enable_nestloop = ON; |
| 73 | +SET enable_seqscan = ON; |
| 74 | +DROP TABLE test.num_range_rel CASCADE; |
| 75 | +NOTICE: drop cascades to 5 other objects |
| 76 | +DROP TABLE test.range_rel CASCADE; |
| 77 | +NOTICE: drop cascades to 5 other objects |
| 78 | +DROP SCHEMA test; |
| 79 | +DROP EXTENSION pg_pathman; |
| 80 | +DROP SCHEMA pathman; |
0 commit comments