• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

codenotary / immudb / 6783902372

07 Nov 2023 11:34AM UTC coverage: 89.548% (-0.02%) from 89.571%
6783902372

push

gh-ci

jeroiraz
test(pkg/pgsql): unit testing for deallocate stmt

Signed-off-by: Jeronimo Irazabal <jeronimo.irazabal@gmail.com>

33645 of 37572 relevant lines covered (89.55%)

146027.19 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.96
/embedded/sql/sql_parser.go
1
// Code generated by goyacc -l -o sql_parser.go sql_grammar.y. DO NOT EDIT.
2
package sql
3

4
import __yyfmt__ "fmt"
5

6
import "fmt"
7

8
func setResult(l yyLexer, stmts []SQLStmt) {
1,718✔
9
        l.(*lexer).result = stmts
1,718✔
10
}
1,718✔
11

12
type yySymType struct {
13
        yys           int
14
        stmts         []SQLStmt
15
        stmt          SQLStmt
16
        datasource    DataSource
17
        colsSpec      []*ColSpec
18
        colSpec       *ColSpec
19
        cols          []*ColSelector
20
        rows          []*RowSpec
21
        row           *RowSpec
22
        values        []ValueExp
23
        value         ValueExp
24
        id            string
25
        integer       uint64
26
        float         float64
27
        str           string
28
        boolean       bool
29
        blob          []byte
30
        sqlType       SQLValueType
31
        aggFn         AggregateFn
32
        ids           []string
33
        col           *ColSelector
34
        sel           Selector
35
        sels          []Selector
36
        distinct      bool
37
        ds            DataSource
38
        tableRef      *tableRef
39
        period        period
40
        openPeriod    *openPeriod
41
        periodInstant periodInstant
42
        joins         []*JoinSpec
43
        join          *JoinSpec
44
        joinType      JoinType
45
        exp           ValueExp
46
        binExp        ValueExp
47
        err           error
48
        ordcols       []*OrdCol
49
        opt_ord       bool
50
        logicOp       LogicOperator
51
        cmpOp         CmpOperator
52
        pparam        int
53
        update        *colUpdate
54
        updates       []*colUpdate
55
        onConflict    *OnConflictDo
56
}
57

58
const CREATE = 57346
59
const DROP = 57347
60
const USE = 57348
61
const DATABASE = 57349
62
const SNAPSHOT = 57350
63
const HISTORY = 57351
64
const SINCE = 57352
65
const AFTER = 57353
66
const BEFORE = 57354
67
const UNTIL = 57355
68
const TX = 57356
69
const OF = 57357
70
const TIMESTAMP = 57358
71
const TABLE = 57359
72
const UNIQUE = 57360
73
const INDEX = 57361
74
const ON = 57362
75
const ALTER = 57363
76
const ADD = 57364
77
const RENAME = 57365
78
const TO = 57366
79
const COLUMN = 57367
80
const PRIMARY = 57368
81
const KEY = 57369
82
const BEGIN = 57370
83
const TRANSACTION = 57371
84
const COMMIT = 57372
85
const ROLLBACK = 57373
86
const INSERT = 57374
87
const UPSERT = 57375
88
const INTO = 57376
89
const VALUES = 57377
90
const DELETE = 57378
91
const UPDATE = 57379
92
const SET = 57380
93
const CONFLICT = 57381
94
const DO = 57382
95
const NOTHING = 57383
96
const SELECT = 57384
97
const DISTINCT = 57385
98
const FROM = 57386
99
const JOIN = 57387
100
const HAVING = 57388
101
const WHERE = 57389
102
const GROUP = 57390
103
const BY = 57391
104
const LIMIT = 57392
105
const OFFSET = 57393
106
const ORDER = 57394
107
const ASC = 57395
108
const DESC = 57396
109
const AS = 57397
110
const UNION = 57398
111
const ALL = 57399
112
const NOT = 57400
113
const LIKE = 57401
114
const IF = 57402
115
const EXISTS = 57403
116
const IN = 57404
117
const IS = 57405
118
const AUTO_INCREMENT = 57406
119
const NULL = 57407
120
const CAST = 57408
121
const SCAST = 57409
122
const SHOW = 57410
123
const DATABASES = 57411
124
const TABLES = 57412
125
const NPARAM = 57413
126
const PPARAM = 57414
127
const JOINTYPE = 57415
128
const LOP = 57416
129
const CMPOP = 57417
130
const IDENTIFIER = 57418
131
const TYPE = 57419
132
const INTEGER = 57420
133
const FLOAT = 57421
134
const VARCHAR = 57422
135
const BOOLEAN = 57423
136
const BLOB = 57424
137
const AGGREGATE_FUNC = 57425
138
const ERROR = 57426
139
const DOT = 57427
140
const STMT_SEPARATOR = 57428
141

142
var yyToknames = [...]string{
143
        "$end",
144
        "error",
145
        "$unk",
146
        "CREATE",
147
        "DROP",
148
        "USE",
149
        "DATABASE",
150
        "SNAPSHOT",
151
        "HISTORY",
152
        "SINCE",
153
        "AFTER",
154
        "BEFORE",
155
        "UNTIL",
156
        "TX",
157
        "OF",
158
        "TIMESTAMP",
159
        "TABLE",
160
        "UNIQUE",
161
        "INDEX",
162
        "ON",
163
        "ALTER",
164
        "ADD",
165
        "RENAME",
166
        "TO",
167
        "COLUMN",
168
        "PRIMARY",
169
        "KEY",
170
        "BEGIN",
171
        "TRANSACTION",
172
        "COMMIT",
173
        "ROLLBACK",
174
        "INSERT",
175
        "UPSERT",
176
        "INTO",
177
        "VALUES",
178
        "DELETE",
179
        "UPDATE",
180
        "SET",
181
        "CONFLICT",
182
        "DO",
183
        "NOTHING",
184
        "SELECT",
185
        "DISTINCT",
186
        "FROM",
187
        "JOIN",
188
        "HAVING",
189
        "WHERE",
190
        "GROUP",
191
        "BY",
192
        "LIMIT",
193
        "OFFSET",
194
        "ORDER",
195
        "ASC",
196
        "DESC",
197
        "AS",
198
        "UNION",
199
        "ALL",
200
        "NOT",
201
        "LIKE",
202
        "IF",
203
        "EXISTS",
204
        "IN",
205
        "IS",
206
        "AUTO_INCREMENT",
207
        "NULL",
208
        "CAST",
209
        "SCAST",
210
        "SHOW",
211
        "DATABASES",
212
        "TABLES",
213
        "NPARAM",
214
        "PPARAM",
215
        "JOINTYPE",
216
        "LOP",
217
        "CMPOP",
218
        "IDENTIFIER",
219
        "TYPE",
220
        "INTEGER",
221
        "FLOAT",
222
        "VARCHAR",
223
        "BOOLEAN",
224
        "BLOB",
225
        "AGGREGATE_FUNC",
226
        "ERROR",
227
        "DOT",
228
        "','",
229
        "'+'",
230
        "'-'",
231
        "'*'",
232
        "'/'",
233
        "'.'",
234
        "STMT_SEPARATOR",
235
        "'('",
236
        "')'",
237
        "'['",
238
        "']'",
239
}
240

241
var yyStatenames = [...]string{}
242

243
const yyEofCode = 1
244
const yyErrCode = 2
245
const yyInitialStackSize = 16
246

247
var yyExca = [...]int16{
248
        -1, 1,
249
        1, -1,
250
        -2, 0,
251
        -1, 83,
252
        59, 150,
253
        62, 150,
254
        -2, 138,
255
        -1, 210,
256
        45, 114,
257
        -2, 109,
258
        -1, 243,
259
        45, 114,
260
        -2, 111,
261
}
262

263
const yyPrivate = 57344
264

265
const yyLast = 419
266

