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

codenotary / immudb / 6850968753

13 Nov 2023 01:58PM UTC coverage: 89.235% (-0.3%) from 89.556%
6850968753

push

gh-ci

jeroiraz
feat(embedded/sql): show table stmt

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

82 of 169 new or added lines in 2 files covered. (48.52%)

643 existing lines in 10 files now uncovered.

33838 of 37920 relevant lines covered (89.24%)

144254.33 hits per line

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

91.79
/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,733✔
9
        l.(*lexer).result = stmts
1,733✔
10
}
1,733✔
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
        permission    Permission
57
}
58

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

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

256
var yyStatenames = [...]string{}
257

258
const yyEofCode = 1
259
const yyErrCode = 2
260
const yyInitialStackSize = 16
261

262
var yyExca = [...]int16{
263
        -1, 1,
264
        1, -1,
265
        -2, 0,
266
        -1, 93,
267
        65, 161,
268
        68, 161,
269
        -2, 149,
270
        -1, 227,
271
        51, 125,
272
        -2, 120,
273
        -1, 267,
274
        51, 125,
275
        -2, 122,
276
}
277

278
const yyPrivate = 57344
279

280
const yyLast = 447
281

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

330
var yyPact = [...]int16{
331
        210, -1000, -1000, 26, -1000, -1000, -1000, 335, -1000, -1000,
332
        372, 204, 384, 379, 329, 328, 301, 174, 256, 267,
333
        303, -1000, 210, -1000, 242, 242, 242, 361, 189, -1000,
334
        188, 396, 186, 194, 181, 180, 177, 174, 174, 174,
335
        316, -1000, 252, -1000, -1000, 173, -1000, 94, -1000, -1000,
336
        168, 236, 162, 358, 242, 397, -1000, -1000, 375, 31,
337
        31, -1000, 160, 84, -1000, 371, 392, 24, 22, 292,
338
        146, 240, -1000, -1000, 300, -1000, 79, 141, -1000, 15,
339
        68, -1000, 232, 13, 159, 356, 388, -1000, 31, 31,
340
        -1000, 234, 104, 216, -1000, 234, 234, 11, -1000, -1000,
341
        234, -1000, -1000, -1000, -1000, -1000, 8, -1000, -1000, -1000,
342
        -1000, -15, -1000, 7, 158, 344, 342, 343, 380, 138,
343
        138, 402, 234, 81, -1000, 192, -1000, 29, 113, -1000,
344
        -1000, 157, 73, 155, -1000, 151, 0, 152, 101, -1000,
345
        -1000, 104, 234, 234, 234, 234, 234, 234, 231, 239,
346
        129, -1000, 67, 58, 240, -13, 234, 234, 138, -1000,
347
        151, 149, 148, 147, 96, -21, 66, -1000, -60, 281,
348
        360, 104, 402, 146, 234, 402, 396, 279, -1, -6,
349
        -7, -9, 141, -10, 141, -1000, -22, -23, -1000, 49,
350
        -1000, 128, 138, -11, 403, 58, 58, 228, 228, 67,
351
        112, -1000, 220, 234, -14, -1000, -28, -1000, 71, -29,
352
        46, 104, -62, -1000, -1000, 347, -1000, 403, 326, 144,
353
        325, 268, 234, 355, 281, -1000, 104, 195, 141, -34,
354
        368, -41, -43, 143, -48, -1000, -1000, -1000, -1000, 178,
355
        -75, -63, 138, -1000, -1000, -1000, -1000, -1000, 67, -24,
356
        -1000, 110, -1000, 234, -1000, 142, -1000, -25, -1000, -25,
357
        -1000, 234, 104, -26, 268, 292, -1000, 195, 297, -1000,
358
        -1000, 141, 139, 141, 141, -52, 141, 338, -1000, 222,
359
        107, 106, -1000, -64, -55, -65, -56, 104, -1000, 124,
360
        -1000, 234, 45, 104, -1000, -1000, 138, -1000, 286, -1000,
361
        29, -1000, -57, -1000, -1000, -1000, -1000, -26, 226, -1000,
362
        214, -80, -59, -1000, -1000, -1000, -1000, -1000, -25, 314,
363
        -66, -67, 294, 284, 402, 141, -69, -1000, -1000, -1000,
364
        -1000, -1000, -1000, 312, -1000, -1000, 270, 234, 136, 352,
365
        -1000, -1000, 310, 281, 280, 104, 37, -1000, 234, -1000,
366
        268, 136, 136, 104, -1000, 35, 273, -1000, 136, -1000,
367
        -1000, -1000, 273, -1000,
368
}
369

370
var yyPgo = [...]int16{
371
        0, 446, 388, 445, 444, 443, 15, 442, 441, 19,
372
        12, 8, 440, 439, 13, 7, 16, 11, 438, 9,
373
        22, 437, 436, 2, 435, 434, 10, 365, 20, 433,
374
        432, 178, 431, 14, 430, 429, 0, 17, 428, 427,
375
        426, 425, 3, 5, 424, 4, 423, 422, 1, 6,
376
        336, 421, 420, 419, 21, 418, 417, 18, 410,
377
}
378

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

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

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

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

