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

codenotary / immudb / 9367064922

04 Jun 2024 12:27PM UTC coverage: 89.43% (-0.02%) from 89.451%
9367064922

push

gh-ci

ostafen
Add support for JSON type

Signed-off-by: Stefano Scafiti <stefano.scafiti96@gmail.com>

521 of 575 new or added lines in 14 files covered. (90.61%)

12 existing lines in 5 files now uncovered.

35172 of 39329 relevant lines covered (89.43%)

160547.56 hits per line

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

92.35
/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) {
2,878✔
9
        l.(*lexer).result = stmts
2,878✔
10
}
2,878✔
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
        jsonFields    []string
37
        distinct      bool
38
        ds            DataSource
39
        tableRef      *tableRef
40
        period        period
41
        openPeriod    *openPeriod
42
        periodInstant periodInstant
43
        joins         []*JoinSpec
44
        join          *JoinSpec
45
        joinType      JoinType
46
        exp           ValueExp
47
        binExp        ValueExp
48
        err           error
49
        ordcols       []*OrdCol
50
        opt_ord       bool
51
        logicOp       LogicOperator
52
        cmpOp         CmpOperator
53
        pparam        int
54
        update        *colUpdate
55
        updates       []*colUpdate
56
        onConflict    *OnConflictDo
57
        permission    Permission
58
}
59

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

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

259
var yyStatenames = [...]string{}
260

261
const yyEofCode = 1
262
const yyErrCode = 2
263
const yyInitialStackSize = 16
264

265
var yyExca = [...]int16{
266
        -1, 1,
267
        1, -1,
268
        -2, 0,
269
        -1, 93,
270
        65, 164,
271
        68, 164,
272
        -2, 152,
273
        -1, 231,
274
        51, 128,
275
        -2, 123,
276
        -1, 272,
277
        51, 128,
278
        -2, 125,
279
}
280

281
const yyPrivate = 57344
282

283
const yyLast = 452
284

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

334
var yyPact = [...]int16{
335
        264, -1000, -1000, 26, -1000, -1000, -1000, 339, -1000, -1000,
336
        385, 198, 373, 382, 333, 332, 303, 195, 267, 273,
337
        307, -1000, 264, -1000, 257, 257, 257, 364, 211, -1000,
338
        210, 384, 209, 200, 207, 203, 197, 195, 195, 195,
339
        319, -1000, 265, -1000, -1000, 194, -1000, 47, -1000, -1000,
340
        190, 256, 183, 361, 257, 410, -1000, -1000, 393, 31,
341
        31, -1000, 181, 84, -1000, 378, 409, 24, 23, 292,
342
        157, 247, -1000, -1000, 302, -1000, 73, 153, 58, 21,
343
        76, -1000, 248, 14, 180, 360, 403, -1000, 31, 31,
344
        -1000, 132, 83, 240, -1000, 132, 132, 12, -1000, -1000,
345
        132, -1000, -1000, -1000, -1000, -1000, 11, -1000, -1000, -1000,
346
        -1000, -2, -1000, 10, 179, 348, 346, 347, 387, 142,
347
        142, 388, 132, 100, -1000, 155, -1000, 3, 101, -1000,
348
        -1000, 178, 48, 114, 57, 174, -1000, 171, 7, 173,
349
        106, -1000, -1000, 83, 132, 132, 132, 132, 132, 132,
350
        255, 259, 140, -1000, 147, 60, 247, -14, 132, 132,
351
        142, -1000, 171, 170, 165, 163, 102, -15, 72, -1000,
352
        -59, 279, 363, 83, 388, 157, 132, 388, 384, 293,
353
        6, 5, 4, -1, 153, -7, 153, -1000, 88, -1000,
354
        -17, -27, -1000, 69, -1000, 129, 142, -8, 404, 60,
355
        60, 242, 242, 147, 154, -1000, 234, 132, -10, -1000,
356
        -28, -1000, 74, -29, 68, 83, -61, -1000, -1000, 350,
357
        -1000, 404, 327, 156, 324, 277, 132, 359, 279, -1000,
358
        83, 150, 153, -30, 374, -32, -33, 151, -43, -1000,
359
        -1000, -1000, -1000, -1000, 175, -76, -62, 142, -1000, -1000,
360
        -1000, -1000, -1000, 147, -25, -1000, 122, -1000, 132, -1000,
361
        149, -1000, -24, -1000, -24, -1000, 132, 83, -35, 277,
362
        292, -1000, 150, 300, -1000, -1000, 153, 148, 153, 153,
363
        -45, 153, 342, -1000, 254, 110, 103, -1000, -64, -46,
364
        -65, -50, 83, -1000, 108, -1000, 132, 67, 83, -1000,
365
        -1000, 142, -1000, 288, -1000, 3, -1000, -57, -1000, -1000,
366
        -1000, -1000, -35, 239, -1000, 228, -80, -58, -1000, -1000,
367
        -1000, -1000, -1000, -24, 317, -68, -66, 294, 285, 388,
368
        153, -71, -1000, -1000, -1000, -1000, -1000, -1000, 312, -1000,
369
        -1000, 275, 132, 104, 358, -1000, -1000, 310, 279, 284,
370
        83, 42, -1000, 132, -1000, 277, 101, 104, 83, -1000,
371
        34, 271, -1000, 101, -1000, -1000, -1000, 271, -1000,
372
}
373

374
var yyPgo = [...]int16{
375
        0, 451, 391, 450, 449, 448, 17, 447, 446, 20,
376
        12, 9, 445, 444, 14, 8, 16, 13, 443, 11,
377
        2, 442, 441, 440, 3, 439, 438, 10, 364, 21,
378
        437, 436, 186, 435, 15, 434, 433, 0, 18, 432,
379
        431, 430, 429, 6, 4, 428, 5, 427, 426, 1,
380
        7, 344, 425, 424, 423, 22, 422, 421, 19, 420,
381
}
382

383
var yyR1 = [...]int8{
384
        0, 1, 2, 2, 59, 59, 3, 3, 3, 4,
385
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
386
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
387
        58, 58, 58, 58, 51, 51, 11, 11, 5, 5,
388
        5, 5, 57, 57, 56, 56, 55, 12, 12, 14,
389
        14, 15, 10, 10, 13, 13, 17, 17, 16, 16,
390
        18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
391
        19, 8, 8, 9, 45, 45, 45, 52, 52, 53,
392
        53, 53, 6, 6, 6, 6, 6, 6, 7, 26,
393
        26, 25, 25, 21, 21, 22, 22, 20, 20, 20,
394
        20, 23, 23, 24, 24, 27, 27, 27, 27, 27,
395
        27, 27, 27, 28, 29, 30, 30, 30, 31, 31,
396
        31, 32, 32, 33, 33, 34, 34, 35, 36, 36,
397
        38, 38, 42, 42, 39, 39, 43, 43, 44, 44,
398
        48, 48, 50, 50, 47, 47, 49, 49, 49, 46,
399
        46, 46, 37, 37, 37, 37, 37, 37, 37, 37,
400
        40, 40, 40, 40, 54, 54, 41, 41, 41, 41,
401
        41, 41, 41, 41,
402
}
403

404
var yyR2 = [...]int8{
405
        0, 1, 2, 3, 0, 1, 1, 1, 1, 2,
406
        1, 1, 1, 4, 2, 3, 3, 11, 3, 8,
407
        9, 7, 5, 6, 6, 8, 6, 7, 7, 3,
408
        0, 1, 1, 1, 0, 3, 1, 3, 9, 8,
409
        7, 8, 0, 4, 1, 3, 3, 0, 1, 1,
410
        3, 3, 1, 3, 1, 3, 0, 1, 1, 3,
411
        1, 1, 1, 1, 1, 6, 1, 1, 1, 1,
412
        4, 1, 3, 5, 0, 3, 3, 0, 1, 0,
413
        1, 2, 1, 4, 2, 2, 3, 2, 13, 0,
414
        1, 0, 1, 1, 1, 2, 4, 1, 2, 4,
415
        4, 2, 3, 1, 3, 3, 4, 4, 4, 4,
416
        4, 2, 6, 1, 2, 0, 2, 2, 0, 2,
417
        2, 2, 1, 0, 1, 1, 2, 6, 0, 1,
418
        0, 2, 0, 3, 0, 2, 0, 2, 0, 2,
419
        0, 3, 0, 4, 2, 4, 0, 1, 1, 0,
420
        1, 2, 1, 1, 2, 2, 4, 4, 6, 6,
421
        1, 1, 3, 3, 0, 1, 3, 3, 3, 3,
422
        3, 3, 3, 4,
423
}
424

