1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
# name: test/sql/join/iejoin/iejoin_projection_maps.test
# description: Test IEJoin projection mapping
# group: [iejoin]
statement ok
PRAGMA threads=1
set seed 0.8765309
statement ok
CREATE TABLE df (id INTEGER, id2 INTEGER, id3 INTEGER, value_double DOUBLE, value as (value_double::DECIMAL(4,3)), one_min_value as ((1.0 - value_double)::DECIMAL(4,3)))
statement ok
INSERT INTO df
SELECT
(random() * 100)::INTEGER + 1 as id,
(random() * 10)::INTEGER + 1 as id2,
(random() * 5)::INTEGER + 1 as id3,
(ROUND(random(), 4)) as value_double,
FROM range(5000);
# Verify table contents
query IIIIII
SELECT SUM(id) AS id, SUM(id2) AS id2, SUM(id3) AS id3, SUM(value) AS sum_value, SUM(one_min_value) AS sum_one_min_value, sum_value + sum_one_min_value AS sum
FROM df
----
252652 29774 17657 2498.192 2502.191 5000.383
statement ok
PRAGMA enable_verification
# Test right_projection_map
foreach prefer False True
statement ok
PRAGMA prefer_range_joins=${prefer};
# mode output_hash
query I
SELECT id2, id3, id3_right, sum(value * value_right) as value
FROM (
SELECT df.*, df2.id3 as id3_right, df2.value as value_right
FROM df JOIN df as df2
ON (df.id = df2.id
AND df.id2 = df2.id2
AND df.id3 > df2.id3
AND df.id3 < df2.id3 + 30)
) tbl
GROUP BY ALL
ORDER BY ALL
----
660 values hashing to fe2237dbeb18fe3400d5323bcab26dd2
endloop
# Test left_projection_map
# (Once it can acutally happen...)
|