Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions test/sql/join/iejoin/iejoin_issue_6314.test_slow
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,15 @@ statement ok
INSERT INTO flags VALUES('2023-02-10 20:18:13.432147','2023-02-13 15:22:40.650655','legacy','2/11');

# INNER join
query II
EXPLAIN
SELECT ota.*, flags.desc as flag
FROM ota
INNER JOIN flags ON ota.ts BETWEEN flags.start AND flags.end
ORDER BY ts;
----
physical_plan <REGEX>:.*IE_JOIN.*

statement ok
CREATE TABLE inner_join AS SELECT ota.*, flags.desc as flag
FROM ota
Expand All @@ -498,6 +507,15 @@ SELECT COUNT(*), COUNT(ts), COUNT(flag) FROM inner_join
87775 87775 87775

# LEFT join
query II
EXPLAIN
SELECT ota.*, flags.desc as flag
FROM ota
LEFT JOIN flags ON ota.ts BETWEEN flags.start AND flags.end
ORDER BY ts;
----
physical_plan <REGEX>:.*IE_JOIN.*

statement ok
CREATE TABLE left_join AS SELECT ota.*, flags.desc as flag
FROM ota
Expand All @@ -510,6 +528,15 @@ SELECT COUNT(*), COUNT(ts), COUNT(flag) FROM left_join
167137 167137 87775

# RIGHT join
query II
EXPLAIN
SELECT ota.*, flags.desc as flag
FROM ota
RIGHT JOIN flags ON ota.ts BETWEEN flags.start AND flags.end
ORDER BY ts;
----
physical_plan <REGEX>:.*IE_JOIN.*

statement ok
CREATE TABLE right_join AS SELECT ota.*, flags.desc as flag
FROM ota
Expand All @@ -522,6 +549,15 @@ SELECT COUNT(*), COUNT(ts), COUNT(flag) FROM right_join
87842 87775 87842

# FULL OUTER join
query II
EXPLAIN
SELECT ota.*, flags.desc as flag
FROM ota
FULL OUTER JOIN flags ON ota.ts BETWEEN flags.start AND flags.end
ORDER BY ts;
----
physical_plan <REGEX>:.*IE_JOIN.*

statement ok
CREATE TABLE full_outer_join AS SELECT ota.*, flags.desc as flag
FROM ota
Expand Down
27 changes: 27 additions & 0 deletions test/sql/join/iejoin/iejoin_issue_6861.test
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ CREATE TABLE test(x INT);
statement ok
SET merge_join_threshold=0

statement ok
SET nested_loop_join_threshold=0;

query II
SELECT *
FROM test AS a, test AS b
Expand All @@ -26,18 +29,42 @@ CREATE TABLE all_null AS SELECT * FROM test;
statement ok
UPDATE all_null SET x=(NULL);

query II
EXPLAIN
SELECT *
FROM all_null AS a, all_null AS b
WHERE (a.x BETWEEN b.x AND b.x);
----
physical_plan <REGEX>:.*IE_JOIN.*

query II
SELECT *
FROM all_null AS a, all_null AS b
WHERE (a.x BETWEEN b.x AND b.x);
----

query II
EXPLAIN
SELECT *
FROM test AS a, all_null AS b
WHERE (a.x BETWEEN b.x AND b.x);
----
physical_plan <REGEX>:.*IE_JOIN.*

query II
SELECT *
FROM test AS a, all_null AS b
WHERE (a.x BETWEEN b.x AND b.x);
----

query II
EXPLAIN
SELECT *
FROM all_null AS a, test AS b
WHERE (a.x BETWEEN b.x AND b.x);
----
physical_plan <REGEX>:.*IE_JOIN.*

query II
SELECT *
FROM all_null AS a, test AS b
Expand Down
80 changes: 68 additions & 12 deletions test/sql/join/iejoin/iejoin_issue_7278.test
Original file line number Diff line number Diff line change
Expand Up @@ -25,39 +25,66 @@ create table snapshot_data as
from generate_series(1,1000) t(i)
;

query I
with cal_last_13 as (
# IEJoin is disabled for CTEs for some reason
statement ok
create table cal_last_13 as(
select * from calendar where yyyyww in (SELECT yyyyww
FROM calendar)
)
);