425
var yyChk = [...]int16{
426
        -1000, -1, -2, -3, -4, -5, -6, 34, 36, 37,
427
        4, 6, 5, 27, 38, 39, 42, 43, -7, 74,
428
        48, -59, 100, 35, 7, 23, 25, 24, 8, 83,
429
        7, 14, 23, 25, 8, 23, 8, 40, 40, 50,
430
        -28, 83, 62, 75, 76, 23, 77, -25, 49, -2,
431
        -51, 66, -51, -51, 25, 83, 83, -29, -30, 16,
432
        17, 83, 26, 83, 83, 83, 83, -28, -28, -28,
433
        44, -26, 63, 83, -21, 97, -22, -20, -24, 90,
434
        83, 83, 64, 83, 26, -51, 9, -31, 19, 18,
435
        -32, 20, -37, -40, -41, 64, 96, 67, -20, -18,
436
        101, 85, 86, 87, 88, 89, 72, -19, 78, 79,
437
        71, 83, -32, 83, 92, 28, 29, 5, 9, 101,
438
        101, -38, 53, -56, -55, 83, -6, 50, 94, -46,
439
        83, 61, -23, 93, 101, 92, 67, 101, 83, 26,
440
        10, -32, -32, -37, 95, 96, 98, 97, 81, 82,
441
        69, -54, 73, 64, -37, -37, 101, -37, 101, 101,
442
        101, 83, 31, 30, 31, 31, 10, -12, -10, 83,
443
        -10, -50, 6, -37, -38, 94, 82, -27, -28, 101,
444
        75, 76, 23, 77, -19, 83, -20, 83, 93, 87,
445
        97, -24, 83, -8, -9, 83, 101, 83, 87, -37,
446
        -37, -37, -37, -37, -37, 71, 64, 65, 68, 84,
447
        -6, 102, -37, -17, -16, -37, -10, -9, 83, 83,
448
        83, 87, 102, 94, 102, -43, 56, 25, -50, -55,
449
        -37, -50, -29, -6, 15, 101, 101, 101, 101, -46,
450
        -46, 87, 102, 102, 94, 84, -10, 101, -58, 11,
451
        12, 13, 71, -37, 101, 102, 61, 102, 94, 102,
452
        30, -58, 41, 83, 41, -44, 57, -37, 26, -43,
453
        -33, -34, -35, -36, 80, -46, 102, 21, 102, 102,
454
        83, 102, 32, -9, -45, 103, 101, 102, -10, -6,
455
        -16, 84, -37, 83, -14, -15, 101, -14, -37, -11,
456
        83, 101, -44, -38, -34, 51, -46, 83, -46, -46,
457
        102, -46, 33, -53, 71, 64, 85, 85, 102, 102,
458
        102, 102, -57, 94, 26, -17, -10, -42, 54, -27,
459
        102, -11, -52, 70, 71, 104, 102, -15, 45, 102,
460
        102, -39, 52, 55, -50, -46, 102, 46, -48, 58,
461
        -37, -13, -24, 26, 47, -43, 55, 94, -37, -44,
462
        -47, -20, -24, 94, -49, 59, 60, -20, -49,
463
}
464

465
var yyDef = [...]int16{
466
        0, -2, 1, 4, 6, 7, 8, 10, 11, 12,
467
        0, 0, 0, 0, 0, 0, 0, 0, 82, 0,
468
        91, 2, 5, 9, 34, 34, 34, 0, 0, 14,
469
        0, 115, 0, 0, 0, 0, 0, 0, 0, 0,
470
        0, 113, 89, 84, 85, 0, 87, 0, 92, 3,
471
        0, 0, 0, 0, 34, 0, 15, 16, 118, 0,
472
        0, 18, 0, 0, 29, 0, 0, 0, 0, 130,
473
        0, 0, 90, 86, 0, 93, 94, 149, 97, 0,
474
        103, 13, 0, 0, 0, 0, 0, 114, 0, 0,
475
        116, 0, 122, -2, 153, 0, 0, 0, 160, 161,
476
        0, 60, 61, 62, 63, 64, 0, 66, 67, 68,
477
        69, 103, 117, 0, 0, 0, 0, 0, 0, 47,
478
        0, 142, 0, 130, 44, 0, 83, 0, 0, 95,
479
        150, 0, 98, 0, 0, 0, 35, 0, 0, 0,
480
        0, 119, 120, 121, 0, 0, 0, 0, 0, 0,
481
        0, 0, 0, 165, 154, 155, 0, 0, 0, 56,
482
        0, 22, 0, 0, 0, 0, 0, 0, 48, 52,
483
        0, 136, 0, 131, 142, 0, 0, 142, 115, 0,
484
        0, 0, 0, 0, 149, 113, 149, 151, 0, 101,
485
        0, 0, 104, 0, 71, 0, 0, 0, 30, 166,
486
        167, 168, 169, 170, 171, 172, 0, 0, 0, 163,
487
        0, 162, 0, 0, 57, 58, 0, 23, 24, 0,
488
        26, 30, 0, 0, 0, 138, 0, 0, 136, 45,
489
        46, -2, 149, 0, 0, 0, 0, 0, 0, 111,
490
        96, 102, 99, 100, 0, 74, 0, 0, 27, 31,
491
        32, 33, 173, 156, 0, 157, 0, 70, 0, 21,
492
        0, 28, 0, 53, 0, 40, 0, 137, 0, 138,
493
        130, 124, -2, 0, 129, 105, 149, 0, 149, 149,
494
        0, 149, 0, 72, 79, 0, 0, 19, 0, 0,
495
        0, 0, 59, 25, 42, 49, 56, 39, 139, 143,
496
        36, 0, 41, 132, 126, 0, 106, 0, 107, 108,
497
        109, 110, 0, 77, 80, 0, 0, 0, 20, 158,
498
        159, 65, 38, 0, 0, 0, 0, 134, 0, 142,
499
        149, 0, 73, 78, 81, 75, 76, 50, 0, 51,
500
        37, 140, 0, 0, 0, 112, 17, 0, 136, 0,
501
        135, 133, 54, 0, 43, 138, 0, 0, 127, 88,
502
        141, 146, 55, 0, 144, 147, 148, 146, 145,
503
}
504

505
var yyTok1 = [...]int8{
506
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
507
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
508
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
509
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
510
        101, 102, 97, 95, 94, 96, 99, 98, 3, 3,
511
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
512
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
513
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
514
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
515
        3, 103, 3, 104,
516
}
517

518
var yyTok2 = [...]int8{
519
        2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
520
        12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
521
        22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
522
        32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
523
        42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
524
        52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
525
        62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
526
        72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
527
        82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
528
        92, 93, 100,
529
}
530

531
var yyTok3 = [...]int8{
532
        0,
533
}
534

535
var yyErrorMessages = [...]struct {
536
        state int
537
        token int
538
        msg   string
539
}{}
540

541
/*        parser for yacc output        */
542

543
var (
544
        yyDebug        = 0
545
        yyErrorVerbose = false
546
)
547

548
type yyLexer interface {
549
        Lex(lval *yySymType) int
550
        Error(s string)
551
}
552

553
type yyParser interface {
554
        Parse(yyLexer) int
555
        Lookahead() int
556
}
557

558
type yyParserImpl struct {
559
        lval  yySymType
560
        stack [yyInitialStackSize]yySymType
561
        char  int
562
}
563

564
func (p *yyParserImpl) Lookahead() int {
×
565
        return p.char
×
566
}
×
567

568
func yyNewParser() yyParser {
2,917✔
569
        return &yyParserImpl{}
2,917✔
570
}
2,917✔
571

572
const yyFlag = -1000
573

574
func yyTokname(c int) string {
55✔
575
        if c >= 1 && c-1 < len(yyToknames) {
110✔
576
                if yyToknames[c-1] != "" {
110✔
577
                        return yyToknames[c-1]
55✔
578
                }
55✔
579
        }
580
        return __yyfmt__.Sprintf("tok-%v", c)
×
581
}
582

583
func yyStatname(s int) string {
×
584
        if s >= 0 && s < len(yyStatenames) {
×
585
                if yyStatenames[s] != "" {
×
586
                        return yyStatenames[s]
×
587
                }
×
588
        }
589
        return __yyfmt__.Sprintf("state-%v", s)
×
590
}
591

