Skip to content

Commit af80e8b

Browse files
test(p3): add nlj and hash join checks (#529)
1 parent 4e254a9 commit af80e8b

File tree

9 files changed

+108
-79
lines changed

9 files changed

+108
-79
lines changed

src/execution/mock_scan_executor.cpp

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,21 @@ static const char *ta_list_2022[] = {"amstqq", "durovo", "joyceliaoo",
2626
"kush789", "lmwnshn", "mkpjnx", "skyzh",
2727
"thepinetree", "timlee0119", "yliang412"};
2828

29+
static const char *ta_list_2023[] = {"abigalekim", "arvinwu168", "christopherlim98", "David-Lyons", "fanyuex2",
30+
"Mayank-Baranwal", "skyzh", "yarkhinephyo", "yliang412"};
31+
2932
static const char *ta_oh_2022[] = {"Tuesday", "Wednesday", "Monday", "Wednesday", "Thursday", "Friday",
3033
"Wednesday", "Randomly", "Tuesday", "Monday", "Tuesday"};
3134

35+
static const char *ta_oh_2023[] = {"Friday", "Thursday", "Tuesday", "Monday", "Tuesday",
36+
"Tuesday", "Randomly", "Wednesday", "Thursday"};
37+
3238
static const char *course_on_date[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
3339

3440
const char *mock_table_list[] = {"__mock_table_1", "__mock_table_2", "__mock_table_3", "__mock_table_tas_2022",
35-
"__mock_agg_input_small", "__mock_agg_input_big", "__mock_table_schedule_2022",
36-
"__mock_table_schedule_2023", "__mock_table_123", "__mock_graph",
41+
"__mock_table_tas_2023", "__mock_agg_input_small", "__mock_agg_input_big",
42+
"__mock_table_schedule_2022", "__mock_table_schedule_2023", "__mock_table_123",
43+
"__mock_graph",
3744
// For leaderboard Q1
3845
"__mock_t1_50k", "__mock_t2_100k", "__mock_t3_1k",
3946
// For leaderboard Q2
@@ -60,6 +67,10 @@ auto GetMockTableSchemaOf(const std::string &table) -> Schema {
6067
return Schema{std::vector{Column{"github_id", TypeId::VARCHAR, 128}, Column{"office_hour", TypeId::VARCHAR, 128}}};
6168
}
6269

70+
if (table == "__mock_table_tas_2023") {
71+
return Schema{std::vector{Column{"github_id", TypeId::VARCHAR, 128}, Column{"office_hour", TypeId::VARCHAR, 128}}};
72+
}
73+
6374
if (table == "__mock_table_schedule_2022") {
6475
return Schema{std::vector{Column{"day_of_week", TypeId::VARCHAR, 128}, Column{"has_lecture", TypeId::INTEGER}}};
6576
}
@@ -120,6 +131,10 @@ auto GetSizeOf(const MockScanPlanNode *plan) -> size_t {
120131
return sizeof(ta_list_2022) / sizeof(ta_list_2022[0]);
121132
}
122133

134+
if (table == "__mock_table_tas_2023") {
135+
return sizeof(ta_list_2023) / sizeof(ta_list_2023[0]);
136+
}
137+
123138
if (table == "__mock_table_schedule_2022") {
124139
return sizeof(course_on_date) / sizeof(course_on_date[0]);
125140
}
@@ -236,6 +251,15 @@ auto GetFunctionOf(const MockScanPlanNode *plan) -> std::function<Tuple(size_t)>
236251
};
237252
}
238253

254+
if (table == "__mock_table_tas_2023") {
255+
return [plan](size_t cursor) {
256+
std::vector<Value> values{};
257+
values.push_back(ValueFactory::GetVarcharValue(ta_list_2023[cursor]));
258+
values.push_back(ValueFactory::GetVarcharValue(ta_oh_2023[cursor]));
259+
return Tuple{values, &plan->OutputSchema()};
260+
};
261+
}
262+
239263
if (table == "__mock_table_schedule_2022") {
240264
return [plan](size_t cursor) {
241265
std::vector<Value> values{};

test/sql/p3.00-primer.slt

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
query rowsort
2-
select github_id from __mock_table_tas_2022;
2+
select github_id from __mock_table_tas_2023;
33
----
4-
amstqq
5-
durovo
6-
joyceliaoo
7-
karthik-ramanathan-3006
8-
kush789
9-
lmwnshn
10-
mkpjnx
11-
skyzh
12-
thepinetree
13-
timlee0119
14-
yliang412
4+
abigalekim
5+
arvinwu168
6+
christopherlim98
7+
David-Lyons
8+
fanyuex2
9+
Mayank-Baranwal
10+
skyzh
11+
yarkhinephyo
12+
yliang412

test/sql/p3.06-simple-agg.slt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# 5 pts
22

3-
# How many TAs are there in 2022 Fall?
3+
# How many TAs are there in 2023 Spring?
44
query
5-
select count(*) from __mock_table_tas_2022;
5+
select count(*) from __mock_table_tas_2023;
66
----
7-
11
7+
9
88

99
# The real test process begins...
1010

test/sql/p3.07-group-agg-1.slt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
# "rowsort" means that the order of result doesn't matter.
55

66
query rowsort
7-
select office_hour, count(*) from __mock_table_tas_2022 group by office_hour;
7+
select office_hour, count(*) from __mock_table_tas_2023 group by office_hour;
88
----
9-
Monday 2
9+
Monday 1
1010
Tuesday 3
11-
Wednesday 3
12-
Thursday 1
11+
Wednesday 1
12+
Thursday 2
1313
Friday 1
1414
Randomly 1
1515

test/sql/p3.09-simple-join.slt

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,21 @@
33
# Show office hours on lecture days
44
# "rowsort" means that the order of result doesn't matter.
55

6+
statement ok
7+
set force_optimizer_starter_rule=yes
8+
69
query rowsort
710
select * from
8-
__mock_table_tas_2022 inner join __mock_table_schedule_2022
11+
__mock_table_tas_2023 inner join __mock_table_schedule_2023
912
on office_hour = day_of_week
1013
where has_lecture = 1;
1114
----
12-
amstqq Tuesday Tuesday 1
13-
thepinetree Tuesday Tuesday 1
14-
yliang412 Tuesday Tuesday 1
15-
kush789 Thursday Thursday 1
15+
David-Lyons Monday Monday 1
16+
yarkhinephyo Wednesday Wednesday 1
1617

1718
# The real test begins...
1819

19-
query rowsort
20+
query rowsort +ensure:nlj_init_check
2021
select * from test_simple_seq_1 s1 inner join test_simple_seq_2 s2 on s1.col1 + 5 = s2.col1;
2122
----
2223
0 5 15
@@ -26,7 +27,7 @@ select * from test_simple_seq_1 s1 inner join test_simple_seq_2 s2 on s1.col1 +
2627
4 9 19
2728

2829

29-
query rowsort
30+
query rowsort +ensure:nlj_init_check
3031
select * from test_simple_seq_1 s1 left join test_simple_seq_2 s2 on s1.col1 + 5 = s2.col1;
3132
----
3233
0 5 15
@@ -304,7 +305,7 @@ insert into temp_3 values
304305
(19, 974),
305306
(20, 739);
306307

307-
query rowsort
308+
query rowsort +ensure:nlj_init_check
308309
select * from temp_1 t1 inner join test_simple_seq_2 seq on t1.colA = seq.col2 ;
309310
----
310311
10 8 398 60977 0 10
@@ -324,14 +325,14 @@ select * from __mock_table_1 m1 inner join temp_1 t1 on t1.colA = m1.colB;
324325
0 0 0 1 6113 48270
325326

326327

327-
query rowsort
328+
query rowsort +ensure:nlj_init_check
328329
select * from temp_1 t1 inner join temp_2 t2 on t1.colD = t2.colA;
329330
----
330331
60 5 4347 34 34 311 4
331332

332333

333334
# Non-eq condition
334-
query rowsort
335+
query rowsort +ensure:nlj_init_check
335336
select * from temp_2 t2 inner join test_simple_seq_2 s2 on t2.colB < s2.col2;
336337
----
337338
15 2 5 0 10
@@ -362,7 +363,7 @@ create table t2(v1 int, v2 int);
362363
statement ok
363364
insert into t2 values (0, 45), (0, 45), (0, 65), (1, 45), (1, 45), (1, 65), (2, 45);
364365

365-
query rowsort
366+
query rowsort +ensure:nlj_init_check
366367
select * from temp_2 inner join t2 on v2 = colA;
367368
----
368369
45 518 5 0 45
@@ -374,7 +375,7 @@ select * from temp_2 inner join t2 on v2 = colA;
374375
45 518 5 2 45
375376

376377

377-
query rowsort
378+
query rowsort +ensure:nlj_init_check
378379
select * from temp_3 t3 inner join temp_2 t2 on t3.colB = t2.colA;
379380
----
380381
5 29 29 538 9
@@ -389,7 +390,7 @@ select * from temp_3 t3 inner join temp_2 t2 on t3.colB = t2.colA;
389390
16 52 52 276 2
390391
18 38 38 194 8
391392

392-
query rowsort
393+
query rowsort +ensure:nlj_init_check
393394
select * from
394395
(select * from temp_2 where colB < 10) t2 inner join
395396
(select distinct(temp_2.colA) from temp_1 inner join temp_2 on temp_1.colC = temp_2.colA) t3

test/sql/p3.10-multi-way-join.slt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
# 5 pts
22

3+
statement ok
4+
set force_optimizer_starter_rule=yes
5+
36
statement ok
47
create table t1(v1 int);
58

69
statement ok
710
insert into t1 values (1), (1);
811

9-
query
12+
query +ensure:nlj_init_check
1013
select * from (t1 a inner join t1 b on a.v1 = b.v1) inner join t1 c on a.v1 = c.v1;
1114
----
1215
1 1 1
@@ -18,7 +21,7 @@ select * from (t1 a inner join t1 b on a.v1 = b.v1) inner join t1 c on a.v1 = c.
1821
1 1 1
1922
1 1 1
2023

21-
query rowsort
24+
query rowsort +ensure:nlj_init_check
2225
select * from __mock_table_123 a, __mock_table_123 b, __mock_table_123 c;
2326
----
2427
1 1 1
@@ -344,15 +347,15 @@ create table t3(v1 int); insert into t3 values (1), (2), (3);
344347
statement ok
345348
create table t4(v1 int); insert into t4 values (2), (3), (3);
346349

347-
query rowsort
350+
query rowsort +ensure:nlj_init_check
348351
select * from t3 left join t2 on t2.v1 = t3.v1;
349352
----
350353
1 1
351354
1 1
352355
2 2
353356
3 integer_null
354357

355-
query rowsort
358+
query rowsort +ensure:nlj_init_check
356359
select * from (t3 left join t2 on t2.v1 = t3.v1) left join t4 on t3.v1 = t4.v1;
357360
----
358361
1 1 integer_null
@@ -364,7 +367,7 @@ select * from (t3 left join t2 on t2.v1 = t3.v1) left join t4 on t3.v1 = t4.v1;
364367
statement ok
365368
create table t5(v1 int);
366369

367-
query rowsort
370+
query rowsort +ensure:nlj_init_check
368371
select * from ((t3 left join t5 on t3.v1 < t5.v1) left join t5 as t52 on t3.v1 < t52.v1) left join t5 as t53 on t3.v1 < t53.v1;
369372
----
370373
1 integer_null integer_null integer_null

test/sql/p3.11-repeat-execute.slt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ insert into t1 values (0, '🥰'), (1, '🥰🥰');
1111

1212
# SeqScan as the right child
1313

14-
query rowsort
14+
query rowsort +ensure:nlj_init_check
1515
select * from __mock_table_123, t1;
1616
----
1717
1 0 🥰
@@ -23,7 +23,7 @@ select * from __mock_table_123, t1;
2323

2424
# SimpleAgg as the right child
2525

26-
query rowsort
26+
query rowsort +ensure:nlj_init_check
2727
select * from __mock_table_123, (select count(*) as cnt from t1);
2828
----
2929
1 2
@@ -32,7 +32,7 @@ select * from __mock_table_123, (select count(*) as cnt from t1);
3232

3333
# GroupAgg as the right child
3434

35-
query rowsort
35+
query rowsort +ensure:nlj_init_check
3636
select * from __mock_table_123, (select distinct v2 from t1);
3737
----
3838
1 🥰🥰
@@ -47,7 +47,7 @@ select * from __mock_table_123, (select distinct v2 from t1);
4747
statement ok
4848
create index t1v1 on t1(v1);
4949

50-
query rowsort
50+
query rowsort +ensure:nlj_init_check
5151
select * from __mock_table_123, (select * from t1 order by v1);
5252
----
5353
1 0 🥰

test/sql/p3.13-sort-limit.slt

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,51 +4,45 @@
44

55
# Default
66
query
7-
select * from __mock_table_tas_2022 order by office_hour, github_id;
7+
select * from __mock_table_tas_2023 order by office_hour, github_id;
88
----
9-
lmwnshn Friday
10-
joyceliaoo Monday
11-
timlee0119 Monday
9+
abigalekim Friday
10+
David-Lyons Monday
1211
skyzh Randomly
13-
kush789 Thursday
14-
amstqq Tuesday
15-
thepinetree Tuesday
16-
yliang412 Tuesday
17-
durovo Wednesday
18-
karthik-ramanathan-3006 Wednesday
19-
mkpjnx Wednesday
12+
arvinwu168 Thursday
13+
yliang412 Thursday
14+
Mayank-Baranwal Tuesday
15+
christopherlim98 Tuesday
16+
fanyuex2 Tuesday
17+
yarkhinephyo Wednesday
2018

2119
# ASC
2220
query
23-
select * from __mock_table_tas_2022 order by office_hour asc, github_id desc;
21+
select * from __mock_table_tas_2023 order by office_hour asc, github_id desc;
2422
----
25-
lmwnshn Friday
26-
timlee0119 Monday
27-
joyceliaoo Monday
28-
skyzh Randomly
29-
kush789 Thursday
30-
yliang412 Tuesday
31-
thepinetree Tuesday
32-
amstqq Tuesday
33-
mkpjnx Wednesday
34-
karthik-ramanathan-3006 Wednesday
35-
durovo Wednesday
23+
abigalekim Friday
24+
David-Lyons Monday
25+
skyzh Randomly
26+
yliang412 Thursday
27+
arvinwu168 Thursday
28+
fanyuex2 Tuesday
29+
christopherlim98 Tuesday
30+
Mayank-Baranwal Tuesday
31+
yarkhinephyo Wednesday
3632

3733

3834
query
39-
select * from __mock_table_tas_2022 order by github_id desc;
35+
select * from __mock_table_tas_2023 order by github_id desc;
4036
----
41-
yliang412 Tuesday
42-
timlee0119 Monday
43-
thepinetree Tuesday
37+
yliang412 Thursday
38+
yarkhinephyo Wednesday
4439
skyzh Randomly
45-
mkpjnx Wednesday
46-
lmwnshn Friday
47-
kush789 Thursday
48-
karthik-ramanathan-3006 Wednesday
49-
joyceliaoo Monday
50-
durovo Wednesday
51-
amstqq Tuesday
40+
fanyuex2 Tuesday
41+
christopherlim98 Tuesday
42+
arvinwu168 Thursday
43+
abigalekim Friday
44+
Mayank-Baranwal Tuesday
45+
David-Lyons Monday
5246

5347

5448
# Simple limit
@@ -381,7 +375,7 @@ select * from __mock_table_123, (select * from temp_1 order by colA desc limit 3
381375
3 98 3 1394 17139
382376
3 97 1 2273 63790
383377

384-
query rowsort
378+
query rowsort +ensure:nlj_init_check
385379
select * from
386380
temp_2 t2 inner join
387381
(select colB, colD, colA, colC from temp_1 order by colB desc, colD, colA desc limit 10 ) t1

0 commit comments

Comments
 (0)