267
var yyAct = [...]int16{
268
        82, 331, 69, 204, 118, 236, 156, 264, 268, 97,
269
        162, 153, 193, 242, 110, 263, 6, 194, 175, 51,
270
        88, 113, 302, 313, 165, 166, 202, 255, 20, 254,
271
        230, 168, 202, 202, 307, 202, 306, 81, 287, 303,
272
        285, 256, 202, 231, 85, 297, 288, 87, 164, 22,
273
        203, 100, 96, 269, 19, 286, 250, 98, 99, 249,
274
        247, 229, 101, 68, 91, 92, 93, 94, 95, 70,
275
        270, 284, 227, 219, 86, 218, 201, 122, 265, 90,
276
        115, 85, 129, 136, 87, 145, 140, 141, 100, 96,
277
        226, 143, 223, 145, 98, 99, 215, 214, 177, 101,
278
        146, 91, 92, 93, 94, 95, 70, 130, 131, 133,
279
        132, 86, 158, 136, 144, 142, 90, 136, 124, 121,
280
        109, 155, 108, 330, 172, 136, 167, 159, 134, 135,
281
        291, 179, 180, 181, 182, 183, 184, 135, 169, 133,
282
        132, 130, 131, 133, 132, 192, 195, 71, 191, 130,
283
        131, 133, 132, 111, 70, 71, 324, 122, 196, 190,
284
        66, 290, 209, 230, 220, 104, 207, 197, 171, 210,
285
        202, 117, 216, 283, 217, 260, 251, 85, 221, 71,
286
        87, 212, 208, 211, 100, 96, 70, 71, 225, 222,
287
        98, 99, 160, 136, 80, 101, 290, 91, 92, 93,
288
        94, 95, 70, 120, 134, 135, 238, 86, 29, 30,
289
        189, 240, 90, 56, 154, 276, 246, 130, 131, 133,
290
        132, 262, 234, 114, 119, 200, 176, 195, 228, 199,
291
        198, 261, 176, 178, 173, 257, 136, 170, 267, 252,
292
        147, 125, 103, 258, 259, 74, 271, 134, 135, 102,
293
        72, 266, 275, 38, 277, 278, 272, 273, 58, 55,
294
        130, 131, 133, 132, 50, 161, 195, 245, 20, 57,
295
        139, 40, 41, 127, 128, 213, 282, 28, 292, 138,
296
        186, 301, 293, 281, 167, 296, 224, 185, 298, 300,
297
        136, 123, 187, 73, 19, 188, 46, 64, 304, 39,
298
        332, 333, 312, 311, 316, 237, 205, 323, 20, 310,
299
        317, 295, 111, 319, 10, 12, 11, 309, 45, 322,
300
        274, 325, 116, 36, 43, 321, 328, 329, 326, 314,
301
        163, 13, 305, 334, 19, 62, 335, 235, 7, 233,
302
        8, 9, 14, 15, 47, 48, 16, 17, 37, 35,
303
        34, 23, 20, 279, 149, 150, 151, 148, 107, 232,
304
        2, 24, 320, 239, 126, 59, 60, 61, 76, 75,
305
        206, 25, 27, 26, 49, 105, 106, 31, 19, 32,
306
        33, 248, 21, 44, 79, 78, 53, 54, 157, 289,
307
        112, 137, 280, 299, 315, 327, 253, 294, 84, 83,
308
        308, 244, 243, 241, 77, 52, 63, 42, 67, 65,
309
        89, 318, 152, 174, 18, 5, 4, 3, 1,
310
}
311

312
var yyPact = [...]int16{
313
        310, -1000, -1000, -43, -1000, -1000, -1000, 322, -1000, -1000,
314
        354, 201, 360, 363, 316, 315, 279, 177, 243, 202,
315
        281, -1000, 310, -1000, 236, 236, 236, 355, -1000, 188,
316
        376, 183, 193, 182, 177, 177, 177, 297, -1000, 240,
317
        -1000, -1000, 71, -1000, -1000, 174, 235, 169, 349, 236,
318
        -1000, -1000, 372, 23, 23, -1000, 166, 80, 353, 29,
319
        27, 265, 147, 226, -1000, 278, -1000, 85, 148, -1000,
320
        26, 72, -1000, 230, 25, 165, 344, -1000, 23, 23,
321
        -1000, 119, 130, 212, -1000, 119, 119, 22, -1000, -1000,
322
        119, -1000, -1000, -1000, -1000, -1000, 21, -1000, -1000, -1000,
323
        -1000, -8, -1000, 7, 164, 332, 330, 331, 138, 138,
324
        382, 119, 106, -1000, 190, -1000, -45, 103, -1000, -1000,
325
        161, 79, 158, -1000, 156, 5, 157, -1000, -1000, 130,
326
        119, 119, 119, 119, 119, 119, 222, 233, 133, -1000,
327
        62, 50, 226, 54, 119, 119, 138, -1000, 156, 154,
328
        153, 149, -18, 84, -1000, -44, 256, 351, 130, 382,
329
        147, 119, 382, 376, 266, 4, 3, 148, 0, 148,
330
        -1000, -19, -21, -1000, 78, -1000, 101, 138, -1, 50,
331
        50, 227, 227, 62, 20, -1000, 221, 119, -3, -1000,
332
        -22, -1000, 173, -33, 77, 130, -51, -1000, -1000, 335,
333
        -1000, 304, 146, 302, 254, 119, 343, 256, -1000, 130,
334
        194, 148, -34, 366, -35, -38, -1000, -1000, -1000, -1000,
335
        150, -66, -53, 138, -1000, 62, -14, -1000, 98, -1000,
336
        119, -1000, 145, -15, -1000, -15, -1000, 119, 130, -23,
337
        254, 265, -1000, 194, 275, -1000, -1000, 148, 139, 148,
338
        148, 326, -1000, 218, 95, -7, -1000, -54, -39, -56,
339
        -48, 130, -1000, 110, -1000, 119, 75, 130, -1000, -1000,
340
        138, -1000, 263, -1000, -45, -1000, -49, -1000, -1000, -23,
341
        225, -1000, 216, -74, -55, -1000, -1000, -1000, -1000, -1000,
342
        -15, 293, -58, -60, 271, 260, 382, 148, -71, -1000,
343
        -1000, -1000, -1000, -1000, -1000, 289, -1000, -1000, 252, 119,
344
        111, 342, -1000, -1000, 284, 256, 258, 130, 70, -1000,
345
        119, -1000, 254, 111, 111, 130, -1000, 37, 247, -1000,
346
        111, -1000, -1000, -1000, 247, -1000,
347
}
348

349
var yyPgo = [...]int16{
350
        0, 418, 360, 417, 416, 415, 16, 414, 413, 18,
351
        11, 8, 412, 411, 15, 7, 17, 12, 410, 9,
352
        20, 409, 408, 2, 407, 406, 10, 330, 19, 405,
353
        404, 194, 403, 13, 402, 401, 0, 14, 400, 399,
354
        398, 397, 3, 5, 396, 4, 395, 394, 1, 6,
355
        318, 393, 392, 391, 21, 390, 389, 382,
356
}
357

358
var yyR1 = [...]int8{
359
        0, 1, 2, 2, 57, 57, 3, 3, 3, 4,
360
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
361
        4, 4, 4, 4, 4, 4, 4, 50, 50, 11,
362
        11, 5, 5, 5, 5, 56, 56, 55, 55, 54,
363
        12, 12, 14, 14, 15, 10, 10, 13, 13, 17,
364
        17, 16, 16, 18, 18, 18, 18, 18, 18, 18,
365
        18, 18, 18, 19, 8, 8, 9, 44, 44, 44,
366
        51, 51, 52, 52, 52, 6, 6, 6, 6, 7,
367
        25, 25, 24, 24, 21, 21, 22, 22, 20, 20,
368
        20, 23, 23, 26, 26, 26, 26, 26, 26, 27,
369
        28, 29, 29, 29, 30, 30, 30, 31, 31, 32,
370
        32, 33, 33, 34, 35, 35, 37, 37, 41, 41,
371
        38, 38, 42, 42, 43, 43, 47, 47, 49, 49,
372
        46, 46, 48, 48, 48, 45, 45, 45, 36, 36,
373
        36, 36, 36, 36, 36, 36, 39, 39, 39, 39,
374
        53, 53, 40, 40, 40, 40, 40, 40, 40, 40,
375
}
376

377
var yyR2 = [...]int8{
378
        0, 1, 2, 3, 0, 1, 1, 1, 1, 2,
379
        1, 1, 1, 4, 2, 3, 3, 11, 3, 8,
380
        9, 7, 5, 6, 6, 8, 6, 0, 3, 1,
381
        3, 9, 8, 7, 8, 0, 4, 1, 3, 3,
382
        0, 1, 1, 3, 3, 1, 3, 1, 3, 0,
383
        1, 1, 3, 1, 1, 1, 1, 1, 6, 1,
384
        1, 1, 1, 4, 1, 3, 5, 0, 3, 3,
385
        0, 1, 0, 1, 2, 1, 4, 2, 2, 13,
386
        0, 1, 0, 1, 1, 1, 2, 4, 1, 4,
387
        4, 1, 3, 3, 4, 4, 4, 2, 6, 1,
388
        2, 0, 2, 2, 0, 2, 2, 2, 1, 0,
389
        1, 1, 2, 6, 0, 1, 0, 2, 0, 3,
390
        0, 2, 0, 2, 0, 2, 0, 3, 0, 4,
391
        2, 4, 0, 1, 1, 0, 1, 2, 1, 1,
392
        2, 2, 4, 4, 6, 6, 1, 1, 3, 3,
393
        0, 1, 3, 3, 3, 3, 3, 3, 3, 4,
394
}
395