592
func yyErrorMessage(state, lookAhead int) string {
41✔
593
        const TOKSTART = 4
41✔
594

41✔
595
        if !yyErrorVerbose {
46✔
596
                return "syntax error"
5✔
597
        }
5✔
598

599
        for _, e := range yyErrorMessages {
36✔
600
                if e.state == state && e.token == lookAhead {
×
601
                        return "syntax error: " + e.msg
×
602
                }
×
603
        }
604

605
        res := "syntax error: unexpected " + yyTokname(lookAhead)
36✔
606

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

36✔
610
        // Look for shiftable tokens.
36✔
611
        base := int(yyPact[state])
36✔
612
        for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
2,702✔
613
                if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
2,775✔
614
                        if len(expected) == cap(expected) {
127✔
615
                                return res
18✔
616
                        }
18✔
617
                        expected = append(expected, tok)
91✔
618
                }
619
        }
620

621
        if yyDef[state] == -2 {
20✔
622
                i := 0
2✔
623
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
624
                        i += 2
×
625
                }
×
626

627
                // Look for tokens that we accept or reduce.
628
                for i += 2; yyExca[i] >= 0; i += 2 {
4✔
629
                        tok := int(yyExca[i])
2✔
630
                        if tok < TOKSTART || yyExca[i+1] == 0 {
4✔
631
                                continue
2✔
632
                        }
633
                        if len(expected) == cap(expected) {
×
634
                                return res
×
635
                        }
×
636
                        expected = append(expected, tok)
×
637
                }
638

639
                // If the default action is to accept or reduce, give up.
640
                if yyExca[i+1] != 0 {
2✔
641
                        return res
×
642
                }
×
643
        }
644

645
        for i, tok := range expected {
37✔
646
                if i == 0 {
35✔
647
                        res += ", expecting "
16✔
648
                } else {
19✔
649
                        res += " or "
3✔
650
                }
3✔
651
                res += yyTokname(tok)
19✔
652
        }
653
        return res
18✔
654
}
655

656
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
50,189✔
657
        token = 0
50,189✔
658
        char = lex.Lex(lval)
50,189✔
659
        if char <= 0 {
53,067✔
660
                token = int(yyTok1[0])
2,878✔
661
                goto out
2,878✔
662
        }
663
        if char < len(yyTok1) {
65,599✔
664
                token = int(yyTok1[char])
18,288✔
665
                goto out
18,288✔
666
        }
667
        if char >= yyPrivate {
58,046✔
668
                if char < yyPrivate+len(yyTok2) {
58,046✔
669
                        token = int(yyTok2[char-yyPrivate])
29,023✔
670
                        goto out
29,023✔
671
                }
672
        }
673
        for i := 0; i < len(yyTok3); i += 2 {
×
674
                token = int(yyTok3[i+0])
×
675
                if token == char {
×
676
                        token = int(yyTok3[i+1])
×
677
                        goto out
×
678
                }
679
        }
680

681
out:
682
        if token == 0 {
50,189✔
683
                token = int(yyTok2[1]) /* unknown char */
×
684
        }
×
685
        if yyDebug >= 3 {
50,189✔
686
                __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
×
687
        }
×
688
        return char, token
50,189✔
689
}
690

691
func yyParse(yylex yyLexer) int {
2,917✔
692
        return yyNewParser().Parse(yylex)
2,917✔
693
}
2,917✔
694

695
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
2,917✔
696
        var yyn int
2,917✔
697
        var yyVAL yySymType
2,917✔
698
        var yyDollar []yySymType
2,917✔
699
        _ = yyDollar // silence set and not used
2,917✔
700
        yyS := yyrcvr.stack[:]
2,917✔
701

2,917✔
702
        Nerrs := 0   /* number of errors */
2,917✔
703
        Errflag := 0 /* error recovery flag */
2,917✔
704
        yystate := 0
2,917✔
705
        yyrcvr.char = -1
2,917✔
706
        yytoken := -1 // yyrcvr.char translated into internal numbering
2,917✔
707
        defer func() {
5,834✔
708
                // Make sure we report no lookahead when not parsing.
2,917✔
709
                yystate = -1
2,917✔
710
                yyrcvr.char = -1
2,917✔
711
                yytoken = -1
2,917✔
712
        }()
2,917✔
713
        yyp := -1
2,917✔
714
        goto yystack
2,917✔
715

716
ret0:
717
        return 0
2,876✔
718

2,876✔
719
ret1:
2,876✔
720
        return 1
41✔
721

41✔
722
yystack:
41✔
723
        /* put a state and value onto the stack */
724
        if yyDebug >= 4 {
126,080✔
725
                __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
×
726
        }
×
727

728
        yyp++
126,080✔
729
        if yyp >= len(yyS) {
126,143✔
730
                nyys := make([]yySymType, len(yyS)*2)
63✔
731
                copy(nyys, yyS)
63✔
732
                yyS = nyys
63✔
733
        }
63✔
734
        yyS[yyp] = yyVAL
126,080✔
735
        yyS[yyp].yys = yystate
126,080✔
736

126,080✔
737
yynewstate:
126,080✔
738
        yyn = int(yyPact[yystate])
126,080✔
739
        if yyn <= yyFlag {
170,464✔
740
                goto yydefault /* simple state */
44,384✔
741
        }
742
        if yyrcvr.char < 0 {
131,885✔
743
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
50,189✔
744
        }
50,189✔
745
        yyn += yytoken
81,696✔
746
        if yyn < 0 || yyn >= yyLast {
82,038✔
747
                goto yydefault
342✔
748
        }
749
        yyn = int(yyAct[yyn])
81,354✔
750
        if int(yyChk[yyn]) == yytoken { /* valid shift */
128,626✔
751
                yyrcvr.char = -1
47,272✔
752
                yytoken = -1
47,272✔
753
                yyVAL = yyrcvr.lval
47,272✔
754
                yystate = yyn
47,272✔
755
                if Errflag > 0 {
47,272✔
756
                        Errflag--
×
757
                }
×
758
                goto yystack
47,272✔
759
        }
760

761
yydefault:
762
        /* default state action */
763
        yyn = int(yyDef[yystate])
78,808✔
764
        if yyn == -2 {
89,065✔
765
                if yyrcvr.char < 0 {
10,257✔
766
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
767
                }
×
768

769
                /* look through exception table */
770
                xi := 0
10,257✔
771
                for {
44,777✔
772
                        if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
44,777✔
773
                                break
10,257✔
774
                        }
775
                        xi += 2
24,263✔
776
                }
777
                for xi += 2; ; xi += 2 {
34,722✔
778
                        yyn = int(yyExca[xi+0])
24,465✔
779
                        if yyn < 0 || yyn == yytoken {
34,722✔
780
                                break
10,257✔
781
                        }
782
                }
783
                yyn = int(yyExca[xi+1])
10,257✔
784
                if yyn < 0 {
13,133✔
785
                        goto ret0
2,876✔
786
                }
787
        }
788
        if yyn == 0 {
75,973✔
789
                /* error ... attempt to resume parsing */
41✔
790
                switch Errflag {
41✔
791
                case 0: /* brand new error */
41✔
792
                        yylex.Error(yyErrorMessage(yystate, yytoken))
41✔
793
                        Nerrs++
41✔
794
                        if yyDebug >= 1 {
41✔
795
                                __yyfmt__.Printf("%s", yyStatname(yystate))
×
796
                                __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
×
797
                        }
×
798
                        fallthrough
41✔
799

800
                case 1, 2: /* incompletely recovered error ... try again */
41✔
801
                        Errflag = 3
41✔
802

41✔
803
                        /* find a state where "error" is a legal shift action */
41✔
804
                        for yyp >= 0 {
261✔
805
                                yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
220✔
806
                                if yyn >= 0 && yyn < yyLast {
403✔
807
                                        yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
183✔
808
                                        if int(yyChk[yystate]) == yyErrCode {
183✔
809
                                                goto yystack
×
810
                                        }
811
                                }
812

813
                                /* the current p has no shift on "error", pop stack */
814
                                if yyDebug >= 2 {
220✔
815
                                        __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
×
816
                                }
×
817
                                yyp--
220✔
818
                        }
819
                        /* there is no state on the stack with an error shift ... abort */
820
                        goto ret1
41✔
821

822
                case 3: /* no shift yet; clobber input char */
×
823
                        if yyDebug >= 2 {
×
824
                                __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
×
825
                        }
×
826
                        if yytoken == yyEofCode {
×
827
                                goto ret1
×
828
                        }
829
                        yyrcvr.char = -1
×
830
                        yytoken = -1
×
831
                        goto yynewstate /* try again in the same state */
×
832
                }
833
        }
834

835
        /* reduction by production yyn */
836
        if yyDebug >= 2 {
75,891✔
837
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
838
        }
×
839

840
        yynt := yyn
75,891✔
841
        yypt := yyp
75,891✔
842
        _ = yypt // guard against "declared and not used"
75,891✔
843

75,891✔
844
        yyp -= int(yyR2[yyn])
75,891✔
845
        // yyp is now the index of $0. Perform the default action. Iff the
