@@ -17,209 +17,192 @@ import (
17
17
18
18
const driverName = "engine_tests"
19
19
20
- func TestQueries (t * testing.T ) {
21
- e := newEngine (t )
22
-
23
- testQuery (t , e ,
20
+ var queries = []struct {
21
+ query string
22
+ expected []sql.Row
23
+ }{
24
+ {
24
25
"SELECT i FROM mytable;" ,
25
- [][]interface {}{{int64 (1 )}, {int64 (2 )}, {int64 (3 )}},
26
- )
27
-
28
- testQuery (t , e ,
26
+ []sql.Row {{int64 (1 )}, {int64 (2 )}, {int64 (3 )}},
27
+ },
28
+ {
29
29
"SELECT i FROM mytable WHERE i = 2;" ,
30
- [][]interface {}{{int64 (2 )}},
31
- )
32
-
33
- testQuery (t , e ,
30
+ []sql.Row {{int64 (2 )}},
31
+ },
32
+ {
34
33
"SELECT i FROM mytable ORDER BY i DESC;" ,
35
- [][]interface {}{{int64 (3 )}, {int64 (2 )}, {int64 (1 )}},
36
- )
37
-
38
- testQuery (t , e ,
34
+ []sql.Row {{int64 (3 )}, {int64 (2 )}, {int64 (1 )}},
35
+ },
36
+ {
39
37
"SELECT i FROM mytable WHERE s = 'first row' ORDER BY i DESC;" ,
40
- [][]interface {}{{int64 (1 )}},
41
- )
42
-
43
- testQuery (t , e ,
38
+ []sql.Row {{int64 (1 )}},
39
+ },
40
+ {
44
41
"SELECT i FROM mytable WHERE s = 'first row' ORDER BY i DESC LIMIT 1;" ,
45
- [][]interface {}{{int64 (1 )}},
46
- )
47
-
48
- testQuery (t , e ,
42
+ []sql.Row {{int64 (1 )}},
43
+ },
44
+ {
49
45
"SELECT COUNT(*) FROM mytable;" ,
50
- [][]interface {}{{int32 (3 )}},
51
- )
52
-
53
- testQuery (t , e ,
46
+ []sql.Row {{int32 (3 )}},
47
+ },
48
+ {
54
49
"SELECT COUNT(*) FROM mytable LIMIT 1;" ,
55
- [][]interface {}{{int32 (3 )}},
56
- )
57
-
58
- testQuery (t , e ,
50
+ []sql.Row {{int32 (3 )}},
51
+ },
52
+ {
59
53
"SELECT COUNT(*) AS c FROM mytable;" ,
60
- [][]interface {}{{int32 (3 )}},
61
- )
62
-
63
- testQuery (t , e ,
54
+ []sql.Row {{int32 (3 )}},
55
+ },
56
+ {
64
57
"SELECT substring(s, 2, 3) FROM mytable" ,
65
- [][]interface {}{{"irs" }, {"eco" }, {"hir" }},
66
- )
67
-
68
- testQuery (t , e ,
58
+ []sql.Row {{"irs" }, {"eco" }, {"hir" }},
59
+ },
60
+ {
69
61
"SELECT YEAR('2007-12-11') FROM mytable" ,
70
- [][]interface {}{{int32 (2007 )}, {int32 (2007 )}, {int32 (2007 )}},
71
- )
72
-
73
- testQuery (t , e ,
62
+ []sql.Row {{int32 (2007 )}, {int32 (2007 )}, {int32 (2007 )}},
63
+ },
64
+ {
74
65
"SELECT MONTH('2007-12-11') FROM mytable" ,
75
- [][]interface {}{{int32 (12 )}, {int32 (12 )}, {int32 (12 )}},
76
- )
77
-
78
- testQuery (t , e ,
66
+ []sql.Row {{int32 (12 )}, {int32 (12 )}, {int32 (12 )}},
67
+ },
68
+ {
79
69
"SELECT DAY('2007-12-11') FROM mytable" ,
80
- [][]interface {}{{int32 (11 )}, {int32 (11 )}, {int32 (11 )}},
81
- )
82
-
83
- testQuery (t , e ,
70
+ []sql.Row {{int32 (11 )}, {int32 (11 )}, {int32 (11 )}},
71
+ },
72
+ {
84
73
"SELECT HOUR('2007-12-11 20:21:22') FROM mytable" ,
85
- [][]interface {}{{int32 (20 )}, {int32 (20 )}, {int32 (20 )}},
86
- )
87
-
88
- testQuery (t , e ,
74
+ []sql.Row {{int32 (20 )}, {int32 (20 )}, {int32 (20 )}},
75
+ },
76
+ {
89
77
"SELECT MINUTE('2007-12-11 20:21:22') FROM mytable" ,
90
- [][]interface {}{{int32 (21 )}, {int32 (21 )}, {int32 (21 )}},
91
- )
92
-
93
- testQuery (t , e ,
78
+ []sql.Row {{int32 (21 )}, {int32 (21 )}, {int32 (21 )}},
79
+ },
80
+ {
94
81
"SELECT SECOND('2007-12-11 20:21:22') FROM mytable" ,
95
- [][]interface {}{{int32 (22 )}, {int32 (22 )}, {int32 (22 )}},
96
- )
97
-
98
- testQuery (t , e ,
82
+ []sql.Row {{int32 (22 )}, {int32 (22 )}, {int32 (22 )}},
83
+ },
84
+ {
99
85
"SELECT DAYOFYEAR('2007-12-11 20:21:22') FROM mytable" ,
100
- [][]interface {}{{int32 (345 )}, {int32 (345 )}, {int32 (345 )}},
101
- )
102
-
103
- testQuery (t , e ,
86
+ []sql.Row {{int32 (345 )}, {int32 (345 )}, {int32 (345 )}},
87
+ },
88
+ {
104
89
"SELECT i FROM mytable WHERE i BETWEEN 1 AND 2" ,
105
- [][]interface {}{{int64 (1 )}, {int64 (2 )}},
106
- )
107
-
108
- testQuery (t , e ,
90
+ []sql.Row {{int64 (1 )}, {int64 (2 )}},
91
+ },
92
+ {
109
93
"SELECT i FROM mytable WHERE i NOT BETWEEN 1 AND 2" ,
110
- [][]interface {}{{int64 (3 )}},
111
- )
112
-
113
- testQuery (t , e ,
94
+ []sql.Row {{int64 (3 )}},
95
+ },
96
+ {
114
97
"SELECT i, i2, s2 FROM mytable INNER JOIN othertable ON i = i2" ,
115
- [][] interface {} {
98
+ []sql. Row {
116
99
{int64 (1 ), int64 (1 ), "third" },
117
100
{int64 (2 ), int64 (2 ), "second" },
118
101
{int64 (3 ), int64 (3 ), "first" },
119
102
},
120
- )
121
-
122
- testQuery (t , e ,
123
- "SELECT s FROM mytable INNER JOIN othertable " +
103
+ },
104
+ {
105
+ "SELECT s FROM mytable INNER JOIN othertable " +
124
106
"ON substring(s2, 1, 2) != '' AND i = i2" ,
125
- [][] interface {} {
107
+ []sql. Row {
126
108
{"first row" },
127
109
{"second row" },
128
110
{"third row" },
129
111
},
130
- )
131
-
132
- testQuery (t , e ,
112
+ },
113
+ {
133
114
`SELECT COUNT(*) as cnt, fi FROM (
134
115
SELECT tbl.s AS fi
135
116
FROM mytable tbl
136
117
) t
137
118
GROUP BY fi` ,
138
- [][] interface {} {
119
+ []sql. Row {
139
120
{int32 (1 ), "first row" },
140
121
{int32 (1 ), "second row" },
141
122
{int32 (1 ), "third row" },
142
123
},
143
- )
144
-
145
- testQuery (t , e ,
124
+ },
125
+ {
146
126
"SELECT CAST(-3 AS UNSIGNED) FROM mytable" ,
147
- [][] interface {} {
127
+ []sql. Row {
148
128
{uint64 (18446744073709551613 )},
149
129
{uint64 (18446744073709551613 )},
150
130
{uint64 (18446744073709551613 )},
151
131
},
152
- )
153
-
154
- testQuery (t , e ,
132
+ },
133
+ {
155
134
"SELECT CONVERT(-3, UNSIGNED) FROM mytable" ,
156
- [][] interface {} {
135
+ []sql. Row {
157
136
{uint64 (18446744073709551613 )},
158
137
{uint64 (18446744073709551613 )},
159
138
{uint64 (18446744073709551613 )},
160
139
},
161
- )
162
-
163
- testQuery (t , e ,
140
+ },
141
+ {
164
142
"SELECT '3' > 2 FROM tabletest" ,
165
- [][] interface {} {
143
+ []sql. Row {
166
144
{true },
167
145
{true },
168
146
{true },
169
147
},
170
- )
171
-
172
- testQuery (t , e ,
148
+ },
149
+ {
173
150
"SELECT text > 2 FROM tabletest" ,
174
- [][] interface {} {
151
+ []sql. Row {
175
152
{false },
176
153
{false },
177
154
{false },
178
155
},
179
- )
180
-
181
- testQuery (t , e ,
156
+ },
157
+ {
182
158
"SELECT * FROM tabletest WHERE text > 0" ,
183
159
nil ,
184
- )
185
-
186
- testQuery (t , e ,
160
+ },
161
+ {
187
162
"SELECT * FROM tabletest WHERE text = 0" ,
188
- [][] interface {} {
163
+ []sql. Row {
189
164
{"a" , int32 (1 )},
190
165
{"b" , int32 (2 )},
191
166
{"c" , int32 (3 )},
192
167
},
193
- )
194
-
195
- testQuery (t , e ,
168
+ },
169
+ {
196
170
"SELECT * FROM tabletest WHERE text = 'a'" ,
197
- [][] interface {} {
171
+ []sql. Row {
198
172
{"a" , int32 (1 )},
199
173
},
200
- )
201
-
202
- testQuery (t , e ,
174
+ },
175
+ {
203
176
"SELECT s FROM mytable WHERE i IN (1, 2, 5)" ,
204
- [][] interface {} {
177
+ []sql. Row {
205
178
{"first row" },
206
179
{"second row" },
207
180
},
208
- )
209
-
210
- testQuery (t , e ,
181
+ },
182
+ {
211
183
"SELECT s FROM mytable WHERE i NOT IN (1, 2, 5)" ,
212
- [][] interface {} {
184
+ []sql. Row {
213
185
{"third row" },
214
186
},
215
- )
216
-
217
- testQuery (t , e ,
187
+ },
188
+ {
218
189
"SELECT 1 + 2" ,
219
- [][] interface {} {
190
+ []sql. Row {
220
191
{int64 (3 )},
221
192
},
222
- )
193
+ },
194
+ {
195
+ `SELECT i AS foo FROM mytable WHERE foo NOT IN (1, 2, 5)` ,
196
+ []sql.Row {{int64 (3 )}},
197
+ },
198
+ }
199
+
200
+ func TestQueries (t * testing.T ) {
201
+ e := newEngine (t )
202
+
203
+ for _ , tt := range queries {
204
+ testQuery (t , e , tt .query , tt .expected )
205
+ }
223
206
}
224
207
225
208
func TestOrderByColumns (t * testing.T ) {
@@ -246,12 +229,12 @@ func TestInsertInto(t *testing.T) {
246
229
e := newEngine (t )
247
230
testQuery (t , e ,
248
231
"INSERT INTO mytable (s, i) VALUES ('x', 999);" ,
249
- [][] interface {} {{int64 (1 )}},
232
+ []sql. Row {{int64 (1 )}},
250
233
)
251
234
252
235
testQuery (t , e ,
253
236
"SELECT i FROM mytable WHERE s = 'x';" ,
254
- [][] interface {} {{int64 (999 )}},
237
+ []sql. Row {{int64 (999 )}},
255
238
)
256
239
}
257
240
@@ -318,7 +301,7 @@ func TestDDL(t *testing.T) {
318
301
testQuery (t , e ,
319
302
"CREATE TABLE t1(a INTEGER, b TEXT, c DATE," +
320
303
"d TIMESTAMP, e VARCHAR(20), f BLOB NOT NULL)" ,
321
- [][] interface {} (nil ),
304
+ []sql. Row (nil ),
322
305
)
323
306
324
307
db , err := e .Catalog .Database ("mydb" )
@@ -339,15 +322,15 @@ func TestDDL(t *testing.T) {
339
322
require .Equal (s , testTable .Schema ())
340
323
}
341
324
342
- func testQuery (t * testing.T , e * sqle.Engine , q string , r [][] interface {} ) {
325
+ func testQuery (t * testing.T , e * sqle.Engine , q string , r []sql. Row ) {
343
326
t .Run (q , func (t * testing.T ) {
344
327
require := require .New (t )
345
328
session := sql .NewEmptyContext ()
346
329
347
330
_ , rows , err := e .Query (session , q )
348
331
require .NoError (err )
349
332
350
- var rs [][] interface {}
333
+ var rs []sql. Row
351
334
for {
352
335
row , err := rows .Next ()
353
336
if err == io .EOF {
@@ -463,8 +446,6 @@ func TestTracing(t *testing.T) {
463
446
"plan.Sort" ,
464
447
}
465
448
466
- require .Len (spans , 77 )
467
-
468
449
var spanOperations []string
469
450
for _ , s := range spans {
470
451
name := s .(* jaeger.Span ).OperationName ()
0 commit comments