396
var yyChk = [...]int16{
397
        -1000, -1, -2, -3, -4, -5, -6, 28, 30, 31,
398
        4, 6, 5, 21, 32, 33, 36, 37, -7, 68,
399
        42, -57, 92, 29, 7, 17, 19, 18, 76, 7,
400
        8, 17, 19, 17, 34, 34, 44, -27, 76, 56,
401
        69, 70, -24, 43, -2, -50, 60, -50, -50, 19,
402
        76, -28, -29, 10, 11, 76, 20, 76, 76, -27,
403
        -27, -27, 38, -25, 57, -21, 89, -22, -20, -23,
404
        83, 76, 76, 58, 76, 20, -50, -30, 13, 12,
405
        -31, 14, -36, -39, -40, 58, 88, 61, -20, -18,
406
        93, 78, 79, 80, 81, 82, 66, -19, 71, 72,
407
        65, 76, -31, 76, 85, 22, 23, 5, 93, 93,
408
        -37, 47, -55, -54, 76, -6, 44, 86, -45, 76,
409
        55, 93, 85, 61, 93, 76, 20, -31, -31, -36,
410
        87, 88, 90, 89, 74, 75, 63, -53, 67, 58,
411
        -36, -36, 93, -36, 93, 93, 93, 76, 25, 24,
412
        25, 25, -12, -10, 76, -10, -49, 6, -36, -37,
413
        86, 75, -26, -27, 93, 69, 70, -19, 76, -20,
414
        76, 89, -23, 76, -8, -9, 76, 93, 76, -36,
415
        -36, -36, -36, -36, -36, 65, 58, 59, 62, 77,
416
        -6, 94, -36, -17, -16, -36, -10, -9, 76, 76,
417
        76, 94, 86, 94, -42, 50, 19, -49, -54, -36,
418
        -49, -28, -6, 9, 93, 93, -45, -45, 94, 94,
419
        86, 77, -10, 93, 65, -36, 93, 94, 55, 94,
420
        86, 94, 24, 35, 76, 35, -43, 51, -36, 20,
421
        -42, -32, -33, -34, -35, 73, -45, 94, 15, 94,
422
        94, 26, -9, -44, 95, 93, 94, -10, -6, -16,
423
        77, -36, 76, -14, -15, 93, -14, -36, -11, 76,
424
        93, -43, -37, -33, 45, -45, 76, -45, -45, 27,
425
        -52, 65, 58, 78, 78, 94, 94, 94, 94, -56,
426
        86, 20, -17, -10, -41, 48, -26, 94, -11, -51,
427
        64, 65, 96, 94, -15, 39, 94, 94, -38, 46,
428
        49, -49, -45, 94, 40, -47, 52, -36, -13, -23,
429
        20, 41, -42, 49, 86, -36, -43, -46, -23, -23,
430
        86, -48, 53, 54, -23, -48,
431
}
432

433
var yyDef = [...]int16{
434
        0, -2, 1, 4, 6, 7, 8, 10, 11, 12,
435
        0, 0, 0, 0, 0, 0, 0, 0, 75, 0,
436
        82, 2, 5, 9, 27, 27, 27, 0, 14, 0,
437
        101, 0, 0, 0, 0, 0, 0, 0, 99, 80,
438
        77, 78, 0, 83, 3, 0, 0, 0, 0, 27,
439
        15, 16, 104, 0, 0, 18, 0, 0, 0, 0,
440
        0, 116, 0, 0, 81, 0, 84, 85, 135, 88,
441
        0, 91, 13, 0, 0, 0, 0, 100, 0, 0,
442
        102, 0, 108, -2, 139, 0, 0, 0, 146, 147,
443
        0, 53, 54, 55, 56, 57, 0, 59, 60, 61,
444
        62, 91, 103, 0, 0, 0, 0, 0, 40, 0,
445
        128, 0, 116, 37, 0, 76, 0, 0, 86, 136,
446
        0, 0, 0, 28, 0, 0, 0, 105, 106, 107,
447
        0, 0, 0, 0, 0, 0, 0, 0, 0, 151,
448
        140, 141, 0, 0, 0, 49, 0, 22, 0, 0,
449
        0, 0, 0, 41, 45, 0, 122, 0, 117, 128,
450
        0, 0, 128, 101, 0, 0, 0, 135, 99, 135,
451
        137, 0, 0, 92, 0, 64, 0, 0, 0, 152,
452
        153, 154, 155, 156, 157, 158, 0, 0, 0, 149,
453
        0, 148, 0, 0, 50, 51, 0, 23, 24, 0,
454
        26, 0, 0, 0, 124, 0, 0, 122, 38, 39,
455
        -2, 135, 0, 0, 0, 0, 97, 87, 89, 90,
456
        0, 67, 0, 0, 159, 142, 0, 143, 0, 63,
457
        0, 21, 0, 0, 46, 0, 33, 0, 123, 0,
458
        124, 116, 110, -2, 0, 115, 93, 135, 0, 135,
459
        135, 0, 65, 72, 0, 0, 19, 0, 0, 0,
460
        0, 52, 25, 35, 42, 49, 32, 125, 129, 29,
461
        0, 34, 118, 112, 0, 94, 0, 95, 96, 0,
462
        70, 73, 0, 0, 0, 20, 144, 145, 58, 31,
463
        0, 0, 0, 0, 120, 0, 128, 135, 0, 66,
464
        71, 74, 68, 69, 43, 0, 44, 30, 126, 0,
465
        0, 0, 98, 17, 0, 122, 0, 121, 119, 47,
466
        0, 36, 124, 0, 0, 113, 79, 127, 132, 48,
467
        0, 130, 133, 134, 132, 131,
468
}
469

470
var yyTok1 = [...]int8{
471
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
472
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
473
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
474
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
475
        93, 94, 89, 87, 86, 88, 91, 90, 3, 3,
476
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
477
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
478
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
479
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
480
        3, 95, 3, 96,
481
}
482

483
var yyTok2 = [...]int8{
484
        2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
485
        12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
486
        22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
487
        32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
488
        42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
489
        52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
490
        62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
491
        72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
492
        82, 83, 84, 85, 92,
493
}
494

495
var yyTok3 = [...]int8{
496
        0,
497
}
498

499
var yyErrorMessages = [...]struct {
500
        state int
501
        token int
502
        msg   string
503
}{}
504

505
/*        parser for yacc output        */
506

507
var (
508
        yyDebug        = 0
509
        yyErrorVerbose = false
510
)
511

512
type yyLexer interface {
513
        Lex(lval *yySymType) int
514
        Error(s string)
515
}
516

517
type yyParser interface {
518
        Parse(yyLexer) int
519
        Lookahead() int
520
}
521

522
type yyParserImpl struct {
523
        lval  yySymType
524
        stack [yyInitialStackSize]yySymType
525
        char  int
526
}
527

528
func (p *yyParserImpl) Lookahead() int {
×
529
        return p.char
×
530
}
×
531

532
func yyNewParser() yyParser {
1,755✔
533
        return &yyParserImpl{}
1,755✔
534
}
1,755✔
535

536
const yyFlag = -1000
537

538
func yyTokname(c int) string {
63✔
539
        if c >= 1 && c-1 < len(yyToknames) {
126✔
540
                if yyToknames[c-1] != "" {
126✔
541
                        return yyToknames[c-1]
63✔
542
                }
63✔
543
        }
544
        return __yyfmt__.Sprintf("tok-%v", c)
×
545
}
546

547
func yyStatname(s int) string {
×
548
        if s >= 0 && s < len(yyStatenames) {
×
549
                if yyStatenames[s] != "" {
×
550
                        return yyStatenames[s]
×
551
                }
×
552
        }
553
        return __yyfmt__.Sprintf("state-%v", s)
×
554
}
555

556
func yyErrorMessage(state, lookAhead int) string {
39✔
557
        const TOKSTART = 4
39✔
558

39✔
559
        if !yyErrorVerbose {
42✔
560
                return "syntax error"
3✔
561
        }
3✔
562

563
        for _, e := range yyErrorMessages {
36✔
564
                if e.state == state && e.token == lookAhead {
×
565
                        return "syntax error: " + e.msg
×
566
                }
×
567
        }
568

569
        res := "syntax error: unexpected " + yyTokname(lookAhead)
36✔
570

36✔
571
        // To match Bison, suggest at most four expected tokens.
36✔
572
        expected := make([]int, 0, 4)
36✔
573

36✔
574
        // Look for shiftable tokens.
36✔
575
        base := int(yyPact[state])
36✔
576
        for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
2,597✔
577
                if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
2,668✔
578
                        if len(expected) == cap(expected) {
123✔
579
                                return res
16✔
580
                        }
16✔
581
                        expected = append(expected, tok)
91✔
582
                }
583
        }
584

585
        if yyDef[state] == -2 {
22✔
586
                i := 0
2✔
587
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
588
                        i += 2
×
589
                }
×
590

591
                // Look for tokens that we accept or reduce.
592
                for i += 2; yyExca[i] >= 0; i += 2 {
4✔
593
                        tok := int(yyExca[i])
2✔
594
                        if tok < TOKSTART || yyExca[i+1] == 0 {
4✔
595
                                continue
2✔
596
                        }
597
                        if len(expected) == cap(expected) {
×
598
                                return res
×
599
                        }
×
600
                        expected = append(expected, tok)
×
601
                }
602

603
                // If the default action is to accept or reduce, give up.
604
                if yyExca[i+1] != 0 {
2✔
605
                        return res
×
606
                }
×
607
        }
608

609
        for i, tok := range expected {
47✔
610
                if i == 0 {
45✔
611
                        res += ", expecting "
18✔
612
                } else {
27✔
613
                        res += " or "
9✔
614
                }
9✔
615
                res += yyTokname(tok)
27✔
616
        }
617
        return res
20✔
618
}
619

620
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
24,609✔
621
        token = 0
24,609✔
622
        char = lex.Lex(lval)
24,609✔
623
        if char <= 0 {
26,327✔
624
                token = int(yyTok1[0])
1,718✔
625
                goto out
1,718✔
626
        }
627
        if char < len(yyTok1) {
30,439✔
628
                token = int(yyTok1[char])
7,548✔
629
                goto out
7,548✔
630
        }