75,891✔
846
        // reduced production is ε, $1 is possibly out of range.
75,891✔
847
        if yyp+1 >= len(yyS) {
75,912✔
848
                nyys := make([]yySymType, len(yyS)*2)
21✔
849
                copy(nyys, yyS)
21✔
850
                yyS = nyys
21✔
851
        }
21✔
852
        yyVAL = yyS[yyp+1]
75,891✔
853

75,891✔
854
        /* consult goto table to find next state */
75,891✔
855
        yyn = int(yyR1[yyn])
75,891✔
856
        yyg := int(yyPgo[yyn])
75,891✔
857
        yyj := yyg + yyS[yyp].yys + 1
75,891✔
858

75,891✔
859
        if yyj >= yyLast {
103,985✔
860
                yystate = int(yyAct[yyg])
28,094✔
861
        } else {
75,891✔
862
                yystate = int(yyAct[yyj])
47,797✔
863
                if int(yyChk[yystate]) != -yyn {
77,599✔
864
                        yystate = int(yyAct[yyg])
29,802✔
865
                }
29,802✔
866
        }
867
        // dummy call; replaced with literal code
868
        switch yynt {
75,891✔
869

870
        case 1:
2,878✔
871
                yyDollar = yyS[yypt-1 : yypt+1]
2,878✔
872
                {
5,756✔
873
                        yyVAL.stmts = yyDollar[1].stmts
2,878✔
874
                        setResult(yylex, yyDollar[1].stmts)
2,878✔
875
                }
2,878✔
876
        case 2:
2,878✔
877
                yyDollar = yyS[yypt-2 : yypt+1]
2,878✔
878
                {
5,756✔
879
                        yyVAL.stmts = []SQLStmt{yyDollar[1].stmt}
2,878✔
880
                }
2,878✔
881
        case 3:
93✔
882
                yyDollar = yyS[yypt-3 : yypt+1]
93✔
883
                {
186✔
884
                        yyVAL.stmts = append([]SQLStmt{yyDollar[1].stmt}, yyDollar[3].stmts...)
93✔
885
                }
93✔
886
        case 4:
2,576✔
887
                yyDollar = yyS[yypt-0 : yypt+1]
2,576✔
888
                {
5,152✔
889
                }
2,576✔
890
        case 9:
68✔
891
                yyDollar = yyS[yypt-2 : yypt+1]
68✔
892
                {
136✔
893
                        yyVAL.stmt = &BeginTransactionStmt{}
68✔
894
                }
68✔
895
        case 10:
1✔
896
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
897
                {
2✔
898
                        yyVAL.stmt = &BeginTransactionStmt{}
1✔
899
                }
1✔
900
        case 11:
173✔
901
                yyDollar = yyS[yypt-1 : yypt+1]
173✔
902
                {
346✔
903
                        yyVAL.stmt = &CommitStmt{}
173✔
904
                }
173✔
905
        case 12:
6✔
906
                yyDollar = yyS[yypt-1 : yypt+1]
6✔
907
                {
12✔
908
                        yyVAL.stmt = &RollbackStmt{}
6✔
909
                }
6✔
910
        case 13:
23✔
911
                yyDollar = yyS[yypt-4 : yypt+1]
23✔
912
                {
46✔
913
                        yyVAL.stmt = &CreateDatabaseStmt{ifNotExists: yyDollar[3].boolean, DB: yyDollar[4].id}
23✔
914
                }
23✔
915
        case 14:
3✔
916
                yyDollar = yyS[yypt-2 : yypt+1]
3✔
917
                {
6✔
918
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[2].id}
3✔
919
                }
3✔
920
        case 15:
14✔
921
                yyDollar = yyS[yypt-3 : yypt+1]
14✔
922
                {
28✔
923
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[3].id}
14✔
924
                }
14✔
925
        case 16:
9✔
926
                yyDollar = yyS[yypt-3 : yypt+1]
9✔
927
                {
18✔
928
                        yyVAL.stmt = &UseSnapshotStmt{period: yyDollar[3].period}
9✔
929
                }
9✔
930
        case 17:
197✔
931
                yyDollar = yyS[yypt-11 : yypt+1]
197✔
932
                {
394✔
933
                        yyVAL.stmt = &CreateTableStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[4].id, colsSpec: yyDollar[6].colsSpec, pkColNames: yyDollar[10].ids}
197✔
934
                }
197✔
935
        case 18:
2✔
936
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
937
                {
4✔
938
                        yyVAL.stmt = &DropTableStmt{table: yyDollar[3].id}
2✔
939
                }
2✔
940
        case 19:
62✔
941
                yyDollar = yyS[yypt-8 : yypt+1]
62✔
942
                {
124✔
943
                        yyVAL.stmt = &CreateIndexStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[5].id, cols: yyDollar[7].ids}
62✔
944
                }
62✔
945
        case 20:
21✔
946
                yyDollar = yyS[yypt-9 : yypt+1]
21✔
947
                {
42✔
948
                        yyVAL.stmt = &CreateIndexStmt{unique: true, ifNotExists: yyDollar[4].boolean, table: yyDollar[6].id, cols: yyDollar[8].ids}
21✔
949
                }
21✔
950
        case 21:
3✔
951
                yyDollar = yyS[yypt-7 : yypt+1]
3✔
952
                {
6✔
953
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[4].id, cols: yyDollar[6].ids}
3✔
954
                }
3✔
955
        case 22:
×
956
                yyDollar = yyS[yypt-5 : yypt+1]
×
957
                {
×
958
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[3].id, cols: []string{yyDollar[5].id}}
×
959
                }
×
960
        case 23:
16✔
961
                yyDollar = yyS[yypt-6 : yypt+1]
16✔
962
                {
32✔
963
                        yyVAL.stmt = &AddColumnStmt{table: yyDollar[3].id, colSpec: yyDollar[6].colSpec}
16✔
964
                }
16✔
965
        case 24:
6✔
966
                yyDollar = yyS[yypt-6 : yypt+1]
6✔
967
                {
12✔
968
                        yyVAL.stmt = &RenameTableStmt{oldName: yyDollar[3].id, newName: yyDollar[6].id}
6✔
969
                }
6✔
970
        case 25:
9✔
971
                yyDollar = yyS[yypt-8 : yypt+1]
9✔
972
                {
18✔
973
                        yyVAL.stmt = &RenameColumnStmt{table: yyDollar[3].id, oldName: yyDollar[6].id, newName: yyDollar[8].id}
9✔
974
                }
9✔
975
        case 26:
9✔
976
                yyDollar = yyS[yypt-6 : yypt+1]
9✔
977
                {
18✔
978
                        yyVAL.stmt = &DropColumnStmt{table: yyDollar[3].id, colName: yyDollar[6].id}
9✔
979
                }
9✔
980
        case 27:
6✔
981
                yyDollar = yyS[yypt-7 : yypt+1]
6✔
982
                {
12✔
983
                        yyVAL.stmt = &CreateUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
6✔
984
                }
6✔
985
        case 28:
5✔
986
                yyDollar = yyS[yypt-7 : yypt+1]
5✔
987
                {
10✔
988
                        yyVAL.stmt = &AlterUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
5✔
989
                }
5✔
990
        case 29:
3✔
991
                yyDollar = yyS[yypt-3 : yypt+1]
3✔
992
                {
6✔
993
                        yyVAL.stmt = &DropUserStmt{username: yyDollar[3].id}
3✔
994
                }
3✔
995
        case 30:
×
996
                yyDollar = yyS[yypt-0 : yypt+1]
×
997
                {
×
998
                        yyVAL.permission = PermissionReadWrite
×
999
                }
×
1000
        case 31:
5✔
1001
                yyDollar = yyS[yypt-1 : yypt+1]
5✔
1002
                {
10✔
1003
                        yyVAL.permission = PermissionReadOnly
5✔
1004
                }
5✔
1005
        case 32:
4✔
1006
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
1007
                {
8✔
1008
                        yyVAL.permission = PermissionReadWrite
4✔
1009
                }
4✔
1010
        case 33:
2✔
1011
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1012
                {
4✔
1013
                        yyVAL.permission = PermissionAdmin
2✔
1014
                }
2✔
1015
        case 34:
283✔
1016
                yyDollar = yyS[yypt-0 : yypt+1]
283✔
1017
                {
566✔
1018
                        yyVAL.boolean = false
283✔
1019
                }
283✔
1020
        case 35:
24✔
1021
                yyDollar = yyS[yypt-3 : yypt+1]
24✔
1022
                {
48✔
1023
                        yyVAL.boolean = true
24✔
1024
                }
24✔
1025
        case 36:
156✔
1026
                yyDollar = yyS[yypt-1 : yypt+1]
156✔
1027
                {
312✔
1028
                        yyVAL.ids = []string{yyDollar[1].id}
156✔
1029
                }
156✔
1030
        case 37:
71✔
1031
                yyDollar = yyS[yypt-3 : yypt+1]
71✔
1032
                {
142✔
1033
                        yyVAL.ids = yyDollar[2].ids
71✔
1034
                }
71✔
1035
        case 38:
1,597✔
1036
                yyDollar = yyS[yypt-9 : yypt+1]
1,597✔
1037
                {
3,194✔
1038
                        yyVAL.stmt = &UpsertIntoStmt{isInsert: true, tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows, onConflict: yyDollar[9].onConflict}
1,597✔
1039
                }
1,597✔
1040
        case 39:
203✔
1041
                yyDollar = yyS[yypt-8 : yypt+1]
203✔
1042
                {
406✔
1043
                        yyVAL.stmt = &UpsertIntoStmt{tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows}
203✔
1044
                }
203✔
1045
        case 40:
12✔
1046
                yyDollar = yyS[yypt-7 : yypt+1]
12✔
1047
                {
24✔
1048
                        yyVAL.stmt = &DeleteFromStmt{tableRef: yyDollar[3].tableRef, where: yyDollar[4].exp, indexOn: yyDollar[5].ids, limit: yyDollar[6].exp, offset: yyDollar[7].exp}
12✔
1049
                }
12✔
1050
        case 41:
20✔
1051
                yyDollar = yyS[yypt-8 : yypt+1]
20✔
1052
                {
40✔
1053
                        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}
20✔
1054
                }
20✔
1055
        case 42:
1,594✔
1056
                yyDollar = yyS[yypt-0 : yypt+1]
1,594✔
1057
                {
3,188✔
1058
                        yyVAL.onConflict = nil
1,594✔
1059
                }
1,594✔
1060
        case 43:
3✔
1061
                yyDollar = yyS[yypt-4 : yypt+1]
3✔
1062
                {
6✔
1063
                        yyVAL.onConflict = &OnConflictDo{}
3✔
1064
                }
3✔
1065
        case 44:
20✔
1066
                yyDollar = yyS[yypt-1 : yypt+1]
20✔
1067
                {
40✔
1068
                        yyVAL.updates = []*colUpdate{yyDollar[1].update}
20✔
1069
                }
20✔
1070
        case 45:
×
1071
                yyDollar = yyS[yypt-3 : yypt+1]
×
1072
                {
×
1073
                        yyVAL.updates = append(yyDollar[1].updates, yyDollar[3].update)
×
1074
                }
×
1075
        case 46:
20✔
1076
                yyDollar = yyS[yypt-3 : yypt+1]
20✔
1077
                {
40✔
1078
                        yyVAL.update = &colUpdate{col: yyDollar[1].id, op: yyDollar[2].cmpOp, val: yyDollar[3].exp}
20✔
1079
                }
20✔
1080
        case 47:
1✔
1081
                yyDollar = yyS[yypt-0 : yypt+1]
1✔
1082
                {
2✔
1083
                        yyVAL.ids = nil
1✔
1084
                }
1✔
1085
        case 48:
1,602✔
1086
                yyDollar = yyS[yypt-1 : yypt+1]
1,602✔
1087
                {
3,204✔
1088
                        yyVAL.ids = yyDollar[1].ids
1,602✔
1089
                }
1,602✔
1090
        case 49:
1,800✔
1091
                yyDollar = yyS[yypt-1 : yypt+1]
1,800✔
1092
                {
3,600✔
1093
                        yyVAL.rows = []*RowSpec{yyDollar[1].row}
1,800✔
1094
                }
1,800✔
1095
        case 50:
82✔
1096
                yyDollar = yyS[yypt-3 : yypt+1]
82✔
1097
                {
164✔
1098
                        yyVAL.rows = append(yyDollar[1].rows, yyDollar[3].row)
82✔
1099
                }
82✔
1100
        case 51:
1,882✔
1101
                yyDollar = yyS[yypt-3 : yypt+1]
1,882✔
1102
                {
3,764✔
1103
                        yyVAL.row = &RowSpec{Values: yyDollar[2].values}
1,882✔
1104
                }
1,882✔
1105
        case 52:
1,970✔
1106
                yyDollar = yyS[yypt-1 : yypt+1]
1,970✔
1107
                {
3,940✔
1108
                        yyVAL.ids = []string{yyDollar[1].id}
1,970✔
1109
                }
1,970✔
1110
        case 53:
3,973✔
1111
                yyDollar = yyS[yypt-3 : yypt+1]
3,973✔
1112
                {
7,946✔
1113
                        yyVAL.ids = append(yyDollar[1].ids, yyDollar[3].id)
3,973✔
1114
                }
3,973✔
1115
        case 54:
33✔
1116
                yyDollar = yyS[yypt-1 : yypt+1]
33✔
1117
                {
66✔
1118
                        yyVAL.cols = []*ColSelector{yyDollar[1].col}
33✔
1119
                }
33✔
1120
        case 55:
18✔
1121
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1122
                {
36✔
1123
                        yyVAL.cols = append(yyDollar[1].cols, yyDollar[3].col)
18✔
1124
                }
18✔
1125
        case 56:
126✔
1126
                yyDollar = yyS[yypt-0 : yypt+1]
126✔
1127
                {
252✔
1128
                        yyVAL.values = nil
126✔
1129
                }
126✔
1130
        case 57:
1,895✔
1131
                yyDollar = yyS[yypt-1 : yypt+1]
1,895✔
1132
                {
3,790✔
1133
                        yyVAL.values = yyDollar[1].values
1,895✔
1134
                }
1,895✔
1135
        case 58:
1,914✔
1136
                yyDollar = yyS[yypt-1 : yypt+1]
1,914✔
1137
                {
3,828✔
1138
                        yyVAL.values = []ValueExp{yyDollar[1].exp}
1,914✔
1139
                }
1,914✔
1140
        case 59:
3,996✔
1141
                yyDollar = yyS[yypt-3 : yypt+1]
3,996✔
1142
                {
7,992✔
1143
                        yyVAL.values = append(yyDollar[1].values, yyDollar[3].exp)
3,996✔
1144
                }
3,996✔
1145
        case 60:
667✔
1146
                yyDollar = yyS[yypt-1 : yypt+1]
667✔
1147
                {
1,334✔
1148
                        yyVAL.value = &Integer{val: int64(yyDollar[1].integer)}
667✔
1149
                }
667✔
1150
        case 61:
25✔
1151
                yyDollar = yyS[yypt-1 : yypt+1]
25✔
1152
                {
50✔
1153
                        yyVAL.value = &Float64{val: float64(yyDollar[1].float)}
25✔
1154
                }
25✔
1155
        case 62:
476✔
1156
                yyDollar = yyS[yypt-1 : yypt+1]
476✔
1157
                {
952✔
1158
                        yyVAL.value = &Varchar{val: yyDollar[1].str}
476✔
1159
                }
476✔
1160
        case 63:
186✔
1161
                yyDollar = yyS[yypt-1 : yypt+1]
186✔
1162
                {
372✔
1163
                        yyVAL.value = &Bool{val: yyDollar[1].boolean}
186✔
1164
                }
186✔
1165
        case 64:
94✔
1166
                yyDollar = yyS[yypt-1 : yypt+1]
94✔
1167
                {
188✔
1168
                        yyVAL.value = &Blob{val: yyDollar[1].blob}
94✔
1169
                }
94✔
1170
        case 65:
57✔
1171
                yyDollar = yyS[yypt-6 : yypt+1]
57✔
1172
                {
114✔
1173
                        yyVAL.value = &Cast{val: yyDollar[3].exp, t: yyDollar[5].sqlType}
57✔
1174
                }
57✔
1175
        case 66:
126✔
1176
                yyDollar = yyS[yypt-1 : yypt+1]
126✔
1177
                {
252✔
1178
                        yyVAL.value = yyDollar[1].value
126✔
1179
                }
126✔
1180
        case 67:
4,601✔
1181
                yyDollar = yyS[yypt-1 : yypt+1]
4,601✔
1182
                {
9,202✔
1183
                        yyVAL.value = &Param{id: yyDollar[1].id}
4,601✔
1184
                }
4,601✔
1185
        case 68:
175✔
1186
                yyDollar = yyS[yypt-1 : yypt+1]
175✔
1187
                {
350✔
1188
                        yyVAL.value = &Param{id: fmt.Sprintf("param%d", yyDollar[1].pparam), pos: yyDollar[1].pparam}
175✔
1189
                }
