Skip to content

Commit d8f4778

Browse files
authored
f24-p3: update test for index scan (#770)
1 parent 2dd141e commit d8f4778

File tree

2 files changed

+252
-0
lines changed

2 files changed

+252
-0
lines changed
File renamed without changes.

test/sql/p3.05-index-scan-btree.slt

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
# 6 pts
2+
3+
# Ensure all order-bys in this file are transformed into index scan
4+
statement ok
5+
set force_optimizer_starter_rule=yes
6+
7+
# Create a table
8+
statement ok
9+
create table t1(v1 int, v2 int, v3 int);
10+
11+
query
12+
insert into t1 values (1, 50, 645), (2, 40, 721), (4, 20, 445), (5, 10, 445), (3, 30, 645);
13+
----
14+
5
15+
16+
# Build index
17+
statement ok
18+
create index t1v1 on t1(v1);
19+
20+
statement ok
21+
create index t1v2 on t1(v2);
22+
23+
statement ok
24+
explain select * from t1 order by v1;
25+
26+
statement ok
27+
explain select * from t1 order by v2;
28+
29+
query +ensure:index_scan
30+
select * from t1 order by v1;
31+
----
32+
1 50 645
33+
2 40 721
34+
3 30 645
35+
4 20 445
36+
5 10 445
37+
38+
query +ensure:index_scan
39+
select * from t1 order by v2;
40+
----
41+
5 10 445
42+
4 20 445
43+
3 30 645
44+
2 40 721
45+
1 50 645
46+
47+
query rowsort +ensure:index_scan
48+
select * from t1 where v1 = 2;
49+
----
50+
2 40 721
51+
52+
query rowsort +ensure:index_scan
53+
select * from t1 where 4 = v1 or v1 = 7;
54+
----
55+
4 20 445
56+
57+
# Insert more elements
58+
query
59+
insert into t1 values (6, 0, 721), (7, -10, 645);
60+
----
61+
2
62+
63+
query +ensure:index_scan
64+
select * from t1 order by v1;
65+
----
66+
1 50 645
67+
2 40 721
68+
3 30 645
69+
4 20 445
70+
5 10 445
71+
6 0 721
72+
7 -10 645
73+
74+
query +ensure:index_scan
75+
select * from t1 order by v2;
76+
----
77+
7 -10 645
78+
6 0 721
79+
5 10 445
80+
4 20 445
81+
3 30 645
82+
2 40 721
83+
1 50 645
84+
85+
query rowsort +ensure:index_scan
86+
select * from t1 where 4 = v1 or v1 = 7;
87+
----
88+
4 20 445
89+
7 -10 645
90+
91+
# Update some elements
92+
query +ensure:index_scan
93+
update t1 set v3 = 645, v1 = 8, v2 = -20 where v1 = 2;
94+
----
95+
1
96+
97+
query +ensure:index_scan
98+
select * from t1 order by v1;
99+
----
100+
1 50 645
101+
3 30 645
102+
4 20 445
103+
5 10 445
104+
6 0 721
105+
7 -10 645
106+
8 -20 645
107+
108+
query +ensure:index_scan
109+
select * from t1 order by v2;
110+
----
111+
8 -20 645
112+
7 -10 645
113+
6 0 721
114+
5 10 445
115+
4 20 445
116+
3 30 645
117+
1 50 645
118+
119+
query rowsort +ensure:index_scan
120+
select * from t1 where 8 = v1;
121+
----
122+
8 -20 645
123+
124+
query rowsort +ensure:index_scan
125+
select * from t1 where v2 = 10 or v2 = 20 or v2 = 30 or v2 = 40;
126+
----
127+
4 20 445
128+
5 10 445
129+
3 30 645
130+
131+
query +ensure:index_scan
132+
update t1 set v1 = 2 where v1 = 8;
133+
----
134+
1
135+
136+
# Delete some elements
137+
query +ensure:index_scan
138+
delete from t1 where v1 = 2;
139+
----
140+
1
141+
142+
query +ensure:index_scan
143+
select * from t1 order by v1;
144+
----
145+
1 50 645
146+
3 30 645
147+
4 20 445
148+
5 10 445
149+
6 0 721
150+
7 -10 645
151+
152+
query +ensure:index_scan
153+
select * from t1 order by v2;
154+
----
155+
7 -10 645
156+
6 0 721
157+
5 10 445
158+
4 20 445
159+
3 30 645
160+
1 50 645
161+
162+
query rowsort +ensure:index_scan
163+
select * from t1 where 3 = v1 or v1 = 0 or 7 = v1;
164+
----
165+
7 -10 645
166+
3 30 645
167+
168+
query rowsort
169+
select * from t1 where v1 = 8 or v2 = 30;
170+
----
171+
3 30 645
172+
173+
query rowsort
174+
select * from t1 where v1 = 5 and v2 = 10;
175+
----
176+
5 10 445
177+
178+
# Delete some elements
179+
query +ensure:index_scan
180+
delete from t1 where v2 = 30;
181+
----
182+
1
183+
184+
query +ensure:index_scan
185+
select * from t1 order by v1;
186+
----
187+
1 50 645
188+
4 20 445
189+
5 10 445
190+
6 0 721
191+
7 -10 645
192+
193+
query +ensure:index_scan
194+
select * from t1 order by v2;
195+
----
196+
7 -10 645
197+
6 0 721
198+
5 10 445
199+
4 20 445
200+
1 50 645
201+
202+
# Delete all
203+
query
204+
delete from t1;
205+
----
206+
5
207+
208+
query +ensure:index_scan
209+
select * from t1 order by v1;
210+
----
211+
212+
213+
query +ensure:index_scan
214+
select * from t1 order by v2;
215+
----
216+
217+
218+
# Insert more elements
219+
query
220+
insert into t1 values (6, 0, 445), (7, -10, 645), (8, 10, 445);
221+
----
222+
3
223+
224+
query +ensure:index_scan
225+
select * from t1 order by v1;
226+
----
227+
6 0 445
228+
7 -10 645
229+
8 10 445
230+
231+
query +ensure:index_scan
232+
select * from t1 order by v2;
233+
----
234+
7 -10 645
235+
6 0 445
236+
8 10 445
237+
238+
query rowsort +ensure:index_scan
239+
select * from t1 where 3 = v1 or v1 = 4 or v1 = 6 or 9 = v1;
240+
----
241+
6 0 445
242+
243+
query rowsort +ensure:index_scan
244+
select * from t1 where v2 = 0;
245+
----
246+
6 0 445
247+
248+
query rowsort
249+
select * from t1 where v3 = 445;
250+
----
251+
6 0 445
252+
8 10 445

0 commit comments

Comments
 (0)