501
var yyTok1 = [...]int8{
502
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
503
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
504
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
505
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
506
        100, 101, 96, 94, 93, 95, 98, 97, 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
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
511
        3, 102, 3, 103,
512
}
513

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

527
var yyTok3 = [...]int8{
528
        0,
529
}
530

531
var yyErrorMessages = [...]struct {
532
        state int
533
        token int
534
        msg   string
535
}{}
536

537
/*        parser for yacc output        */
538

539
var (
540
        yyDebug        = 0
541
        yyErrorVerbose = false
542
)
543

544
type yyLexer interface {
545
        Lex(lval *yySymType) int
546
        Error(s string)
547
}
548

549
type yyParser interface {
550
        Parse(yyLexer) int
551
        Lookahead() int
552
}
553

554
type yyParserImpl struct {
555
        lval  yySymType
556
        stack [yyInitialStackSize]yySymType
557
        char  int
558
}
559

UNCOV
560
func (p *yyParserImpl) Lookahead() int {
×
UNCOV
561
        return p.char
×
UNCOV
562
}
×
563

564
func yyNewParser() yyParser {
1,770✔
565
        return &yyParserImpl{}
1,770✔
566
}
1,770✔
567

568
const yyFlag = -1000
569

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

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

588
func yyErrorMessage(state, lookAhead int) string {
39✔
589
        const TOKSTART = 4
39✔
590

39✔
591
        if !yyErrorVerbose {
42✔
592
                return "syntax error"
3✔
593
        }
3✔
594

595
        for _, e := range yyErrorMessages {
36✔
UNCOV
596
                if e.state == state && e.token == lookAhead {
×
UNCOV
597
                        return "syntax error: " + e.msg
×
UNCOV
598
                }
×
599
        }
600

601
        res := "syntax error: unexpected " + yyTokname(lookAhead)
36✔
602

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

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

617
        if yyDef[state] == -2 {
20✔
618
                i := 0
2✔
619
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
UNCOV
620
                        i += 2
×
UNCOV
621
                }
×
622

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

635
                // If the default action is to accept or reduce, give up.
636
                if yyExca[i+1] != 0 {
2✔
UNCOV
637
                        return res
×
UNCOV
638
                }
×
639
        }
640

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

652
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
24,690✔
653
        token = 0
24,690✔
654
        char = lex.Lex(lval)
24,690✔
655
        if char <= 0 {
26,423✔
656
                token = int(yyTok1[0])
1,733✔
657
                goto out
1,733✔
658
        }
659
        if char < len(yyTok1) {
30,508✔
660
                token = int(yyTok1[char])
7,551✔
661
                goto out
7,551✔
662
        }
663
        if char >= yyPrivate {
30,812✔
664
                if char < yyPrivate+len(yyTok2) {
30,812✔
665
                        token = int(yyTok2[char-yyPrivate])
15,406✔
666
                        goto out
15,406✔
667
                }
668
        }
UNCOV
669
        for i := 0; i < len(yyTok3); i += 2 {
×
UNCOV
670
                token = int(yyTok3[i+0])
×
UNCOV
671
                if token == char {
×
UNCOV
672
                        token = int(yyTok3[i+1])
×
UNCOV
673
                        goto out
×
674
                }
675
        }
676

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

687
func yyParse(yylex yyLexer) int {
1,770✔
688
        return yyNewParser().Parse(yylex)
1,770✔
689
}
1,770✔
690

691
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
1,770✔
692
        var yyn int
1,770✔
693
        var yyVAL yySymType
1,770✔
694
        var yyDollar []yySymType
1,770✔
695
        _ = yyDollar // silence set and not used
1,770✔
696
        yyS := yyrcvr.stack[:]
1,770✔
697

1,770✔
698
        Nerrs := 0   /* number of errors */
1,770✔
699
        Errflag := 0 /* error recovery flag */
1,770✔
700
        yystate := 0
1,770✔
701
        yyrcvr.char = -1
1,770✔
702
        yytoken := -1 // yyrcvr.char translated into internal numbering
1,770✔
703
        defer func() {
3,540✔
704
                // Make sure we report no lookahead when not parsing.
1,770✔
705
                yystate = -1
1,770✔
706
                yyrcvr.char = -1
1,770✔
707
                yytoken = -1
1,770✔
708
        }()
1,770✔
709
        yyp := -1
1,770✔
710
        goto yystack
1,770✔
711

712
ret0:
713
        return 0
1,731✔
714

1,731✔
715
ret1:
1,731✔
716
        return 1
39✔
717

39✔
718
yystack:
39✔
719
        /* put a state and value onto the stack */
720
        if yyDebug >= 4 {
65,315✔
UNCOV
721
                __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
×
UNCOV
722
        }
×
723

724
        yyp++