631
        if char >= yyPrivate {
30,686✔
632
                if char < yyPrivate+len(yyTok2) {
30,686✔
633
                        token = int(yyTok2[char-yyPrivate])
15,343✔
634
                        goto out
15,343✔
635
                }
636
        }
637
        for i := 0; i < len(yyTok3); i += 2 {
×
638
                token = int(yyTok3[i+0])
×
639
                if token == char {
×
640
                        token = int(yyTok3[i+1])
×
641
                        goto out
×
642
                }
643
        }
644

645
out:
646
        if token == 0 {
24,609✔
647
                token = int(yyTok2[1]) /* unknown char */
×
648
        }
×
649
        if yyDebug >= 3 {
24,609✔
650
                __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
×
651
        }
×
652
        return char, token
24,609✔
653
}
654

655
func yyParse(yylex yyLexer) int {
1,755✔
656
        return yyNewParser().Parse(yylex)
1,755✔
657
}
1,755✔
658

659
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
1,755✔
660
        var yyn int
1,755✔
661
        var yyVAL yySymType
1,755✔
662
        var yyDollar []yySymType
1,755✔
663
        _ = yyDollar // silence set and not used
1,755✔
664
        yyS := yyrcvr.stack[:]
1,755✔
665

1,755✔
666
        Nerrs := 0   /* number of errors */
1,755✔
667
        Errflag := 0 /* error recovery flag */
1,755✔
668
        yystate := 0
1,755✔
669
        yyrcvr.char = -1
1,755✔
670
        yytoken := -1 // yyrcvr.char translated into internal numbering
1,755✔
671
        defer func() {
3,510✔
672
                // Make sure we report no lookahead when not parsing.
1,755✔
673
                yystate = -1
1,755✔
674
                yyrcvr.char = -1
1,755✔
675
                yytoken = -1
1,755✔
676
        }()
1,755✔
677
        yyp := -1
1,755✔
678
        goto yystack
1,755✔
679

680
ret0:
681
        return 0
1,716✔
682

1,716✔
683
ret1:
1,716✔
684
        return 1
39✔
685

39✔
686
yystack:
39✔
687
        /* put a state and value onto the stack */
688
        if yyDebug >= 4 {
65,139✔
689
                __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
×
690
        }
×
691

692
        yyp++
65,139✔
693
        if yyp >= len(yyS) {
65,180✔
694
                nyys := make([]yySymType, len(yyS)*2)
41✔
695
                copy(nyys, yyS)
41✔
696
                yyS = nyys
41✔
697
        }
41✔
698
        yyS[yyp] = yyVAL
65,139✔
699
        yyS[yyp].yys = yystate
65,139✔
700

65,139✔
701
yynewstate:
65,139✔
702
        yyn = int(yyPact[yystate])
65,139✔
703
        if yyn <= yyFlag {
88,318✔
704
                goto yydefault /* simple state */
23,179✔
705
        }
706
        if yyrcvr.char < 0 {
66,569✔
707
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
24,609✔
708
        }
24,609✔
709
        yyn += yytoken
41,960✔
710
        if yyn < 0 || yyn >= yyLast {
44,245✔
711
                goto yydefault
2,285✔
712
        }
713
        yyn = int(yyAct[yyn])
39,675✔
714
        if int(yyChk[yyn]) == yytoken { /* valid shift */
62,529✔
715
                yyrcvr.char = -1
22,854✔
716
                yytoken = -1
22,854✔
717
                yyVAL = yyrcvr.lval
22,854✔
718
                yystate = yyn
22,854✔
719
                if Errflag > 0 {
22,854✔
720
                        Errflag--
×
721
                }
×
722
                goto yystack
22,854✔
723
        }
724

725
yydefault:
726
        /* default state action */
727
        yyn = int(yyDef[yystate])
42,285✔
728
        if yyn == -2 {
47,117✔
729
                if yyrcvr.char < 0 {
4,832✔
730
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
731
                }
×
732

733
                /* look through exception table */
734
                xi := 0
4,832✔
735
                for {
20,837✔
736
                        if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
20,837✔
737
                                break
4,832✔
738
                        }
739
                        xi += 2
11,173✔
740
                }
741
                for xi += 2; ; xi += 2 {
15,418✔
742
                        yyn = int(yyExca[xi+0])
10,586✔
743
                        if yyn < 0 || yyn == yytoken {
15,418✔
744
                                break
4,832✔
745
                        }
746
                }
747
                yyn = int(yyExca[xi+1])
4,832✔
748
                if yyn < 0 {
6,548✔
749
                        goto ret0
1,716✔
750
                }
751
        }
752
        if yyn == 0 {
40,608✔
753
                /* error ... attempt to resume parsing */
39✔
754
                switch Errflag {
39✔
755
                case 0: /* brand new error */
39✔
756
                        yylex.Error(yyErrorMessage(yystate, yytoken))
39✔
757
                        Nerrs++
39✔
758
                        if yyDebug >= 1 {
39✔
759
                                __yyfmt__.Printf("%s", yyStatname(yystate))
×
760
                                __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
×
761
                        }
×
762
                        fallthrough
39✔
763

764
                case 1, 2: /* incompletely recovered error ... try again */
39✔
765
                        Errflag = 3
39✔
766

39✔
767
                        /* find a state where "error" is a legal shift action */
39✔
768
                        for yyp >= 0 {
248✔
769
                                yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
209✔
770
                                if yyn >= 0 && yyn < yyLast {
381✔
771
                                        yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
172✔
772
                                        if int(yyChk[yystate]) == yyErrCode {
172✔
773
                                                goto yystack
×
774
                                        }
775
                                }
776

777
                                /* the current p has no shift on "error", pop stack */
778
                                if yyDebug >= 2 {
209✔
779
                                        __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
×
780
                                }
×
781
                                yyp--
209✔
782
                        }
783
                        /* there is no state on the stack with an error shift ... abort */
784
                        goto ret1
39✔
785

786
                case 3: /* no shift yet; clobber input char */
×
787
                        if yyDebug >= 2 {
×
788
                                __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
×
789
                        }
×
790
                        if yytoken == yyEofCode {
×
791
                                goto ret1
×
792
                        }
793
                        yyrcvr.char = -1
×
794
                        yytoken = -1
×
795
                        goto yynewstate /* try again in the same state */
×
796
                }
797
        }
798

799
        /* reduction by production yyn */
800
        if yyDebug >= 2 {
40,530✔
801
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
802
        }
×
803

804
        yynt := yyn
40,530✔
805
        yypt := yyp
40,530✔
806
        _ = yypt // guard against "declared and not used"
40,530✔
807

40,530✔
808
        yyp -= int(yyR2[yyn])
40,530✔
809
        // yyp is now the index of $0. Perform the default action. Iff the
40,530✔
810
        // reduced production is ε, $1 is possibly out of range.
40,530✔
811
        if yyp+1 >= len(yyS) {
40,549✔
812
                nyys := make([]yySymType, len(yyS)*2)
19✔
813
                copy(nyys, yyS)
19✔
814
                yyS = nyys
19✔
815
        }
19✔
816
        yyVAL = yyS[yyp+1]
40,530✔
817

40,530✔
818
        /* consult goto table to find next state */
40,530✔
819
        yyn = int(yyR1[yyn])
40,530✔
820
        yyg := int(yyPgo[yyn])
40,530✔
821
        yyj := yyg + yyS[yyp].yys + 1
40,530✔
822

40,530✔
823
        if yyj >= yyLast {
55,951✔
824
                yystate = int(yyAct[yyg])
15,421✔
825
        } else {
40,530✔
826
                yystate = int(yyAct[yyj])
25,109✔
827
                if int(yyChk[yystate]) != -yyn {
39,374✔
828
                        yystate = int(yyAct[yyg])
14,265✔
829
                }
14,265✔
830
        }
831
        // dummy call; replaced with literal code
832
        switch yynt {
40,530✔
833

834
        case 1:
1,718✔
835
                yyDollar = yyS[yypt-1 : yypt+1]
1,718✔
836
                {
3,436✔
837
                        yyVAL.stmts = yyDollar[1].stmts
1,718✔
838
                        setResult(yylex, yyDollar[1].stmts)
1,718✔
839
                }
1,718✔
840
        case 2:
1,718✔
841
                yyDollar = yyS[yypt-2 : yypt+1]
1,718✔
842
                {
3,436✔
843
                        yyVAL.stmts = []SQLStmt{yyDollar[1].stmt}
1,718✔
844
                }
1,718✔
845
        case 3:
84✔
846
                yyDollar = yyS[yypt-3 : yypt+1]
84✔
847
                {
168✔
848
                        yyVAL.stmts = append([]SQLStmt{yyDollar[1].stmt}, yyDollar[3].stmts...)
84✔
849
                }
84✔
850
        case 4:
1,425✔
851
                yyDollar = yyS[yypt-0 : yypt+1]
1,425✔
852
                {
2,850✔
853
                }
1,425✔
854
        case 9:
62✔
855
                yyDollar = yyS[yypt-2 : yypt+1]
62✔
856
                {
124✔
857
                        yyVAL.stmt = &BeginTransactionStmt{}
62✔
858
                }
62✔
859
        case 10:
1✔
860
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
861
                {
2✔
862
                        yyVAL.stmt = &BeginTransactionStmt{}
1✔
863
                }
1✔
864
        case 11:
170✔
865
                yyDollar = yyS[yypt-1 : yypt+1]
170✔
866
                {
340✔
867
                        yyVAL.stmt = &CommitStmt{}
170✔
868
                }
170✔
869
        case 12:
3✔
870
                yyDollar = yyS[yypt-1 : yypt+1]
3✔
871
                {
6✔
872
                        yyVAL.stmt = &RollbackStmt{}
3✔
873
                }
3✔
874
        case 13:
22✔
875
                yyDollar = yyS[yypt-4 : yypt+1]
22✔
876
                {
44✔
877
                        yyVAL.stmt = &CreateDatabaseStmt{ifNotExists: yyDollar[3].boolean, DB: yyDollar[4].id}
22✔
878
                }
22✔
879
        case 14:
3✔
880
                yyDollar = yyS[yypt-2 : yypt+1]
3✔
881
                {
6✔
882
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[2].id}
3✔
883
                }
