Skip to content

Commit 0c69df3

Browse files
committed
Fix hash join test on 10.5
1 parent 94f621b commit 0c69df3

9 files changed

+194
-50
lines changed

Diff for: META.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"pg_pathman": {
2424
"file": "pg_pathman--1.4.sql",
2525
"docfile": "README.md",
26-
"version": "1.4.13",
26+
"version": "1.4.14",
2727
"abstract": "Partitioning tool"
2828
}
2929
},

Diff for: Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ REGRESS = pathman_array_qual \
4545
pathman_interval \
4646
pathman_join_clause \
4747
pathman_lateral \
48+
pathman_hashjoin \
4849
pathman_mergejoin \
4950
pathman_multilevel \
5051
pathman_only \

Diff for: expected/pathman_basic.out

-35
Original file line numberDiff line numberDiff line change
@@ -810,41 +810,6 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel_1 UNION ALL SELECT * FROM test.
810810
-> Index Scan using range_rel_2_dt_idx on range_rel_2
811811
(4 rows)
812812

813-
/*
814-
* Join
815-
*/
816-
set enable_nestloop = OFF;
817-
SET enable_hashjoin = ON;
818-
SET enable_mergejoin = OFF;
819-
EXPLAIN (COSTS OFF)
820-
SELECT * FROM test.range_rel j1
821-
JOIN test.range_rel j2 on j2.id = j1.id
822-
JOIN test.num_range_rel j3 on j3.id = j1.id
823-
WHERE j1.dt < '2015-03-01' AND j2.dt >= '2015-02-01' ORDER BY j2.dt;
824-
QUERY PLAN
825-
-------------------------------------------------------------------------------------------
826-
Sort
827-
Sort Key: j2.dt
828-
-> Hash Join
829-
Hash Cond: (j3.id = j2.id)
830-
-> Append
831-
-> Index Scan using num_range_rel_1_pkey on num_range_rel_1 j3
832-
-> Index Scan using num_range_rel_2_pkey on num_range_rel_2 j3_1
833-
-> Index Scan using num_range_rel_3_pkey on num_range_rel_3 j3_2
834-
-> Index Scan using num_range_rel_4_pkey on num_range_rel_4 j3_3
835-
-> Hash
836-
-> Hash Join
837-
Hash Cond: (j2.id = j1.id)
838-
-> Append
839-
-> Index Scan using range_rel_2_dt_idx on range_rel_2 j2
840-
-> Index Scan using range_rel_3_dt_idx on range_rel_3 j2_1
841-
-> Index Scan using range_rel_4_dt_idx on range_rel_4 j2_2
842-
-> Hash
843-
-> Append
844-
-> Index Scan using range_rel_1_pkey on range_rel_1 j1
845-
-> Index Scan using range_rel_2_pkey on range_rel_2 j1_1
846-
(20 rows)
847-
848813
/*
849814
* Test inlined SQL functions
850815
*/

Diff for: expected/pathman_calamity.out

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ SELECT debug_capture();
1313
SELECT get_pathman_lib_version();
1414
get_pathman_lib_version
1515
-------------------------
16-
1.4.13
16+
1.4.14
1717
(1 row)
1818

1919
set client_min_messages = NOTICE;

