File: iejoin_projection_maps.test

package info (click to toggle)
duckdb 1.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 564
file content (58 lines) | stat: -rw-r--r-- 1,446 bytes parent folder | download | duplicates (4)
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...)