query II
explain
select
count(*)
from snapshot_data data
join cal_last_13 cal
on data.snapshot_ts >= cal.start_ts
and data.snapshot_ts <= cal.end_ts
----
1000
physical_plan <REGEX>:.*IE_JOIN.*

query I
with cal_last_13 as (
select
count(*)
from snapshot_data data
join cal_last_13 cal
on data.snapshot_ts >= cal.start_ts
and data.snapshot_ts <= cal.end_ts
----
1000

statement ok
create or replace table cal_last_13 as (
select * from calendar where yyyyww in (SELECT yyyyww
FROM calendar)
union all
select * from calendar where yyyyww in (SELECT yyyyww
FROM calendar)
)
);

query II
explain
select
count(*)
from snapshot_data data
join cal_last_13 cal
on data.snapshot_ts >= cal.start_ts
and data.snapshot_ts <= cal.end_ts
----
2000
physical_plan <REGEX>:.*IE_JOIN.*

query I
with cal_last_13 as (
select
count(*)
from snapshot_data data
join cal_last_13 cal
on data.snapshot_ts >= cal.start_ts
and data.snapshot_ts <= cal.end_ts
----
2000

statement ok
create or replace table cal_last_13 as (
select * from calendar where yyyyww in (SELECT yyyyww
FROM calendar)
union all
Expand All @@ -66,18 +93,31 @@ with cal_last_13 as (
union all
select * from calendar where yyyyww in (SELECT yyyyww
FROM calendar)
)
);

query II
explain
select
count(*)
from snapshot_data data
join cal_last_13 cal
on data.snapshot_ts >= cal.start_ts
and data.snapshot_ts <= cal.end_ts
----
3000
physical_plan <REGEX>:.*IE_JOIN.*

query I
with cal_last_13 as (
select
count(*)
from snapshot_data data
join cal_last_13 cal
on data.snapshot_ts >= cal.start_ts
and data.snapshot_ts <= cal.end_ts
----
3000

statement ok
create or replace table cal_last_13 as (
select * from calendar where yyyyww in (SELECT yyyyww
FROM calendar)
union all
Expand All @@ -86,7 +126,23 @@ with cal_last_13 as (
union all
select * from calendar where yyyyww in (SELECT yyyyww
FROM calendar)
)
);

query II
explain
select
count(*)
from snapshot_data data
join cal_last_13 cal
on data.snapshot_ts >= cal.start_ts
and data.snapshot_ts <= cal.end_ts
join cal_last_13 cal2
on data.snapshot_ts >= cal2.start_ts
and data.snapshot_ts <= cal2.end_ts
----
physical_plan <REGEX>:.*IE_JOIN.*

query I
select
count(*)
from snapshot_data data
Expand Down
42 changes: 42 additions & 0 deletions test/sql/join/iejoin/predicate_expressions.test
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ PRAGMA enable_verification
statement ok
SET merge_join_threshold=0

statement ok
PRAGMA explain_output = PHYSICAL_ONLY;

# Create a range of dates
statement ok
create table calendar as SELECT *
Expand All @@ -34,6 +37,19 @@ from calendar
cross join generate_series(1, 85) as n

# Aggregate each table by using a range join
query II
explain
select
range,
count(*) as n
from scd2_non_null
inner join calendar
on range between range_start and ifnull(range_end,'2099-01-01')
group by range
order by range
----
physical_plan <REGEX>:.*IE_JOIN.*

query II nosort expected
select
range,
Expand All @@ -45,6 +61,19 @@ group by range
order by range

# First key should work
query II
explain
select
range,
count(*) as n
from scd2
inner join calendar
on range <= ifnull(range_end,'2099-01-01') and range_start <= range
group by range
order by range
----
physical_plan <REGEX>:.*IE_JOIN.*

query II nosort expected
select
range,
Expand All @@ -56,6 +85,19 @@ group by range
order by range

# Second key should work
query II
explain
select
range,
count(*) as n
from scd2
inner join calendar
on range between range_start and ifnull(range_end,'2099-01-01')
group by range
order by range
----
physical_plan <REGEX>:.*IE_JOIN.*

query II nosort expected
select
range,
Expand Down
Loading
Loading