Diff for: expected/pathman_hashjoin.out

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
\set VERBOSITY terse
2+
SET search_path = 'public';
3+
CREATE SCHEMA pathman;
4+
CREATE EXTENSION pg_pathman SCHEMA pathman;
5+
CREATE SCHEMA test;
6+
CREATE TABLE test.range_rel (
7+
id SERIAL PRIMARY KEY,
8+
dt TIMESTAMP NOT NULL,
9+
txt TEXT);
10+
CREATE INDEX ON test.range_rel (dt);
11+
INSERT INTO test.range_rel (dt, txt)
12+
SELECT g, md5(g::TEXT) FROM generate_series('2015-01-01', '2015-04-30', '1 day'::interval) as g;
13+
SELECT pathman.create_range_partitions('test.range_rel', 'DT', '2015-01-01'::DATE, '1 month'::INTERVAL);
14+
create_range_partitions
15+
-------------------------
16+
4
17+
(1 row)
18+
19+
CREATE TABLE test.num_range_rel (
20+
id SERIAL PRIMARY KEY,
21+
txt TEXT);
22+
SELECT pathman.create_range_partitions('test.num_range_rel', 'id', 0, 1000, 4);
23+
create_range_partitions
24+
-------------------------
25+
4
26+
(1 row)
27+
28+
INSERT INTO test.num_range_rel
29+
SELECT g, md5(g::TEXT) FROM generate_series(1, 3000) as g;
30+
SET pg_pathman.enable_runtimeappend = OFF;
31+
SET pg_pathman.enable_runtimemergeappend = OFF;
32+
VACUUM;
33+
/*
34+
* Hash join
35+
*/
36+
SET enable_indexscan = ON;
37+
SET enable_seqscan = OFF;
38+
SET enable_nestloop = OFF;
39+
SET enable_hashjoin = ON;
40+
SET enable_mergejoin = OFF;
41+
EXPLAIN (COSTS OFF)
42+
SELECT * FROM test.range_rel j1
43+
JOIN test.range_rel j2 on j2.id = j1.id
44+
JOIN test.num_range_rel j3 on j3.id = j1.id
45+
WHERE j1.dt < '2015-03-01' AND j2.dt >= '2015-02-01' ORDER BY j2.dt;
46+
QUERY PLAN
47+
---------------------------------------------------------------------------------------
48+
Sort
49+
Sort Key: j2.dt
50+
-> Hash Join
51+
Hash Cond: (j1.id = j2.id)
52+
-> Hash Join
53+
Hash Cond: (j3.id = j1.id)
54+
-> Append
55+
-> Index Scan using num_range_rel_1_pkey on num_range_rel_1 j3
56+
-> Index Scan using num_range_rel_2_pkey on num_range_rel_2 j3_1
57+
-> Index Scan using num_range_rel_3_pkey on num_range_rel_3 j3_2
58+
-> Index Scan using num_range_rel_4_pkey on num_range_rel_4 j3_3
59+
-> Hash
60+
-> Append
61+
-> Index Scan using range_rel_1_pkey on range_rel_1 j1
62+
-> Index Scan using range_rel_2_pkey on range_rel_2 j1_1
63+
-> Hash
64+
-> Append
65+
-> Index Scan using range_rel_2_dt_idx on range_rel_2 j2
66+
-> Index Scan using range_rel_3_dt_idx on range_rel_3 j2_1
67+
-> Index Scan using range_rel_4_dt_idx on range_rel_4 j2_2
68+
(20 rows)
69+
70+
DROP SCHEMA test CASCADE;
71+
NOTICE: drop cascades to 12 other objects
72+
DROP EXTENSION pg_pathman CASCADE;
73+
DROP SCHEMA pathman CASCADE;

Diff for: expected/pathman_hashjoin_1.out

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
\set VERBOSITY terse
2+
SET search_path = 'public';
3+
CREATE SCHEMA pathman;
4+
CREATE EXTENSION pg_pathman SCHEMA pathman;
5+
CREATE SCHEMA test;
6+
CREATE TABLE test.range_rel (
7+
id SERIAL PRIMARY KEY,
8+
dt TIMESTAMP NOT NULL,
9+
txt TEXT);
10+
CREATE INDEX ON test.range_rel (dt);
11+
INSERT INTO test.range_rel (dt, txt)
12+
SELECT g, md5(g::TEXT) FROM generate_series('2015-01-01', '2015-04-30', '1 day'::interval) as g;
13+
SELECT pathman.create_range_partitions('test.range_rel', 'DT', '2015-01-01'::DATE, '1 month'::INTERVAL);
14+
create_range_partitions
15+
-------------------------
16+
4
17+
(1 row)
18+
19+
CREATE TABLE test.num_range_rel (
20+
id SERIAL PRIMARY KEY,
21+
txt TEXT);
22+
SELECT pathman.create_range_partitions('test.num_range_rel', 'id', 0, 1000, 4);
23+
create_range_partitions
24+
-------------------------
25+
4
26+
(1 row)
27+
28+
INSERT INTO test.num_range_rel
29+
SELECT g, md5(g::TEXT) FROM generate_series(1, 3000) as g;
30+
SET pg_pathman.enable_runtimeappend = OFF;
31+
SET pg_pathman.enable_runtimemergeappend = OFF;
32+
VACUUM;
33+
/*
34+
* Hash join
35+
*/
36+
SET enable_indexscan = ON;
37+
SET enable_seqscan = OFF;
38+
SET enable_nestloop = OFF;
39+
SET enable_hashjoin = ON;
40+
SET enable_mergejoin = OFF;
41+
EXPLAIN (COSTS OFF)
42+
SELECT * FROM test.range_rel j1
43+
JOIN test.range_rel j2 on j2.id = j1.id
44+
JOIN test.num_range_rel j3 on j3.id = j1.id
45+
WHERE j1.dt < '2015-03-01' AND j2.dt >= '2015-02-01' ORDER BY j2.dt;
46+
QUERY PLAN
47+
-------------------------------------------------------------------------------------------
48+
Sort
49+
Sort Key: j2.dt
50+
-> Hash Join
51+
Hash Cond: (j3.id = j2.id)
52+
-> Append
53+
-> Index Scan using num_range_rel_1_pkey on num_range_rel_1 j3
54+
-> Index Scan using num_range_rel_2_pkey on num_range_rel_2 j3_1
55+
-> Index Scan using num_range_rel_3_pkey on num_range_rel_3 j3_2
56+
-> Index Scan using num_range_rel_4_pkey on num_range_rel_4 j3_3
57+
-> Hash
58+
-> Hash Join
59+
Hash Cond: (j2.id = j1.id)
60+
-> Append
61+
-> Index Scan using range_rel_2_dt_idx on range_rel_2 j2
62+
-> Index Scan using range_rel_3_dt_idx on range_rel_3 j2_1
63+
-> Index Scan using range_rel_4_dt_idx on range_rel_4 j2_2
64+
-> Hash
65+
-> Append
66+
-> Index Scan using range_rel_1_pkey on range_rel_1 j1
67+
-> Index Scan using range_rel_2_pkey on range_rel_2 j1_1
68+
(20 rows)
69+
70+
DROP SCHEMA test CASCADE;
71+
NOTICE: drop cascades to 12 other objects
72+
DROP EXTENSION pg_pathman CASCADE;
73+
DROP SCHEMA pathman CASCADE;