3✔
884
        case 15:
14✔
885
                yyDollar = yyS[yypt-3 : yypt+1]
14✔
886
                {
28✔
887
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[3].id}
14✔
888
                }
14✔
889
        case 16:
9✔
890
                yyDollar = yyS[yypt-3 : yypt+1]
9✔
891
                {
18✔
892
                        yyVAL.stmt = &UseSnapshotStmt{period: yyDollar[3].period}
9✔
893
                }
9✔
894
        case 17:
186✔
895
                yyDollar = yyS[yypt-11 : yypt+1]
186✔
896
                {
372✔
897
                        yyVAL.stmt = &CreateTableStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[4].id, colsSpec: yyDollar[6].colsSpec, pkColNames: yyDollar[10].ids}
186✔
898
                }
186✔
899
        case 18:
1✔
900
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
901
                {
2✔
902
                        yyVAL.stmt = &DropTableStmt{table: yyDollar[3].id}
1✔
903
                }
1✔
904
        case 19:
55✔
905
                yyDollar = yyS[yypt-8 : yypt+1]
55✔
906
                {
110✔
907
                        yyVAL.stmt = &CreateIndexStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[5].id, cols: yyDollar[7].ids}
55✔
908
                }
55✔
909
        case 20:
21✔
910
                yyDollar = yyS[yypt-9 : yypt+1]
21✔
911
                {
42✔
912
                        yyVAL.stmt = &CreateIndexStmt{unique: true, ifNotExists: yyDollar[4].boolean, table: yyDollar[6].id, cols: yyDollar[8].ids}
21✔
913
                }
21✔
914
        case 21:
2✔
915
                yyDollar = yyS[yypt-7 : yypt+1]
2✔
916
                {
4✔
917
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[4].id, cols: yyDollar[6].ids}
2✔
918
                }
2✔
919
        case 22:
×
920
                yyDollar = yyS[yypt-5 : yypt+1]
×
921
                {
×
922
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[3].id, cols: []string{yyDollar[5].id}}
×
923
                }
×
924
        case 23:
16✔
925
                yyDollar = yyS[yypt-6 : yypt+1]
16✔
926
                {
32✔
927
                        yyVAL.stmt = &AddColumnStmt{table: yyDollar[3].id, colSpec: yyDollar[6].colSpec}
16✔
928
                }
16✔
929
        case 24:
5✔
930
                yyDollar = yyS[yypt-6 : yypt+1]
5✔
931
                {
10✔
932
                        yyVAL.stmt = &RenameTableStmt{oldName: yyDollar[3].id, newName: yyDollar[6].id}
5✔
933
                }
5✔
934
        case 25:
9✔
935
                yyDollar = yyS[yypt-8 : yypt+1]
9✔
936
                {
18✔
937
                        yyVAL.stmt = &RenameColumnStmt{table: yyDollar[3].id, oldName: yyDollar[6].id, newName: yyDollar[8].id}
9✔
938
                }
9✔
939
        case 26:
8✔
940
                yyDollar = yyS[yypt-6 : yypt+1]
8✔
941
                {
16✔
942
                        yyVAL.stmt = &DropColumnStmt{table: yyDollar[3].id, colName: yyDollar[6].id}
8✔
943
                }
8✔
944
        case 27:
264✔
945
                yyDollar = yyS[yypt-0 : yypt+1]
264✔
946
                {
528✔
947
                        yyVAL.boolean = false
264✔
948
                }
264✔
949
        case 28:
24✔
950
                yyDollar = yyS[yypt-3 : yypt+1]
24✔
951
                {
48✔
952
                        yyVAL.boolean = true
24✔
953
                }
24✔
954
        case 29:
152✔
955
                yyDollar = yyS[yypt-1 : yypt+1]
152✔
956
                {
304✔
957
                        yyVAL.ids = []string{yyDollar[1].id}
152✔
958
                }
152✔
959
        case 30:
59✔
960
                yyDollar = yyS[yypt-3 : yypt+1]
59✔
961
                {
118✔
962
                        yyVAL.ids = yyDollar[2].ids
59✔
963
                }
59✔
964
        case 31:
557✔
965
                yyDollar = yyS[yypt-9 : yypt+1]
557✔
966
                {
1,114✔
967
                        yyVAL.stmt = &UpsertIntoStmt{isInsert: true, tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows, onConflict: yyDollar[9].onConflict}
557✔
968
                }
557✔
969
        case 32:
203✔
970
                yyDollar = yyS[yypt-8 : yypt+1]
203✔
971
                {
406✔
972
                        yyVAL.stmt = &UpsertIntoStmt{tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows}
203✔
973
                }
203✔
974
        case 33:
11✔
975
                yyDollar = yyS[yypt-7 : yypt+1]
11✔
976
                {
22✔
977
                        yyVAL.stmt = &DeleteFromStmt{tableRef: yyDollar[3].tableRef, where: yyDollar[4].exp, indexOn: yyDollar[5].ids, limit: yyDollar[6].exp, offset: yyDollar[7].exp}
11✔
978
                }
11✔
979
        case 34:
19✔
980
                yyDollar = yyS[yypt-8 : yypt+1]
19✔
981
                {
38✔
982
                        yyVAL.stmt = &UpdateStmt{tableRef: yyDollar[2].tableRef, updates: yyDollar[4].updates, where: yyDollar[5].exp, indexOn: yyDollar[6].ids, limit: yyDollar[7].exp, offset: yyDollar[8].exp}
19✔
983
                }
19✔
984
        case 35:
554✔
985
                yyDollar = yyS[yypt-0 : yypt+1]
554✔
986
                {
1,108✔
987
                        yyVAL.onConflict = nil
554✔
988
                }
554✔
989
        case 36:
3✔
990
                yyDollar = yyS[yypt-4 : yypt+1]
3✔
991
                {
6✔
992
                        yyVAL.onConflict = &OnConflictDo{}
3✔
993
                }
3✔
994
        case 37:
19✔
995
                yyDollar = yyS[yypt-1 : yypt+1]
19✔
996
                {
38✔
997
                        yyVAL.updates = []*colUpdate{yyDollar[1].update}
19✔
998
                }
19✔
999
        case 38:
×
1000
                yyDollar = yyS[yypt-3 : yypt+1]
×
1001
                {
×
1002
                        yyVAL.updates = append(yyDollar[1].updates, yyDollar[3].update)
×
1003
                }
×
1004
        case 39:
19✔
1005
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
1006
                {
38✔
1007
                        yyVAL.update = &colUpdate{col: yyDollar[1].id, op: yyDollar[2].cmpOp, val: yyDollar[3].exp}
19✔
1008
                }
19✔
1009
        case 40:
1✔
1010
                yyDollar = yyS[yypt-0 : yypt+1]
1✔
1011
                {
2✔
1012
                        yyVAL.ids = nil
1✔
1013
                }
1✔
1014
        case 41:
562✔
1015
                yyDollar = yyS[yypt-1 : yypt+1]
562✔
1016
                {
1,124✔
1017
                        yyVAL.ids = yyDollar[1].ids
562✔
1018
                }
562✔
1019
        case 42:
760✔
1020
                yyDollar = yyS[yypt-1 : yypt+1]
760✔
1021
                {
1,520✔
1022
                        yyVAL.rows = []*RowSpec{yyDollar[1].row}
760✔
1023
                }
760✔
1024
        case 43:
81✔
1025
                yyDollar = yyS[yypt-3 : yypt+1]
81✔
1026
                {
162✔
1027
                        yyVAL.rows = append(yyDollar[1].rows, yyDollar[3].row)
81✔
1028
                }
81✔
1029
        case 44:
841✔
1030
                yyDollar = yyS[yypt-3 : yypt+1]
841✔
1031
                {
1,682✔
1032
                        yyVAL.row = &RowSpec{Values: yyDollar[2].values}
841✔
1033
                }
841✔
1034
        case 45:
910✔
1035
                yyDollar = yyS[yypt-1 : yypt+1]
910✔
1036
                {
1,820✔
1037
                        yyVAL.ids = []string{yyDollar[1].id}
910✔
1038
                }
910✔
1039
        case 46:
858✔
1040
                yyDollar = yyS[yypt-3 : yypt+1]
858✔
1041
                {
1,716✔
1042
                        yyVAL.ids = append(yyDollar[1].ids, yyDollar[3].id)
858✔
1043
                }
858✔
1044
        case 47:
10✔
1045
                yyDollar = yyS[yypt-1 : yypt+1]