175✔
1190
        case 69:
54✔
1191
                yyDollar = yyS[yypt-1 : yypt+1]
54✔
1192
                {
108✔
1193
                        yyVAL.value = &NullValue{t: AnyType}
54✔
1194
                }
54✔
1195
        case 70:
132✔
1196
                yyDollar = yyS[yypt-4 : yypt+1]
132✔
1197
                {
264✔
1198
                        yyVAL.value = &FnCall{fn: yyDollar[1].id, params: yyDollar[3].values}
132✔
1199
                }
132✔
1200
        case 71:
197✔
1201
                yyDollar = yyS[yypt-1 : yypt+1]
197✔
1202
                {
394✔
1203
                        yyVAL.colsSpec = []*ColSpec{yyDollar[1].colSpec}
197✔
1204
                }
197✔
1205
        case 72:
345✔
1206
                yyDollar = yyS[yypt-3 : yypt+1]
345✔
1207
                {
690✔
1208
                        yyVAL.colsSpec = append(yyDollar[1].colsSpec, yyDollar[3].colSpec)
345✔
1209
                }
345✔
1210
        case 73:
558✔
1211
                yyDollar = yyS[yypt-5 : yypt+1]
558✔
1212
                {
1,116✔
1213
                        yyVAL.colSpec = &ColSpec{colName: yyDollar[1].id, colType: yyDollar[2].sqlType, maxLen: int(yyDollar[3].integer), notNull: yyDollar[4].boolean, autoIncrement: yyDollar[5].boolean}
558✔
1214
                }
558✔
1215
        case 74:
503✔
1216
                yyDollar = yyS[yypt-0 : yypt+1]
503✔
1217
                {
1,006✔
1218
                        yyVAL.integer = 0
503✔
1219
                }
503✔
1220
        case 75:
54✔
1221
                yyDollar = yyS[yypt-3 : yypt+1]
54✔
1222
                {
108✔
1223
                        yyVAL.integer = yyDollar[2].integer
54✔
1224
                }
54✔
1225
        case 76:
1✔
1226
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
1227
                {
2✔
1228
                        yyVAL.integer = yyDollar[2].integer
1✔
1229
                }
1✔
1230
        case 77:
480✔
1231
                yyDollar = yyS[yypt-0 : yypt+1]
480✔
1232
                {
960✔
1233
                        yyVAL.boolean = false
480✔
1234
                }
480✔
1235
        case 78:
78✔
1236
                yyDollar = yyS[yypt-1 : yypt+1]
78✔
1237
                {
156✔
1238
                        yyVAL.boolean = true
78✔
1239
                }
78✔
1240
        case 79:
548✔
1241
                yyDollar = yyS[yypt-0 : yypt+1]
548✔
1242
                {
1,096✔
1243
                        yyVAL.boolean = false
548✔
1244
                }
548✔
1245
        case 80:
1✔
1246
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1247
                {
2✔
1248
                        yyVAL.boolean = false
1✔
1249
                }
1✔
1250
        case 81:
9✔
1251
                yyDollar = yyS[yypt-2 : yypt+1]
9✔
1252
                {
18✔
1253
                        yyVAL.boolean = true
9✔
1254
                }
9✔
1255
        case 82:
507✔
1256
                yyDollar = yyS[yypt-1 : yypt+1]
507✔
1257
                {
1,014✔
1258
                        yyVAL.stmt = yyDollar[1].stmt
507✔
1259
                }
507✔
1260
        case 83:
11✔
1261
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1262
                {
22✔
1263
                        yyVAL.stmt = &UnionStmt{
11✔
1264
                                distinct: yyDollar[3].distinct,
11✔
1265
                                left:     yyDollar[1].stmt.(DataSource),
11✔
1266
                                right:    yyDollar[4].stmt.(DataSource),
11✔
1267
                        }
11✔
1268
                }
11✔
1269
        case 84:
1✔
1270
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1271
                {
2✔
1272
                        yyVAL.stmt = &SelectStmt{
1✔
1273
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}},
1✔
1274
                        }
1✔
1275
                }
1✔
1276
        case 85:
1✔
1277
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1278
                {
2✔
1279
                        yyVAL.stmt = &SelectStmt{
1✔
1280
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}},
1✔
1281
                        }
1✔
1282
                }
1✔
1283
        case 86:
×
1284
                yyDollar = yyS[yypt-3 : yypt+1]
×
1285
                {
×
1286
                        yyVAL.stmt = &SelectStmt{
×
1287
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}},
×
1288
                        }
×
1289
                }
×
1290
        case 87:
6✔
1291
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1292
                {
12✔
1293
                        yyVAL.stmt = &SelectStmt{
6✔
1294
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}},
6✔
1295
                        }
6✔
1296
                }
6✔
1297
        case 88:
519✔
1298
                yyDollar = yyS[yypt-13 : yypt+1]
519✔
1299
                {
1,038✔
1300
                        yyVAL.stmt = &SelectStmt{
519✔
1301
                                distinct:  yyDollar[2].distinct,
519✔
1302
                                selectors: yyDollar[3].sels,
519✔
1303
                                ds:        yyDollar[5].ds,
519✔
1304
                                indexOn:   yyDollar[6].ids,
519✔
1305
                                joins:     yyDollar[7].joins,
519✔
1306
                                where:     yyDollar[8].exp,
519✔
1307
                                groupBy:   yyDollar[9].cols,
519✔
1308
                                having:    yyDollar[10].exp,
519✔
1309
                                orderBy:   yyDollar[11].ordcols,
519✔
1310
                                limit:     yyDollar[12].exp,
519✔
1311
                                offset:    yyDollar[13].exp,
519✔
1312
                        }
519✔
1313
                }
519✔
1314
        case 89:
11✔
1315
                yyDollar = yyS[yypt-0 : yypt+1]
11✔
1316
                {
22✔
1317
                        yyVAL.distinct = true
11✔
1318
                }
11✔
1319
        case 90:
1✔
1320
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1321
                {
2✔
1322
                        yyVAL.distinct = false
1✔
1323
                }
1✔
1324
        case 91:
513✔
1325
                yyDollar = yyS[yypt-0 : yypt+1]
513✔
1326
                {
1,026✔
1327
                        yyVAL.distinct = false
513✔
1328
                }
513✔
1329
        case 92:
8✔
1330
                yyDollar = yyS[yypt-1 : yypt+1]
8✔
1331
                {
16✔
1332
                        yyVAL.distinct = true
8✔
1333
                }
8✔
1334
        case 93:
140✔
1335
                yyDollar = yyS[yypt-1 : yypt+1]
140✔
1336
                {
280✔
1337
                        yyVAL.sels = nil
140✔
1338
                }
140✔
1339
        case 94:
381✔
1340
                yyDollar = yyS[yypt-1 : yypt+1]
381✔
1341
                {
762✔
1342
                        yyVAL.sels = yyDollar[1].sels
381✔
1343
                }
381✔
1344
        case 95:
381✔
1345
                yyDollar = yyS[yypt-2 : yypt+1]
381✔
1346
                {
762✔
1347
                        yyDollar[1].sel.setAlias(yyDollar[2].id)
381✔
1348
                        yyVAL.sels = []Selector{yyDollar[1].sel}
381✔
1349
                }
381✔
1350
        case 96:
423✔
1351
                yyDollar = yyS[yypt-4 : yypt+1]
423✔
1352
                {
846✔
1353
                        yyDollar[3].sel.setAlias(yyDollar[4].id)
423✔
1354
                        yyVAL.sels = append(yyDollar[1].sels, yyDollar[3].sel)
423✔
1355
                }
423✔
1356
        case 97:
1,197✔
1357
                yyDollar = yyS[yypt-1 : yypt+1]
1,197✔
1358
                {
2,394✔
1359
                        yyVAL.sel = yyDollar[1].col
1,197✔
1360
                }
1,197✔
1361
        case 98:
20✔
1362
                yyDollar = yyS[yypt-2 : yypt+1]
20✔
1363
                {
40✔
1364
                        yyVAL.sel = &JSONSelector{ColSelector: yyDollar[1].col, fields: yyDollar[2].jsonFields}
20✔
1365
                }
20✔
1366
        case 99:
66✔
1367
                yyDollar = yyS[yypt-4 : yypt+1]
66✔
1368
                {
132✔
1369
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, col: "*"}
66✔
1370
                }
66✔
1371
        case 100:
67✔
1372
                yyDollar = yyS[yypt-4 : yypt+1]
67✔
1373
                {
134✔
1374
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, table: yyDollar[3].col.table, col: yyDollar[3].col.col}
67✔
1375
                }
67✔
1376
        case 101:
20✔
1377
                yyDollar = yyS[yypt-2 : yypt+1]
20✔
1378
                {
40✔
1379
                        yyVAL.jsonFields = []string{yyDollar[2].str}
20✔
1380
                }
20✔
1381
        case 102:
19✔
1382
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
1383
                {
38✔
1384
                        yyVAL.jsonFields = append(yyVAL.jsonFields, yyDollar[3].str)
19✔
1385
                }
19✔
1386
        case 103:
1,235✔
1387
                yyDollar = yyS[yypt-1 : yypt+1]
1,235✔
1388
                {
2,470✔
1389
                        yyVAL.col = &ColSelector{col: yyDollar[1].id}
1,235✔
1390
                }
1,235✔
1391
        case 104:
100✔
1392
                yyDollar = yyS[yypt-3 : yypt+1]
100✔
1393
                {
200✔
1394
                        yyVAL.col = &ColSelector{table: yyDollar[1].id, col: yyDollar[3].id}
100✔
1395
                }
100✔
1396
        case 105:
510✔
1397
                yyDollar = yyS[yypt-3 : yypt+1]
510✔
1398
                {
1,020✔
1399
                        yyDollar[1].tableRef.period = yyDollar[2].period
510✔
1400
                        yyDollar[1].tableRef.as = yyDollar[3].id
510✔
1401
                        yyVAL.ds = yyDollar[1].tableRef
510✔
1402
                }
510✔
1403
        case 106:
11✔
1404
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1405
                {
22✔
1406
                        yyDollar[2].stmt.(*SelectStmt).as = yyDollar[4].id
11✔
1407
                        yyVAL.ds = yyDollar[2].stmt.(DataSource)
11✔
1408
                }
11✔
1409
        case 107:
4✔
1410
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1411
                {
8✔
1412
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}, as: yyDollar[4].id}
4✔
1413
                }
4✔
1414
        case 108:
4✔
1415
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1416
                {
8✔
1417
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}, as: yyDollar[4].id}
4✔
1418
                }
4✔
NEW
1419
        case 109:
×
1420
                yyDollar = yyS[yypt-4 : yypt+1]
×
1421
                {
×
1422
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}}
×
1423
                }
×
1424
        case 110:
1✔
1425
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1426
                {
2✔
1427
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}, as: yyDollar[4].id}
1✔
1428
                }
1✔
1429
        case 111:
6✔
1430
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1431
                {
12✔
1432
                        yyVAL.ds = &FnDataSourceStmt{fnCall: yyDollar[1].value.(*FnCall), as: yyDollar[2].id}
6✔
1433
                }
6✔
1434
        case 112:
2✔
1435
                yyDollar = yyS[yypt-6 : yypt+1]
2✔
1436
                {
4✔
1437
                        yyVAL.ds = &tableRef{table: yyDollar[4].id, history: true, as: yyDollar[6].id}
2✔
1438
                }
2✔
1439
        case 113:
2,357✔
1440
                yyDollar = yyS[yypt-1 : yypt+1]
2,357✔
1441
                {
4,714✔
1442
                        yyVAL.tableRef = &tableRef{table: yyDollar[1].id}
2,357✔
1443
                }
2,357✔
1444
        case 114:
519✔
1445
                yyDollar = yyS[yypt-2 : yypt+1]
519✔
1446
                {
1,038✔
1447
                        yyVAL.period = period{start: yyDollar[1].openPeriod, end: yyDollar[2].openPeriod}
519✔
1448
                }
519✔
1449
        case 115:
450✔
1450
                yyDollar = yyS[yypt-0 : yypt+1]
450✔
1451
                {
900✔
1452
                        yyVAL.openPeriod = nil
450✔
1453
                }
450✔
1454
        case 116:
44✔
1455
                yyDollar = yyS[yypt-2 : yypt+1]
44✔
1456
                {
88✔
1457
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
44✔
1458
                }
44✔
1459
        case 117:
25✔
1460
                yyDollar = yyS[yypt-2 : yypt+1]
25✔
1461
                {
50✔
1462
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
25✔
1463
                }
25✔
1464
        case 118:
475✔
1465
                yyDollar = yyS[yypt-0 : yypt+1]
475✔
1466
                {
950✔
1467
                        yyVAL.openPeriod = nil
475✔
1468
                }
475✔
1469
        case 119:
33✔
1470
                yyDollar = yyS[yypt-2 : yypt+1]
33✔
1471
                {
66✔
1472
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
33✔
1473
                }
33✔
1474
        case 120:
11✔
1475
                yyDollar = yyS[yypt-2 : yypt+1]
11✔
1476
                {
22✔
1477
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
11✔
1478
                }
11✔
1479
        case 121:
56✔
1480
                yyDollar = yyS[yypt-2 : yypt+1]
56✔
1481
                {
112✔
1482
                        yyVAL.periodInstant = periodInstant{instantType: txInstant, exp: yyDollar[2].exp}
56✔
1483
                }
56✔
1484
        case 122:
57✔
1485
                yyDollar = yyS[yypt-1 : yypt+1]
57✔
1486
                {
114✔
1487
                        yyVAL.periodInstant = periodInstant{instantType: timeInstant, exp: yyDollar[1].exp}
57✔
1488
                }
57✔
1489
        case 123:
505✔
1490
                yyDollar = yyS[yypt-0 : yypt+1]
505✔
1491
                {
1,010✔
1492
                        yyVAL.joins = nil
505✔
1493
                }
505✔
1494
        case 124:
14✔
1495
                yyDollar = yyS[yypt-1 : yypt+1]
14✔
1496
                {
28✔
1497
                        yyVAL.joins = yyDollar[1].joins
14✔
1498
                }
14✔
1499
        case 125:
14✔
1500
                yyDollar = yyS[yypt-1 : yypt+1]
14✔
1501
                {
28✔
1502
                        yyVAL.joins = []*JoinSpec{yyDollar[1].join}
14✔
1503
                }
14✔
1504
        case 126:
5✔
1505
                yyDollar = yyS[yypt-2 : yypt+1]
5✔
1506
                {
10✔
1507
                        yyVAL.joins = append([]*JoinSpec{yyDollar[1].join}, yyDollar[2].joins...)
5✔
1508
                }
5✔
1509
        case 127:
19✔
1510
                yyDollar = yyS[yypt-6 : yypt+1]
19✔
1511
                {
38✔
1512
                        yyVAL.join = &JoinSpec{joinType: yyDollar[1].joinType, ds: yyDollar[3].ds, indexOn: yyDollar[4].ids, cond: yyDollar[6].exp}
19✔
1513
                }
19✔
1514
        case 128:
2✔
1515
                yyDollar = yyS[yypt-0 : yypt+1]
2✔
1516
                {
4✔
1517
                        yyVAL.joinType = InnerJoin
2✔
1518
                }
2✔
1519
        case 129:
17✔
1520
                yyDollar = yyS[yypt-1 : yypt+1]
17✔
1521
                {
34✔
1522
                        yyVAL.joinType = yyDollar[1].joinType
17✔
1523
                }
17✔
1524
        case 130:
337✔
1525
                yyDollar = yyS[yypt-0 : yypt+1]
337✔
1526
                {
674✔
1527
                        yyVAL.exp = nil
337✔
1528
                }
337✔
1529
        case 131:
214✔
1530
                yyDollar = yyS[yypt-2 : yypt+1]
214✔
1531
                {
428✔
1532
                        yyVAL.exp = yyDollar[2].exp
214✔
1533
                }
214✔
1534
        case 132:
486✔
1535
                yyDollar = yyS[yypt-0 : yypt+1]
486✔
1536
                {
972✔
1537
                        yyVAL.cols = nil
486✔
1538
                }
486✔
1539
        case 133:
33✔
1540
                yyDollar = yyS[yypt-3 : yypt+1]
33✔
1541
                {
66✔
1542
                        yyVAL.cols = yyDollar[3].cols
33✔
1543
                }
33✔
1544
        case 134:
512✔
1545
                yyDollar = yyS[yypt-0 : yypt+1]
512✔
1546
                {
1,024✔
1547
                        yyVAL.exp = nil
512✔
1548
                }
512✔
1549
        case 135:
7✔
1550
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1551
                {
14✔
1552
                        yyVAL.exp = yyDollar[2].exp
7✔
1553
                }
7✔
1554
        case 136:
512✔
1555
                yyDollar = yyS[yypt-0 : yypt+1]
512✔
1556
                {
1,024✔
1557
                        yyVAL.exp = nil
512✔
1558
                }
512✔
1559
        case 137:
39✔
1560
                yyDollar = yyS[yypt-2 : yypt+1]
39✔
1561
                {
78✔
1562
                        yyVAL.exp = yyDollar[2].exp
39✔
1563
                }
39✔
1564
        case 138:
547✔
1565
                yyDollar = yyS[yypt-0 : yypt+1]
547✔
1566
                {
1,094✔
1567
                        yyVAL.exp = nil
547✔
1568
                }
547✔
1569
        case 139:
4✔
1570
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
1571
                {
8✔
1572
                        yyVAL.exp = yyDollar[2].exp
4✔
1573
                }
4✔
1574
        case 140:
380✔
1575
                yyDollar = yyS[yypt-0 : yypt+1]
380✔
1576
                {
760✔
1577
                        yyVAL.ordcols = nil
380✔
1578
                }
380✔
1579
        case 141:
139✔
1580
                yyDollar = yyS[yypt-3 : yypt+1]
139✔
1581
                {
278✔
1582
                        yyVAL.ordcols = yyDollar[3].ordcols
139✔
1583
                }
139✔
1584
        case 142:
540✔
1585
                yyDollar = yyS[yypt-0 : yypt+1]
540✔
1586
                {
1,080✔
1587
                        yyVAL.ids = nil
540✔
1588
                }
540✔
1589
        case 143:
30✔
1590
                yyDollar = yyS[yypt-4 : yypt+1]
30✔
1591
                {
60✔
1592
                        yyVAL.ids = yyDollar[4].ids
30✔
1593
                }
30✔
1594
        case 144:
139✔
1595
                yyDollar = yyS[yypt-2 : yypt+1]
139✔
1596
                {
278✔
1597
                        yyVAL.ordcols = []*OrdCol{{sel: yyDollar[1].sel, descOrder: yyDollar[2].opt_ord}}
139✔
1598
                }
139✔
1599
        case 145:
27✔
1600
                yyDollar = yyS[yypt-4 : yypt+1]
27✔
1601
                {
54✔
1602
                        yyVAL.ordcols = append(yyDollar[1].ordcols, &OrdCol{sel: yyDollar[3].sel, descOrder: yyDollar[4].opt_ord})
27✔
1603
                }
27✔
1604
        case 146:
54✔
1605
                yyDollar = yyS[yypt-0 : yypt+1]
54✔
1606
                {
108✔
1607
                        yyVAL.opt_ord = false
54✔
1608
                }
54✔
1609
        case 147:
27✔
1610
                yyDollar = yyS[yypt-1 : yypt+1]
27✔
1611
                {
54✔
1612
                        yyVAL.opt_ord = false
27✔
1613
                }
27✔
1614
        case 148:
85✔
1615
                yyDollar = yyS[yypt-1 : yypt+1]
85✔
1616
                {
170✔
1617
                        yyVAL.opt_ord = true
85✔
1618
                }
85✔
1619
        case 149:
1,252✔
1620
                yyDollar = yyS[yypt-0 : yypt+1]
1,252✔
1621
                {
2,504✔
1622
                        yyVAL.id = ""
1,252✔
1623
                }
1,252✔
1624
        case 150:
21✔
1625
                yyDollar = yyS[yypt-1 : yypt+1]
21✔
1626
                {
42✔
1627
                        yyVAL.id = yyDollar[1].id
21✔
1628
                }
21✔
1629
        case 151:
69✔
1630
                yyDollar = yyS[yypt-2 : yypt+1]
69✔
1631
                {
138✔
1632
                        yyVAL.id = yyDollar[2].id
69✔
1633
                }
69✔
1634
        case 152:
6,838✔
1635
                yyDollar = yyS[yypt-1 : yypt+1]
6,838✔
1636
                {
13,676✔
1637
                        yyVAL.exp = yyDollar[1].exp
6,838✔
1638
                }
6,838✔
1639
        case 153:
452✔
1640
                yyDollar = yyS[yypt-1 : yypt+1]
452✔
1641
                {
904✔
1642
                        yyVAL.exp = yyDollar[1].binExp
452✔
1643
                }
452✔
1644
        case 154:
13✔
1645
                yyDollar = yyS[yypt-2 : yypt+1]
13✔
1646
                {
26✔
1647
                        yyVAL.exp = &NotBoolExp{exp: yyDollar[2].exp}
13✔
1648
                }
13✔
1649
        case 155:
3✔
1650
                yyDollar = yyS[yypt-2 : yypt+1]
3✔
1651
                {
6✔
1652
                        yyVAL.exp = &NumExp{left: &Integer{val: 0}, op: SUBSOP, right: yyDollar[2].exp}
3✔
1653
                }
3✔
1654
        case 156:
9✔
1655
                yyDollar = yyS[yypt-4 : yypt+1]
9✔
1656
                {
18✔
1657
                        yyVAL.exp = &LikeBoolExp{val: yyDollar[1].exp, notLike: yyDollar[2].boolean, pattern: yyDollar[4].exp}
9✔
1658
                }
9✔
1659
        case 157:
1✔
1660
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1661
                {
2✔
1662
                        yyVAL.exp = &ExistsBoolExp{q: (yyDollar[3].stmt).(DataSource)}
1✔
1663
                }
1✔
NEW
1664
        case 158:
×
1665
                yyDollar = yyS[yypt-6 : yypt+1]
×
1666
                {
×
1667
                        yyVAL.exp = &InSubQueryExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, q: yyDollar[5].stmt.(*SelectStmt)}
×
1668
                }
×
1669
        case 159:
12✔
1670
                yyDollar = yyS[yypt-6 : yypt+1]
12✔
1671
                {
24✔
1672
                        yyVAL.exp = &InListExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, values: yyDollar[5].values}
12✔
1673
                }
12✔
1674
        case 160:
380✔
1675
                yyDollar = yyS[yypt-1 : yypt+1]
380✔
1676
                {
760✔
1677
                        yyVAL.exp = yyDollar[1].sel
380✔
1678
                }
380✔
1679
        case 161:
6,461✔
1680
                yyDollar = yyS[yypt-1 : yypt+1]
6,461✔
1681
                {
12,922✔
1682
                        yyVAL.exp = yyDollar[1].value
6,461✔
1683
                }
6,461✔
1684
        case 162:
18✔
1685
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1686
                {
36✔
1687
                        yyVAL.exp = yyDollar[2].exp
18✔
1688
                }
18✔
1689
        case 163:
2✔
1690
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1691
                {
4✔
1692
                        yyVAL.exp = &Cast{val: yyDollar[1].exp, t: yyDollar[3].sqlType}
2✔
1693
                }
2✔
1694
        case 164:
20✔
1695
                yyDollar = yyS[yypt-0 : yypt+1]
20✔
1696
                {
40✔
1697
                        yyVAL.boolean = false
20✔
1698
                }
20✔
1699
        case 165:
1✔
1700
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1701
                {
2✔
1702
                        yyVAL.boolean = true
1✔
1703
                }
1✔
1704
        case 166:
11✔
1705
                yyDollar = yyS[yypt-3 : yypt+1]
11✔
1706
                {
22✔
1707
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: ADDOP, right: yyDollar[3].exp}
11✔
1708
                }
11✔
1709
        case 167:
13✔
1710
                yyDollar = yyS[yypt-3 : yypt+1]
13✔
1711
                {
26✔
1712
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: SUBSOP, right: yyDollar[3].exp}
13✔
1713
                }
13✔
1714
        case 168:
4✔
1715
                yyDollar = yyS[yypt-3 : yypt+1]
4✔
1716
                {
8✔
1717
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: DIVOP, right: yyDollar[3].exp}
4✔
1718
                }
4✔
1719
        case 169:
2✔
1720
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1721
                {
4✔
1722
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: MULTOP, right: yyDollar[3].exp}
2✔
1723
                }
2✔
1724
        case 170:
120✔
1725
                yyDollar = yyS[yypt-3 : yypt+1]
120✔
1726
                {
240✔
1727
                        yyVAL.binExp = &BinBoolExp{left: yyDollar[1].exp, op: yyDollar[2].logicOp, right: yyDollar[3].exp}
120✔
1728
                }
120✔
1729
        case 171:
300✔
1730
                yyDollar = yyS[yypt-3 : yypt+1]
300✔
1731
                {
600✔
1732
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: yyDollar[2].cmpOp, right: yyDollar[3].exp}
300✔
1733
                }
300✔
1734
        case 172:
1✔
1735
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
1736
                {
2✔
1737
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: EQ, right: &NullValue{t: AnyType}}
1✔
1738
                }
1✔
1739
        case 173:
1✔
1740
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1741
                {
2✔
1742
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: NE, right: &NullValue{t: AnyType}}
1✔
1743
                }
1✔
1744
        }
1745
        goto yystack /* stack new state and value */
75,891✔
1746
}
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