Diff for: sql/pathman_basic.sql

-12
Original file line numberDiff line numberDiff line change
@@ -215,18 +215,6 @@ SET enable_seqscan = OFF;
215215
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel WHERE dt < '2015-03-01' ORDER BY dt;
216216
EXPLAIN (COSTS OFF) SELECT * FROM test.range_rel_1 UNION ALL SELECT * FROM test.range_rel_2 ORDER BY dt;
217217

218-
/*
219-
* Join
220-
*/
221-
set enable_nestloop = OFF;
222-
SET enable_hashjoin = ON;
223-
SET enable_mergejoin = OFF;
224-
EXPLAIN (COSTS OFF)
225-
SELECT * FROM test.range_rel j1
226-
JOIN test.range_rel j2 on j2.id = j1.id
227-
JOIN test.num_range_rel j3 on j3.id = j1.id
228-
WHERE j1.dt < '2015-03-01' AND j2.dt >= '2015-02-01' ORDER BY j2.dt;
229-
230218
/*
231219
* Test inlined SQL functions
232220
*/

Diff for: sql/pathman_hashjoin.sql

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
\set VERBOSITY terse
2+
3+
SET search_path = 'public';
4+
CREATE SCHEMA pathman;
5+
CREATE EXTENSION pg_pathman SCHEMA pathman;
6+
CREATE SCHEMA test;
7+
8+
CREATE TABLE test.range_rel (
9+
id SERIAL PRIMARY KEY,
10+
dt TIMESTAMP NOT NULL,
11+
txt TEXT);
12+
CREATE INDEX ON test.range_rel (dt);
13+
INSERT INTO test.range_rel (dt, txt)
14+
SELECT g, md5(g::TEXT) FROM generate_series('2015-01-01', '2015-04-30', '1 day'::interval) as g;
15+
SELECT pathman.create_range_partitions('test.range_rel', 'DT', '2015-01-01'::DATE, '1 month'::INTERVAL);
16+
17+
CREATE TABLE test.num_range_rel (
18+
id SERIAL PRIMARY KEY,
19+
txt TEXT);
20+
SELECT pathman.create_range_partitions('test.num_range_rel', 'id', 0, 1000, 4);
21+
INSERT INTO test.num_range_rel
22+
SELECT g, md5(g::TEXT) FROM generate_series(1, 3000) as g;
23+
24+
SET pg_pathman.enable_runtimeappend = OFF;
25+
SET pg_pathman.enable_runtimemergeappend = OFF;
26+
VACUUM;
27+
28+
/*
29+
* Hash join
30+
*/
31+
SET enable_indexscan = ON;
32+
SET enable_seqscan = OFF;
33+
SET enable_nestloop = OFF;
34+
SET enable_hashjoin = ON;
35+
SET enable_mergejoin = OFF;
36+
EXPLAIN (COSTS OFF)
37+
SELECT * FROM test.range_rel j1
38+
JOIN test.range_rel j2 on j2.id = j1.id
39+
JOIN test.num_range_rel j3 on j3.id = j1.id
40+
WHERE j1.dt < '2015-03-01' AND j2.dt >= '2015-02-01' ORDER BY j2.dt;
41+
42+
DROP SCHEMA test CASCADE;
43+
DROP EXTENSION pg_pathman CASCADE;
44+
DROP SCHEMA pathman CASCADE;

Diff for: src/include/init.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ simpify_mcxt_name(MemoryContext mcxt)
158158
#define LOWEST_COMPATIBLE_FRONT 0x010400
159159

160160
/* Current version of native C library (0xAA_BB_CC) */
161-
#define CURRENT_LIB_VERSION 0x010413
161+
#define CURRENT_LIB_VERSION 0x010414
162162

163163

164164
void *pathman_cache_search_relid(HTAB *cache_table,

0 commit comments

Comments
 (0)