10✔
1046
                {
20✔
1047
                        yyVAL.cols = []*ColSelector{yyDollar[1].col}
10✔
1048
                }
10✔
1049
        case 48:
×
1050
                yyDollar = yyS[yypt-3 : yypt+1]
×
1051
                {
×
1052
                        yyVAL.cols = append(yyDollar[1].cols, yyDollar[3].col)
×
1053
                }
×
1054
        case 49:
126✔
1055
                yyDollar = yyS[yypt-0 : yypt+1]
126✔
1056
                {
252✔
1057
                        yyVAL.values = nil
126✔
1058
                }
126✔
1059
        case 50:
851✔
1060
                yyDollar = yyS[yypt-1 : yypt+1]
851✔
1061
                {
1,702✔
1062
                        yyVAL.values = yyDollar[1].values
851✔
1063
                }
851✔
1064
        case 51:
870✔
1065
                yyDollar = yyS[yypt-1 : yypt+1]
870✔
1066
                {
1,740✔
1067
                        yyVAL.values = []ValueExp{yyDollar[1].exp}
870✔
1068
                }
870✔
1069
        case 52:
896✔
1070
                yyDollar = yyS[yypt-3 : yypt+1]
896✔
1071
                {
1,792✔
1072
                        yyVAL.values = append(yyDollar[1].values, yyDollar[3].exp)
896✔
1073
                }
896✔
1074
        case 53:
638✔
1075
                yyDollar = yyS[yypt-1 : yypt+1]
638✔
1076
                {
1,276✔
1077
                        yyVAL.value = &Integer{val: int64(yyDollar[1].integer)}
638✔
1078
                }
638✔
1079
        case 54:
25✔
1080
                yyDollar = yyS[yypt-1 : yypt+1]
25✔
1081
                {
50✔
1082
                        yyVAL.value = &Float64{val: float64(yyDollar[1].float)}
25✔
1083
                }
25✔
1084
        case 55:
365✔
1085
                yyDollar = yyS[yypt-1 : yypt+1]
365✔
1086
                {
730✔
1087
                        yyVAL.value = &Varchar{val: yyDollar[1].str}
365✔
1088
                }
365✔
1089
        case 56:
184✔
1090
                yyDollar = yyS[yypt-1 : yypt+1]
184✔
1091
                {
368✔
1092
                        yyVAL.value = &Bool{val: yyDollar[1].boolean}
184✔
1093
                }
184✔
1094
        case 57:
93✔
1095
                yyDollar = yyS[yypt-1 : yypt+1]
93✔
1096
                {
186✔
1097
                        yyVAL.value = &Blob{val: yyDollar[1].blob}
93✔
1098
                }
93✔
1099
        case 58:
57✔
1100
                yyDollar = yyS[yypt-6 : yypt+1]
57✔
1101
                {
114✔
1102
                        yyVAL.value = &Cast{val: yyDollar[3].exp, t: yyDollar[5].sqlType}
57✔
1103
                }
57✔
1104
        case 59:
123✔
1105
                yyDollar = yyS[yypt-1 : yypt+1]
123✔
1106
                {
246✔
1107
                        yyVAL.value = yyDollar[1].value
123✔
1108
                }
123✔
1109
        case 60:
580✔
1110
                yyDollar = yyS[yypt-1 : yypt+1]
580✔
1111
                {
1,160✔
1112
                        yyVAL.value = &Param{id: yyDollar[1].id}
580✔
1113
                }
580✔
1114
        case 61:
173✔
1115
                yyDollar = yyS[yypt-1 : yypt+1]
173✔
1116
                {
346✔
1117
                        yyVAL.value = &Param{id: fmt.Sprintf("param%d", yyDollar[1].pparam), pos: yyDollar[1].pparam}
173✔
1118
                }
173✔
1119
        case 62:
54✔
1120
                yyDollar = yyS[yypt-1 : yypt+1]
54✔
1121
                {
108✔
1122
                        yyVAL.value = &NullValue{t: AnyType}
54✔
1123
                }
54✔
1124
        case 63:
129✔
1125
                yyDollar = yyS[yypt-4 : yypt+1]
129✔
1126
                {
258✔
1127
                        yyVAL.value = &FnCall{fn: yyDollar[1].id, params: yyDollar[3].values}
129✔
1128
                }
129✔
1129
        case 64:
186✔
1130
                yyDollar = yyS[yypt-1 : yypt+1]
186✔
1131
                {
372✔
1132
                        yyVAL.colsSpec = []*ColSpec{yyDollar[1].colSpec}
186✔
1133
                }
186✔
1134
        case 65:
325✔
1135
                yyDollar = yyS[yypt-3 : yypt+1]
325✔
1136
                {
650✔
1137
                        yyVAL.colsSpec = append(yyDollar[1].colsSpec, yyDollar[3].colSpec)
325✔
1138
                }
325✔
1139
        case 66:
527✔
1140
                yyDollar = yyS[yypt-5 : yypt+1]
527✔
1141
                {
1,054✔
1142
                        yyVAL.colSpec = &ColSpec{colName: yyDollar[1].id, colType: yyDollar[2].sqlType, maxLen: int(yyDollar[3].integer), notNull: yyDollar[4].boolean, autoIncrement: yyDollar[5].boolean}
527✔
1143
                }
527✔
1144
        case 67:
474✔
1145
                yyDollar = yyS[yypt-0 : yypt+1]
474✔
1146
                {
948✔
1147
                        yyVAL.integer = 0
474✔
1148
                }
474✔
1149
        case 68:
52✔
1150
                yyDollar = yyS[yypt-3 : yypt+1]
52✔
1151
                {
104✔
1152
                        yyVAL.integer = yyDollar[2].integer
52✔
1153
                }
52✔
1154
        case 69:
1✔
1155
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
1156
                {
2✔
1157
                        yyVAL.integer = yyDollar[2].integer
1✔
1158
                }
1✔
1159
        case 70:
454✔
1160
                yyDollar = yyS[yypt-0 : yypt+1]
454✔
1161
                {
908✔
1162
                        yyVAL.boolean = false
454✔
1163
                }
454✔
1164
        case 71:
73✔
1165
                yyDollar = yyS[yypt-1 : yypt+1]
73✔
1166
                {
146✔
1167
                        yyVAL.boolean = true
73✔
1168
                }
73✔
1169
        case 72:
519✔
1170
                yyDollar = yyS[yypt-0 : yypt+1]
519✔
1171
                {
1,038✔
1172
                        yyVAL.boolean = false
519✔
1173
                }
519✔
1174
        case 73:
1✔
1175
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1176
                {
2✔
1177
                        yyVAL.boolean = false
1✔
1178
                }
1✔
1179
        case 74:
7✔
1180
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1181
                {
14✔
1182
                        yyVAL.boolean = true
7✔
1183
                }
7✔
1184
        case 75:
435✔
1185
                yyDollar = yyS[yypt-1 : yypt+1]
435✔
1186
                {
870✔
1187
                        yyVAL.stmt = yyDollar[1].stmt
435✔
1188
                }
435✔
1189
        case 76:
11✔
1190
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1191
                {
22✔
1192
                        yyVAL.stmt = &UnionStmt{
11✔
1193
                                distinct: yyDollar[3].distinct,
11✔
1194
                                left:     yyDollar[1].stmt.(DataSource),
11✔
1195
                                right:    yyDollar[4].stmt.(DataSource),
11✔
1196
                        }
11✔
1197
                }
11✔
1198
        case 77:
1✔
1199
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1200
                {
2✔
1201
                        yyVAL.stmt = &SelectStmt{
1✔
1202
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}},
1✔
1203
                        }
1✔
1204
                }
1✔
1205
        case 78:
1✔
1206
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1207
                {
2✔
1208
                        yyVAL.stmt = &SelectStmt{
1✔
1209
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}},
1✔
1210
                        }
1✔
1211
                }
1✔
1212
        case 79:
447✔
1213
                yyDollar = yyS[yypt-13 : yypt+1]
447✔
1214
                {
894✔
1215
                        yyVAL.stmt = &SelectStmt{
447✔
1216
                                distinct:  yyDollar[2].distinct,
447✔
1217
                                selectors: yyDollar[3].sels,
447✔
1218
                                ds:        yyDollar[5].ds,
447✔
1219
                                indexOn:   yyDollar[6].ids,
447✔
1220
                                joins:     yyDollar[7].joins,
447✔
1221
                                where:     yyDollar[8].exp,
447✔
1222
                                groupBy:   yyDollar[9].cols,
447✔
1223
                                having:    yyDollar[10].exp,
447✔
1224
                                orderBy:   yyDollar[11].ordcols,
447✔
1225
                                limit:     yyDollar[12].exp,
447✔
1226
                                offset:    yyDollar[13].exp,
447✔
1227
                        }
447✔
1228
                }
447✔
1229
        case 80:
11✔
1230
                yyDollar = yyS[yypt-0 : yypt+1]
11✔
1231
                {
22✔
1232
                        yyVAL.distinct = true
11✔
1233
                }
11✔
1234
        case 81:
1✔
1235
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1236
                {
2✔
1237
                        yyVAL.distinct = false
1✔
1238
                }
1✔
1239
        case 82:
439✔
1240
                yyDollar = yyS[yypt-0 : yypt+1]