65,315✔
725
        if yyp >= len(yyS) {
65,356✔
726
                nyys := make([]yySymType, len(yyS)*2)
41✔
727
                copy(nyys, yyS)
41✔
728
                yyS = nyys
41✔
729
        }
41✔
730
        yyS[yyp] = yyVAL
65,315✔
731
        yyS[yyp].yys = yystate
65,315✔
732

65,315✔
733
yynewstate:
65,315✔
734
        yyn = int(yyPact[yystate])
65,315✔
735
        if yyn <= yyFlag {
88,577✔
736
                goto yydefault /* simple state */
23,262✔
737
        }
738
        if yyrcvr.char < 0 {
66,743✔
739
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
24,690✔
740
        }
24,690✔
741
        yyn += yytoken
42,053✔
742
        if yyn < 0 || yyn >= yyLast {
42,801✔
743
                goto yydefault
748✔
744
        }
745
        yyn = int(yyAct[yyn])
41,305✔
746
        if int(yyChk[yyn]) == yytoken { /* valid shift */
64,225✔
747
                yyrcvr.char = -1
22,920✔
748
                yytoken = -1
22,920✔
749
                yyVAL = yyrcvr.lval
22,920✔
750
                yystate = yyn
22,920✔
751
                if Errflag > 0 {
22,920✔
UNCOV
752
                        Errflag--
×
UNCOV
753
                }
×
754
                goto yystack
22,920✔
755
        }
756

757
yydefault:
758
        /* default state action */
759
        yyn = int(yyDef[yystate])
42,395✔
760
        if yyn == -2 {
47,243✔
761
                if yyrcvr.char < 0 {
4,848✔
UNCOV
762
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
UNCOV
763
                }
×
764

765
                /* look through exception table */
766
                xi := 0
4,848✔
767
                for {
20,876✔
768
                        if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
20,876✔
769
                                break
4,848✔
770
                        }
771
                        xi += 2
11,180✔
772
                }
773
                for xi += 2; ; xi += 2 {
15,451✔
774
                        yyn = int(yyExca[xi+0])
10,603✔
775
                        if yyn < 0 || yyn == yytoken {
15,451✔
776
                                break
4,848✔
777
                        }
778
                }
779
                yyn = int(yyExca[xi+1])
4,848✔
780
                if yyn < 0 {
6,579✔
781
                        goto ret0
1,731✔
782
                }
783
        }
784
        if yyn == 0 {
40,703✔
785
                /* error ... attempt to resume parsing */
39✔
786
                switch Errflag {
39✔
787
                case 0: /* brand new error */
39✔
788
                        yylex.Error(yyErrorMessage(yystate, yytoken))
39✔
789
                        Nerrs++
39✔
790
                        if yyDebug >= 1 {
39✔
791
                                __yyfmt__.Printf("%s", yyStatname(yystate))
×
792
                                __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
×
793
                        }
×
794
                        fallthrough
39✔
795

796
                case 1, 2: /* incompletely recovered error ... try again */
39✔
797
                        Errflag = 3
39✔
798

39✔
799
                        /* find a state where "error" is a legal shift action */
39✔
800
                        for yyp >= 0 {
248✔
801
                                yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
209✔
802
                                if yyn >= 0 && yyn < yyLast {
381✔
803
                                        yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
172✔
804
                                        if int(yyChk[yystate]) == yyErrCode {
172✔
UNCOV
805
                                                goto yystack
×
806
                                        }
807
                                }
808

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

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

831
        /* reduction by production yyn */
832
        if yyDebug >= 2 {
40,625✔
UNCOV
833
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
UNCOV
834
        }
×
835

836
        yynt := yyn
40,625✔
837
        yypt := yyp
40,625✔
838
        _ = yypt // guard against "declared and not used"
40,625✔
839

40,625✔
840
        yyp -= int(yyR2[yyn])
40,625✔
841
        // yyp is now the index of $0. Perform the default action. Iff the
40,625✔
842
        // reduced production is ε, $1 is possibly out of range.
40,625✔
843
        if yyp+1 >= len(yyS) {
40,644✔
844
                nyys := make([]yySymType, len(yyS)*2)
19✔
845
                copy(nyys, yyS)
19✔
846
                yyS = nyys
19✔
847
        }
19✔
848
        yyVAL = yyS[yyp+1]
40,625✔
849

40,625✔
850
        /* consult goto table to find next state */
40,625✔
851
        yyn = int(yyR1[yyn])
40,625✔
852
        yyg := int(yyPgo[yyn])
40,625✔
853
        yyj := yyg + yyS[yyp].yys + 1
40,625✔
854

40,625✔
855
        if yyj >= yyLast {
56,067✔
856
                yystate = int(yyAct[yyg])
15,442✔
857
        } else {
40,625✔
858
                yystate = int(yyAct[yyj])
25,183✔
859
                if int(yyChk[yystate]) != -yyn {
39,515✔
860
                        yystate = int(yyAct[yyg])
14,332✔
861
                }
14,332✔
862
        }
863
        // dummy call; replaced with literal code
864
        switch yynt {
40,625✔
865

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