439✔
1241
                {
878✔
1242
                        yyVAL.distinct = false
439✔
1243
                }
439✔
1244
        case 83:
8✔
1245
                yyDollar = yyS[yypt-1 : yypt+1]
8✔
1246
                {
16✔
1247
                        yyVAL.distinct = true
8✔
1248
                }
8✔
1249
        case 84:
113✔
1250
                yyDollar = yyS[yypt-1 : yypt+1]
113✔
1251
                {
226✔
1252
                        yyVAL.sels = nil
113✔
1253
                }
113✔
1254
        case 85:
334✔
1255
                yyDollar = yyS[yypt-1 : yypt+1]
334✔
1256
                {
668✔
1257
                        yyVAL.sels = yyDollar[1].sels
334✔
1258
                }
334✔
1259
        case 86:
334✔
1260
                yyDollar = yyS[yypt-2 : yypt+1]
334✔
1261
                {
668✔
1262
                        yyDollar[1].sel.setAlias(yyDollar[2].id)
334✔
1263
                        yyVAL.sels = []Selector{yyDollar[1].sel}
334✔
1264
                }
334✔
1265
        case 87:
364✔
1266
                yyDollar = yyS[yypt-4 : yypt+1]
364✔
1267
                {
728✔
1268
                        yyDollar[3].sel.setAlias(yyDollar[4].id)
364✔
1269
                        yyVAL.sels = append(yyDollar[1].sels, yyDollar[3].sel)
364✔
1270
                }
364✔
1271
        case 88:
969✔
1272
                yyDollar = yyS[yypt-1 : yypt+1]
969✔
1273
                {
1,938✔
1274
                        yyVAL.sel = yyDollar[1].col
969✔
1275
                }
969✔
1276
        case 89:
36✔
1277
                yyDollar = yyS[yypt-4 : yypt+1]
36✔
1278
                {
72✔
1279
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, col: "*"}
36✔
1280
                }
36✔
1281
        case 90:
50✔
1282
                yyDollar = yyS[yypt-4 : yypt+1]
50✔
1283
                {
100✔
1284
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, table: yyDollar[3].col.table, col: yyDollar[3].col.col}
50✔
1285
                }
50✔
1286
        case 91:
1,040✔
1287
                yyDollar = yyS[yypt-1 : yypt+1]
1,040✔
1288
                {
2,080✔
1289
                        yyVAL.col = &ColSelector{col: yyDollar[1].id}
1,040✔
1290
                }
1,040✔
1291
        case 92:
93✔
1292
                yyDollar = yyS[yypt-3 : yypt+1]
93✔
1293
                {
186✔
1294
                        yyVAL.col = &ColSelector{table: yyDollar[1].id, col: yyDollar[3].id}
93✔
1295
                }
93✔
1296
        case 93:
438✔
1297
                yyDollar = yyS[yypt-3 : yypt+1]
438✔
1298
                {
876✔
1299
                        yyDollar[1].tableRef.period = yyDollar[2].period
438✔
1300
                        yyDollar[1].tableRef.as = yyDollar[3].id
438✔
1301
                        yyVAL.ds = yyDollar[1].tableRef
438✔
1302
                }
438✔
1303
        case 94:
11✔
1304
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1305
                {
22✔
1306
                        yyDollar[2].stmt.(*SelectStmt).as = yyDollar[4].id
11✔
1307
                        yyVAL.ds = yyDollar[2].stmt.(DataSource)
11✔
1308
                }
11✔
1309
        case 95:
4✔
1310
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1311
                {
8✔
1312
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}, as: yyDollar[4].id}
4✔
1313
                }
4✔
1314
        case 96:
4✔
1315
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1316
                {
8✔
1317
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}, as: yyDollar[4].id}
4✔
1318
                }
4✔
1319
        case 97:
6✔
1320
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1321
                {
12✔
1322
                        yyVAL.ds = &FnDataSourceStmt{fnCall: yyDollar[1].value.(*FnCall), as: yyDollar[2].id}
6✔
1323
                }
6✔
1324
        case 98:
2✔
1325
                yyDollar = yyS[yypt-6 : yypt+1]
2✔
1326
                {
4✔
1327
                        yyVAL.ds = &tableRef{table: yyDollar[4].id, history: true, as: yyDollar[6].id}
2✔
1328
                }
2✔
1329
        case 99:
1,243✔
1330
                yyDollar = yyS[yypt-1 : yypt+1]
1,243✔
1331
                {
2,486✔
1332
                        yyVAL.tableRef = &tableRef{table: yyDollar[1].id}
1,243✔
1333
                }
1,243✔
1334
        case 100:
447✔
1335
                yyDollar = yyS[yypt-2 : yypt+1]
447✔
1336
                {
894✔
1337
                        yyVAL.period = period{start: yyDollar[1].openPeriod, end: yyDollar[2].openPeriod}
447✔
1338
                }
447✔
1339
        case 101:
378✔
1340
                yyDollar = yyS[yypt-0 : yypt+1]
378✔
1341
                {
756✔
1342
                        yyVAL.openPeriod = nil
378✔
1343
                }
378✔
1344
        case 102:
44✔
1345
                yyDollar = yyS[yypt-2 : yypt+1]
44✔
1346
                {
88✔
1347
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
44✔
1348
                }
44✔
1349
        case 103:
25✔
1350
                yyDollar = yyS[yypt-2 : yypt+1]
25✔
1351
                {
50✔
1352
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
25✔
1353
                }
25✔
1354
        case 104:
403✔
1355
                yyDollar = yyS[yypt-0 : yypt+1]
403✔
1356
                {
806✔
1357
                        yyVAL.openPeriod = nil
403✔
1358
                }
403✔
1359
        case 105:
33✔
1360
                yyDollar = yyS[yypt-2 : yypt+1]
33✔
1361
                {
66✔
1362
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
33✔
1363
                }
33✔
1364
        case 106:
11✔
1365
                yyDollar = yyS[yypt-2 : yypt+1]
11✔
1366
                {
22✔
1367
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
11✔
1368
                }
11✔
1369
        case 107:
56✔
1370
                yyDollar = yyS[yypt-2 : yypt+1]
56✔
1371
                {
112✔
1372
                        yyVAL.periodInstant = periodInstant{instantType: txInstant, exp: yyDollar[2].exp}
56✔
1373
                }
56✔
1374
        case 108:
57✔
1375
                yyDollar = yyS[yypt-1 : yypt+1]
57✔
1376
                {
114✔
1377
                        yyVAL.periodInstant = periodInstant{instantType: timeInstant, exp: yyDollar[1].exp}
57✔
1378
                }
57✔
1379
        case 109:
434✔
1380
                yyDollar = yyS[yypt-0 : yypt+1]
434✔
1381
                {
868✔
1382
                        yyVAL.joins = nil
434✔
1383
                }
434✔
1384
        case 110:
13✔
1385
                yyDollar = yyS[yypt-1 : yypt+1]
13✔
1386
                {
26✔
1387
                        yyVAL.joins = yyDollar[1].joins
13✔
1388
                }
13✔
1389
        case 111:
13✔
1390
                yyDollar = yyS[yypt-1 : yypt+1]
13✔
1391
                {
26✔
1392
                        yyVAL.joins = []*JoinSpec{yyDollar[1].join}
13✔
1393
                }
13✔
1394
        case 112:
5✔
1395
                yyDollar = yyS[yypt-2 : yypt+1]
5✔
1396
                {
10✔
1397
                        yyVAL.joins = append([]*JoinSpec{yyDollar[1].join}, yyDollar[2].joins...)
5✔
1398
                }
5✔
1399
        case 113:
18✔
1400
                yyDollar = yyS[yypt-6 : yypt+1]
18✔
1401
                {
36✔
1402
                        yyVAL.join = &JoinSpec{joinType: yyDollar[1].joinType, ds: yyDollar[3].ds, indexOn: yyDollar[4].ids, cond: yyDollar[6].exp}
18✔
1403
                }
18✔
1404
        case 114:
1✔
1405
                yyDollar = yyS[yypt-0 : yypt+1]
1✔
1406
                {
2✔
1407
                        yyVAL.joinType = InnerJoin
1✔
1408
                }
1✔
1409
        case 115:
17✔
1410
                yyDollar = yyS[yypt-1 : yypt+1]
17✔
1411
                {
34✔
1412
                        yyVAL.joinType = yyDollar[1].joinType
17✔
1413
                }
17✔
1414
        case 116:
280✔
1415
                yyDollar = yyS[yypt-0 : yypt+1]
280✔
1416
                {
560✔
1417
                        yyVAL.exp = nil
280✔
1418
                }
280✔
1419
        case 117:
197✔
1420
                yyDollar = yyS[yypt-2 : yypt+1]
197✔
1421
                {
394✔
1422
                        yyVAL.exp = yyDollar[2].exp
197✔
1423
                }
197✔
1424
        case 118:
437✔
1425
                yyDollar = yyS[yypt-0 : yypt+1]
437✔
1426
                {
874✔
1427
                        yyVAL.cols = nil
437✔
1428
                }
437✔
1429
        case 119:
10✔
1430
                yyDollar = yyS[yypt-3 : yypt+1]
10✔
1431
                {
20✔
1432
                        yyVAL.cols = yyDollar[3].cols
10✔
1433
                }
10✔
1434
        case 120:
440✔
1435
                yyDollar = yyS[yypt-0 : yypt+1]
440✔
1436
                {
880✔
1437
                        yyVAL.exp = nil
440✔
1438
                }
440✔
1439
        case 121:
7✔
1440
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1441
                {
14✔
1442
                        yyVAL.exp = yyDollar[2].exp
7✔
1443
                }
7✔
1444
        case 122:
440✔
1445
                yyDollar = yyS[yypt-0 : yypt+1]
440✔
1446
                {
880✔
1447
                        yyVAL.exp = nil
440✔
1448
                }
440✔
1449
        case 123:
37✔
1450
                yyDollar = yyS[yypt-2 : yypt+1]
37✔
1451
                {
74✔
1452
                        yyVAL.exp = yyDollar[2].exp
37✔
1453
                }
37✔
1454
        case 124:
473✔
1455
                yyDollar = yyS[yypt-0 : yypt+1]
473✔
1456
                {
946✔
1457
                        yyVAL.exp = nil
473✔
1458
                }
473✔
1459
        case 125:
4✔
1460
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
1461
                {
8✔
1462
                        yyVAL.exp = yyDollar[2].exp
4✔
1463
                }
4✔
1464
        case 126:
345✔
1465
                yyDollar = yyS[yypt-0 : yypt+1]
345✔
1466
                {
690✔
1467
                        yyVAL.ordcols = nil
345✔
1468
                }
345✔
1469
        case 127:
102✔
1470
                yyDollar = yyS[yypt-3 : yypt+1]
102✔
1471
                {
204✔
1472
                        yyVAL.ordcols = yyDollar[3].ordcols
102✔
1473
                }
102✔
1474
        case 128:
470✔
1475
                yyDollar = yyS[yypt-0 : yypt+1]
470✔
1476
                {
940✔
1477
                        yyVAL.ids = nil
470✔
1478
                }
470✔
1479
        case 129:
25✔
1480
                yyDollar = yyS[yypt-4 : yypt+1]
25✔
1481
                {
50✔
1482
                        yyVAL.ids = yyDollar[4].ids
25✔
1483
                }
25✔
1484
        case 130:
102✔
1485
                yyDollar = yyS[yypt-2 : yypt+1]
102✔
1486
                {
204✔
1487
                        yyVAL.ordcols = []*OrdCol{{sel: yyDollar[1].col, descOrder: yyDollar[2].opt_ord}}
102✔
1488
                }
102✔
1489
        case 131:
2✔
1490
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
1491
                {
4✔
1492
                        yyVAL.ordcols = append(yyDollar[1].ordcols, &OrdCol{sel: yyDollar[3].col, descOrder: yyDollar[4].opt_ord})
2✔
1493
                }
2✔
1494
        case 132:
41✔
1495
                yyDollar = yyS[yypt-0 : yypt+1]
41✔
1496
                {
82✔
1497
                        yyVAL.opt_ord = false
41✔
1498
                }
41✔
1499
        case 133:
12✔
1500
                yyDollar = yyS[yypt-1 : yypt+1]
12✔
1501
                {
24✔
1502
                        yyVAL.opt_ord = false
12✔
1503
                }
12✔
1504
        case 134:
51✔
1505
                yyDollar = yyS[yypt-1 : yypt+1]
51✔
1506
                {
102✔
1507
                        yyVAL.opt_ord = true
51✔
1508
                }
51✔
1509
        case 135:
1,103✔
1510
                yyDollar = yyS[yypt-0 : yypt+1]
1,103✔
1511
                {
2,206✔
1512
                        yyVAL.id = ""
1,103✔
1513
                }
1,103✔
1514
        case 136:
20✔
1515
                yyDollar = yyS[yypt-1 : yypt+1]
20✔
1516
                {
40✔
1517
                        yyVAL.id = yyDollar[1].id
20✔
1518
                }
20✔
1519
        case 137:
40✔
1520
                yyDollar = yyS[yypt-2 : yypt+1]
40✔
1521
                {
80✔
1522
                        yyVAL.id = yyDollar[2].id
40✔
1523
                }
40✔
1524
        case 138:
2,647✔
1525
                yyDollar = yyS[yypt-1 : yypt+1]
2,647✔
1526
                {
5,294✔
1527
                        yyVAL.exp = yyDollar[1].exp
2,647✔
1528
                }
2,647✔
1529
        case 139:
426✔
1530
                yyDollar = yyS[yypt-1 : yypt+1]
426✔
1531
                {
852✔
1532
                        yyVAL.exp = yyDollar[1].binExp
426✔
1533
                }
426✔
1534
        case 140:
13✔
1535
                yyDollar = yyS[yypt-2 : yypt+1]
13✔
1536
                {
26✔
1537
                        yyVAL.exp = &NotBoolExp{exp: yyDollar[2].exp}
13✔
1538
                }
13✔
1539
        case 141:
3✔
1540
                yyDollar = yyS[yypt-2 : yypt+1]
3✔
1541
                {
6✔
1542
                        yyVAL.exp = &NumExp{left: &Integer{val: 0}, op: SUBSOP, right: yyDollar[2].exp}
3✔
1543
                }
3✔
1544
        case 142:
8✔
1545
                yyDollar = yyS[yypt-4 : yypt+1]
8✔
1546
                {
16✔
1547
                        yyVAL.exp = &LikeBoolExp{val: yyDollar[1].exp, notLike: yyDollar[2].boolean, pattern: yyDollar[4].exp}
8✔
1548
                }
8✔
1549
        case 143:
1✔
1550
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1551
                {
2✔
1552
                        yyVAL.exp = &ExistsBoolExp{q: (yyDollar[3].stmt).(DataSource)}
1✔
1553
                }
1✔
1554
        case 144:
×
1555
                yyDollar = yyS[yypt-6 : yypt+1]
×
1556
                {
×
1557
                        yyVAL.exp = &InSubQueryExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, q: yyDollar[5].stmt.(*SelectStmt)}
×
1558
                }
×
1559
        case 145:
12✔
1560
                yyDollar = yyS[yypt-6 : yypt+1]
12✔
1561
                {
24✔
1562
                        yyVAL.exp = &InListExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, values: yyDollar[5].values}
12✔
1563
                }
12✔
1564
        case 146:
357✔
1565
                yyDollar = yyS[yypt-1 : yypt+1]
357✔
1566
                {
714✔
1567
                        yyVAL.exp = yyDollar[1].sel
357✔
1568
                }
357✔
1569
        case 147:
2,292✔
1570
                yyDollar = yyS[yypt-1 : yypt+1]
2,292✔
1571
                {
4,584✔
1572
                        yyVAL.exp = yyDollar[1].value
2,292✔
1573
                }
2,292✔
1574
        case 148:
18✔
1575
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1576
                {
36✔
1577
                        yyVAL.exp = yyDollar[2].exp
18✔
1578
                }
18✔
1579
        case 149:
2✔
1580
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1581
                {
4✔
1582
                        yyVAL.exp = &Cast{val: yyDollar[1].exp, t: yyDollar[3].sqlType}
2✔
1583
                }
2✔
1584
        case 150:
19✔
1585
                yyDollar = yyS[yypt-0 : yypt+1]
19✔
1586
                {
38✔
1587
                        yyVAL.boolean = false
19✔
1588
                }
19✔
1589
        case 151:
1✔
1590
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1591
                {
2✔
1592
                        yyVAL.boolean = true
1✔
1593
                }
1✔
1594
        case 152:
10✔
1595
                yyDollar = yyS[yypt-3 : yypt+1]
10✔
1596
                {
20✔
1597
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: ADDOP, right: yyDollar[3].exp}
10✔
1598
                }
10✔
1599
        case 153:
13✔
1600
                yyDollar = yyS[yypt-3 : yypt+1]
13✔
1601
                {
26✔
1602
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: SUBSOP, right: yyDollar[3].exp}
13✔
1603
                }
13✔
1604
        case 154:
4✔
1605
                yyDollar = yyS[yypt-3 : yypt+1]
4✔
1606
                {
8✔
1607
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: DIVOP, right: yyDollar[3].exp}
4✔
1608
                }
4✔
1609
        case 155:
2✔
1610
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1611
                {
4✔
1612
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: MULTOP, right: yyDollar[3].exp}
2✔
1613
                }
2✔
1614
        case 156:
116✔
1615
                yyDollar = yyS[yypt-3 : yypt+1]
116✔
1616
                {
232✔
1617
                        yyVAL.binExp = &BinBoolExp{left: yyDollar[1].exp, op: yyDollar[2].logicOp, right: yyDollar[3].exp}
116✔
1618
                }
116✔
1619
        case 157:
279✔
1620
                yyDollar = yyS[yypt-3 : yypt+1]
279✔
1621
                {
558✔
1622
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: yyDollar[2].cmpOp, right: yyDollar[3].exp}
279✔
1623
                }
279✔
1624
        case 158:
1✔
1625
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
1626
                {
2✔
1627
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: EQ, right: &NullValue{t: AnyType}}
1✔
1628
                }
1✔
1629
        case 159:
1✔
1630
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1631
                {
2✔
1632
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: NE, right: &NullValue{t: AnyType}}
1✔
1633
                }
1✔
1634
        }
1635
        goto yystack /* stack new state and value */
40,530✔
1636
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc