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

codenotary / immudb / 10077344772

24 Jul 2024 01:13PM UTC coverage: 89.416% (-0.09%) from 89.503%
10077344772

push

gh-ci

ostafen
Implement SQL permissions

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

643 of 729 new or added lines in 6 files covered. (88.2%)

9 existing lines in 4 files now uncovered.

35780 of 40015 relevant lines covered (89.42%)

158539.9 hits per line

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

92.53
/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) {
3,021✔
9
        l.(*lexer).result = stmts
3,021✔
10
}
3,021✔
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
        checks        []CheckConstraint
47
        exp           ValueExp
48
        binExp        ValueExp
49
        err           error
50
        ordcols       []*OrdCol
51
        opt_ord       bool
52
        logicOp       LogicOperator
53
        cmpOp         CmpOperator
54
        pparam        int
55
        update        *colUpdate
56
        updates       []*colUpdate
57
        onConflict    *OnConflictDo
58
        permission    Permission
59
        sqlPrivilege  SQLPrivilege
60
        sqlPrivileges []SQLPrivilege
61
}
62

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

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

276
var yyStatenames = [...]string{}
277

278
const yyEofCode = 1
279
const yyErrCode = 2
280
const yyInitialStackSize = 16
281

282
var yyExca = [...]int16{
283
        -1, 1,
284
        1, -1,
285
        -2, 0,
286
        -1, 112,
287
        72, 182,
288
        75, 182,
289
        -2, 170,
290
        -1, 260,
291
        58, 143,
292
        -2, 138,
293
        -1, 303,
294
        58, 143,
295
        -2, 140,
296
}
297

298
const yyPrivate = 57344
299

300
const yyLast = 512
301

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

357
var yyPact = [...]int16{
358
        318, -1000, -1000, -25, -1000, -1000, -1000, 372, -1000, -1000,
359
        432, 223, 427, 451, 379, 379, 365, 362, 328, 207,
360
        278, 305, 334, -1000, 318, -1000, 268, 268, 268, 426,
361
        218, -1000, 217, 447, 214, 216, 213, 210, 209, 421,
362
        375, 88, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 420,
363
        207, 207, 207, 350, -1000, 274, -1000, -1000, 206, -1000,
364
        377, 63, -1000, -1000, 204, 269, 202, 419, 268, 462,
365
        -1000, -1000, 443, 6, 6, -1000, 201, 103, -1000, 425,
366
        461, 469, -1000, 379, 468, 40, 38, 306, 171, 255,
367
        -1000, -1000, 199, 324, -1000, 83, 160, 96, 36, 102,
368
        -1000, 261, 35, 197, 415, 459, -1000, 6, 6, -1000,
369
        39, 163, 258, -1000, 39, 39, 31, -1000, -1000, 39,
370
        -1000, -1000, -1000, -1000, -1000, 30, -1000, -1000, -1000, -1000,
371
        20, -1000, 29, 196, 396, 395, 391, 458, 195, -1000,
372
        193, 153, 153, 471, 39, 89, -1000, 174, -1000, -1000,
373
        22, 120, -1000, -1000, 192, 91, 128, 84, 191, -1000,
374
        189, 19, 190, 127, -1000, -1000, 163, 39, 39, 39,
375
        39, 39, 39, 259, 267, 149, -1000, 173, 81, 255,
376
        -16, 39, 39, 153, -1000, 189, 184, 183, 182, 180,
377
        114, 403, 402, -26, 80, -1000, -66, 295, 423, 163,
378
        471, 171, 39, 471, 447, 296, 18, 15, 14, 13,
379
        160, -11, 160, -1000, 110, -1000, -30, -31, -1000, 74,
380
        -1000, 142, 153, -13, 454, 81, 81, 257, 257, 173,
381
        90, -1000, 248, 39, -14, -1000, -34, -1000, 143, -35,
382
        58, 163, -67, -1000, -1000, 401, -1000, -1000, 454, 465,
383
        464, 360, 170, 359, 293, 39, 411, 295, -1000, 163,
384
        166, 160, -47, 439, -48, -52, 169, -53, -1000, -1000,
385
        -1000, -1000, -1000, 203, -83, -68, 153, -1000, -1000, -1000,
386
        -1000, -1000, 173, -27, -1000, 138, -1000, 39, -1000, 168,
387
        -1000, 167, 165, -18, -1000, -18, -1000, 39, 163, -37,
388
        293, 306, -1000, 166, 322, -1000, -1000, 160, 164, 160,
389
        160, -54, 160, 386, -1000, 39, 154, 256, 131, 113,
390
        -1000, -70, -59, -71, -60, 163, -1000, -1000, -1000, 126,
391
        -1000, 39, 57, 163, -1000, -1000, 153, -1000, 313, -1000,
392
        22, -1000, -61, -1000, -1000, -1000, -1000, 387, 111, 383,
393
        254, -1000, 236, -88, -63, -1000, -1000, -1000, -1000, -1000,
394
        -18, 348, -69, -72, 317, 303, 471, 160, -37, 385,
395
        39, -1000, -1000, -1000, -1000, -1000, -1000, 341, -1000, -1000,
396
        291, 39, 151, 410, -1000, -73, -1000, 75, 338, 295,
397
        298, 163, 54, -1000, 39, -1000, 385, -1000, 293, 120,
398
        151, 163, -1000, -1000, 49, 282, -1000, 120, -1000, -1000,
399
        -1000, 282, -1000,
400
}
401

402
var yyPgo = [...]int16{
403
        0, 511, 458, 510, 509, 508, 18, 507, 506, 21,
404
        13, 10, 505, 504, 16, 9, 17, 14, 503, 11,
405
        2, 502, 501, 500, 3, 499, 498, 12, 391, 20,
406
        497, 496, 32, 495, 15, 494, 493, 8, 0, 19,
407
        492, 491, 490, 489, 6, 4, 488, 7, 487, 486,
408
        1, 5, 369, 485, 484, 482, 24, 481, 480, 22,
409
        479, 309, 478,
410
}
411

412
var yyR1 = [...]int8{
413
        0, 1, 2, 2, 62, 62, 3, 3, 3, 4,
414
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
415
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
416
        4, 4, 4, 61, 61, 61, 60, 60, 60, 60,
417
        60, 60, 60, 59, 59, 59, 59, 52, 52, 11,
418
        11, 5, 5, 5, 5, 58, 58, 57, 57, 56,
419
        12, 12, 14, 14, 15, 10, 10, 13, 13, 17,
420
        17, 16, 16, 18, 18, 18, 18, 18, 18, 18,
421
        18, 18, 18, 19, 8, 8, 9, 46, 46, 46,
422
        53, 53, 54, 54, 54, 6, 6, 6, 6, 6,
423
        6, 6, 6, 7, 26, 26, 25, 25, 21, 21,
424
        22, 22, 20, 20, 20, 20, 23, 23, 24, 24,
425
        27, 27, 27, 27, 27, 27, 27, 27, 28, 29,
426
        30, 30, 30, 31, 31, 31, 32, 32, 33, 33,
427
        34, 34, 35, 36, 36, 39, 39, 43, 43, 40,
428
        40, 44, 44, 45, 45, 49, 49, 51, 51, 48,
429
        48, 50, 50, 50, 47, 47, 47, 37, 37, 37,
430
        38, 38, 38, 38, 38, 38, 38, 38, 41, 41,
431
        41, 41, 55, 55, 42, 42, 42, 42, 42, 42,
432
        42, 42,
433
}
434

435
var yyR2 = [...]int8{
436
        0, 1, 2, 3, 0, 1, 1, 1, 1, 2,
437
        1, 1, 1, 4, 2, 3, 3, 12, 3, 8,
438
        9, 7, 5, 6, 6, 8, 6, 6, 7, 7,
439
        3, 8, 8, 2, 1, 3, 1, 1, 1, 1,
440
        1, 1, 1, 0, 1, 1, 1, 0, 3, 1,
441
        3, 9, 8, 7, 8, 0, 4, 1, 3, 3,
442
        0, 1, 1, 3, 3, 1, 3, 1, 3, 0,
443
        1, 1, 3, 1, 1, 1, 1, 1, 6, 1,
444
        1, 1, 1, 4, 1, 3, 5, 0, 3, 3,
445
        0, 1, 0, 1, 2, 1, 4, 2, 2, 3,
446
        2, 2, 4, 13, 0, 1, 0, 1, 1, 1,
447
        2, 4, 1, 2, 4, 4, 2, 3, 1, 3,
448
        3, 4, 4, 4, 4, 4, 2, 6, 1, 2,
449
        0, 2, 2, 0, 2, 2, 2, 1, 0, 1,
450
        1, 2, 6, 0, 1, 0, 2, 0, 3, 0,
451
        2, 0, 2, 0, 2, 0, 3, 0, 4, 2,
452
        4, 0, 1, 1, 0, 1, 2, 0, 4, 6,
453
        1, 1, 2, 2, 4, 4, 6, 6, 1, 1,
454
        3, 3, 0, 1, 3, 3, 3, 3, 3, 3,
455
        3, 4,
456
}
457

458
var yyChk = [...]int16{
459
        -1000, -1, -2, -3, -4, -5, -6, 41, 43, 44,
460
        4, 6, 5, 27, 36, 37, 45, 46, 49, 50,
461
        -7, 81, 55, -62, 107, 42, 7, 23, 25, 24,
462
        8, 90, 7, 14, 23, 25, 8, 23, 8, -61,
463
        70, -60, 55, 4, 45, 50, 49, 5, 27, -61,
464
        47, 47, 57, -28, 90, 69, 82, 83, 23, 84,
465
        38, -25, 56, -2, -52, 73, -52, -52, 25, 90,
466
        90, -29, -30, 16, 17, 90, 26, 90, 90, 90,
467
        90, 26, 40, 101, 26, -28, -28, -28, 51, -26,
468
        70, 90, 39, -21, 104, -22, -20, -24, 97, 90,
469
        90, 71, 90, 26, -52, 9, -31, 19, 18, -32,
470
        20, -38, -41, -42, 71, 103, 74, -20, -18, 108,
471
        92, 93, 94, 95, 96, 79, -19, 85, 86, 78,
472
        90, -32, 90, 99, 28, 29, 5, 9, 7, -61,
473
        7, 108, 108, -39, 60, -57, -56, 90, -6, 90,
474
        57, 101, -47, 90, 68, -23, 100, 108, 99, 74,
475
        108, 90, 26, 10, -32, -32, -38, 102, 103, 105,
476
        104, 88, 89, 76, -55, 80, 71, -38, -38, 108,
477
        -38, 108, 108, 108, 90, 31, 30, 31, 31, 32,
478
        10, 90, 90, -12, -10, 90, -10, -51, 6, -38,
479
        -39, 101, 89, -27, -28, 108, 82, 83, 23, 84,
480
        -19, 90, -20, 90, 100, 94, 104, -24, 90, -8,
481
        -9, 90, 108, 90, 94, -38, -38, -38, -38, -38,
482
        -38, 78, 71, 72, 75, 91, -6, 109, -38, -17,
483
        -16, -38, -10, -9, 90, 90, 90, 90, 94, 30,
484
        30, 109, 101, 109, -44, 63, 25, -51, -56, -38,
485
        -51, -29, -6, 15, 108, 108, 108, 108, -47, -47,
486
        94, 109, 109, 101, 91, -10, 108, -59, 11, 12,
487
        13, 78, -38, 108, 109, 68, 109, 101, 109, 30,
488
        -59, 8, 8, 48, 90, 48, -45, 64, -38, 26,
489
        -44, -33, -34, -35, -36, 87, -47, 109, 21, 109,
490
        109, 90, 109, -37, -9, 35, 32, -46, 110, 108,
491
        109, -10, -6, -16, 91, -38, 90, 90, 90, -14,
492
        -15, 108, -14, -38, -11, 90, 108, -45, -39, -34,
493
        58, -47, 90, -47, -47, 109, -47, 33, -38, 90,
494
        -54, 78, 71, 92, 92, 109, 109, 109, 109, -58,
495
        101, 26, -17, -10, -43, 61, -27, 109, 34, 101,
496
        35, -53, 77, 78, 111, 109, -15, 52, 109, 109,
497
        -40, 59, 62, -51, -47, -11, -37, -38, 53, -49,
498
        65, -38, -13, -24, 26, 109, 101, 54, -44, 62,
499
        101, -38, -37, -45, -48, -20, -24, 101, -50, 66,
500
        67, -20, -50,
501
}
502

503
var yyDef = [...]int16{
504
        0, -2, 1, 4, 6, 7, 8, 10, 11, 12,
505
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
506
        95, 0, 106, 2, 5, 9, 47, 47, 47, 0,
507
        0, 14, 0, 130, 0, 0, 0, 0, 0, 0,
508
        0, 34, 36, 37, 38, 39, 40, 41, 42, 0,
509
        0, 0, 0, 0, 128, 104, 97, 98, 0, 100,
510
        101, 0, 107, 3, 0, 0, 0, 0, 47, 0,
511
        15, 16, 133, 0, 0, 18, 0, 0, 30, 0,
512
        0, 0, 33, 0, 0, 0, 0, 145, 0, 0,
513
        105, 99, 0, 0, 108, 109, 164, 112, 0, 118,
514
        13, 0, 0, 0, 0, 0, 129, 0, 0, 131,
515
        0, 137, -2, 171, 0, 0, 0, 178, 179, 0,
516
        73, 74, 75, 76, 77, 0, 79, 80, 81, 82,
517
        118, 132, 0, 0, 0, 0, 0, 0, 0, 35,
518
        0, 60, 0, 157, 0, 145, 57, 0, 96, 102,
519
        0, 0, 110, 165, 0, 113, 0, 0, 0, 48,
520
        0, 0, 0, 0, 134, 135, 136, 0, 0, 0,
521
        0, 0, 0, 0, 0, 0, 183, 172, 173, 0,
522
        0, 0, 69, 0, 22, 0, 0, 0, 0, 0,
523
        0, 0, 0, 0, 61, 65, 0, 151, 0, 146,
524
        157, 0, 0, 157, 130, 0, 0, 0, 0, 0,
525
        164, 128, 164, 166, 0, 116, 0, 0, 119, 0,
526
        84, 0, 0, 0, 43, 184, 185, 186, 187, 188,
527
        189, 190, 0, 0, 0, 181, 0, 180, 0, 0,
528
        70, 71, 0, 23, 24, 0, 26, 27, 43, 0,
529
        0, 0, 0, 0, 153, 0, 0, 151, 58, 59,
530
        -2, 164, 0, 0, 0, 0, 0, 0, 126, 111,
531
        117, 114, 115, 167, 87, 0, 0, 28, 44, 45,
532
        46, 191, 174, 0, 175, 0, 83, 0, 21, 0,
533
        29, 0, 0, 0, 66, 0, 53, 0, 152, 0,
534
        153, 145, 139, -2, 0, 144, 120, 164, 0, 164,
535
        164, 0, 164, 0, 85, 0, 0, 92, 0, 0,
536
        19, 0, 0, 0, 0, 72, 25, 31, 32, 55,
537
        62, 69, 52, 154, 158, 49, 0, 54, 147, 141,
538
        0, 121, 0, 122, 123, 124, 125, 0, 0, 0,
539
        90, 93, 0, 0, 0, 20, 176, 177, 78, 51,
540
        0, 0, 0, 0, 149, 0, 157, 164, 0, 167,
541
        0, 86, 91, 94, 88, 89, 63, 0, 64, 50,
542
        155, 0, 0, 0, 127, 0, 168, 0, 0, 151,
543
        0, 150, 148, 67, 0, 17, 167, 56, 153, 0,
544
        0, 142, 169, 103, 156, 161, 68, 0, 159, 162,
545
        163, 161, 160,
546
}
547

548
var yyTok1 = [...]int8{
549
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
550
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
551
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
552
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
553
        108, 109, 104, 102, 101, 103, 106, 105, 3, 3,
554
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
555
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
556
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
557
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
558
        3, 110, 3, 111,
559
}
560

561
var yyTok2 = [...]int8{
562
        2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
563
        12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
564
        22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
565
        32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
566
        42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
567
        52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
568
        62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
569
        72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
570
        82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
571
        92, 93, 94, 95, 96, 97, 98, 99, 100, 107,
572
}
573

574
var yyTok3 = [...]int8{
575
        0,
576
}
577

578
var yyErrorMessages = [...]struct {
579
        state int
580
        token int
581
        msg   string
582
}{}
583

584
/*        parser for yacc output        */
585

586
var (
587
        yyDebug        = 0
588
        yyErrorVerbose = false
589
)
590

591
type yyLexer interface {
592
        Lex(lval *yySymType) int
593
        Error(s string)
594
}
595

596
type yyParser interface {
597
        Parse(yyLexer) int
598
        Lookahead() int
599
}
600

601
type yyParserImpl struct {
602
        lval  yySymType
603
        stack [yyInitialStackSize]yySymType
604
        char  int
605
}
606

607
func (p *yyParserImpl) Lookahead() int {
×
608
        return p.char
×
609
}
×
610

611
func yyNewParser() yyParser {
3,060✔
612
        return &yyParserImpl{}
3,060✔
613
}
3,060✔
614

615
const yyFlag = -1000
616

617
func yyTokname(c int) string {
55✔
618
        if c >= 1 && c-1 < len(yyToknames) {
110✔
619
                if yyToknames[c-1] != "" {
110✔
620
                        return yyToknames[c-1]
55✔
621
                }
55✔
622
        }
623
        return __yyfmt__.Sprintf("tok-%v", c)
×
624
}
625

626
func yyStatname(s int) string {
×
627
        if s >= 0 && s < len(yyStatenames) {
×
628
                if yyStatenames[s] != "" {
×
629
                        return yyStatenames[s]
×
630
                }
×
631
        }
632
        return __yyfmt__.Sprintf("state-%v", s)
×
633
}
634

635
func yyErrorMessage(state, lookAhead int) string {
41✔
636
        const TOKSTART = 4
41✔
637

41✔
638
        if !yyErrorVerbose {
46✔
639
                return "syntax error"
5✔
640
        }
5✔
641

642
        for _, e := range yyErrorMessages {
36✔
643
                if e.state == state && e.token == lookAhead {
×
644
                        return "syntax error: " + e.msg
×
645
                }
×
646
        }
647

648
        res := "syntax error: unexpected " + yyTokname(lookAhead)
36✔
649

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

36✔
653
        // Look for shiftable tokens.
36✔
654
        base := int(yyPact[state])
36✔
655
        for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
2,895✔
656
                if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
2,968✔
657
                        if len(expected) == cap(expected) {
127✔
658
                                return res
18✔
659
                        }
18✔
660
                        expected = append(expected, tok)
91✔
661
                }
662
        }
663

664
        if yyDef[state] == -2 {
20✔
665
                i := 0
2✔
666
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
667
                        i += 2
×
668
                }
×
669

670
                // Look for tokens that we accept or reduce.
671
                for i += 2; yyExca[i] >= 0; i += 2 {
4✔
672
                        tok := int(yyExca[i])
2✔
673
                        if tok < TOKSTART || yyExca[i+1] == 0 {
4✔
674
                                continue
2✔
675
                        }
676
                        if len(expected) == cap(expected) {
×
677
                                return res
×
678
                        }
×
679
                        expected = append(expected, tok)
×
680
                }
681

682
                // If the default action is to accept or reduce, give up.
683
                if yyExca[i+1] != 0 {
2✔
684
                        return res
×
685
                }
×
686
        }
687

688
        for i, tok := range expected {
37✔
689
                if i == 0 {
35✔
690
                        res += ", expecting "
16✔
691
                } else {
19✔
692
                        res += " or "
3✔
693
                }
3✔
694
                res += yyTokname(tok)
19✔
695
        }
696
        return res
18✔
697
}
698

699
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
52,315✔
700
        token = 0
52,315✔
701
        char = lex.Lex(lval)
52,315✔
702
        if char <= 0 {
55,336✔
703
                token = int(yyTok1[0])
3,021✔
704
                goto out
3,021✔
705
        }
706
        if char < len(yyTok1) {
68,245✔
707
                token = int(yyTok1[char])
18,951✔
708
                goto out
18,951✔
709
        }
710
        if char >= yyPrivate {
60,686✔
711
                if char < yyPrivate+len(yyTok2) {
60,686✔
712
                        token = int(yyTok2[char-yyPrivate])
30,343✔
713
                        goto out
30,343✔
714
                }
715
        }
716
        for i := 0; i < len(yyTok3); i += 2 {
×
717
                token = int(yyTok3[i+0])
×
718
                if token == char {
×
719
                        token = int(yyTok3[i+1])
×
720
                        goto out
×
721
                }
722
        }
723

724
out:
725
        if token == 0 {
52,315✔
726
                token = int(yyTok2[1]) /* unknown char */
×
727
        }
×
728
        if yyDebug >= 3 {
52,315✔
729
                __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
×
730
        }
×
731
        return char, token
52,315✔
732
}
733

734
func yyParse(yylex yyLexer) int {
3,060✔
735
        return yyNewParser().Parse(yylex)
3,060✔
736
}
3,060✔
737

738
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
3,060✔
739
        var yyn int
3,060✔
740
        var yyVAL yySymType
3,060✔
741
        var yyDollar []yySymType
3,060✔
742
        _ = yyDollar // silence set and not used
3,060✔
743
        yyS := yyrcvr.stack[:]
3,060✔
744

3,060✔
745
        Nerrs := 0   /* number of errors */
3,060✔
746
        Errflag := 0 /* error recovery flag */
3,060✔
747
        yystate := 0
3,060✔
748
        yyrcvr.char = -1
3,060✔
749
        yytoken := -1 // yyrcvr.char translated into internal numbering
3,060✔
750
        defer func() {
6,120✔
751
                // Make sure we report no lookahead when not parsing.
3,060✔
752
                yystate = -1
3,060✔
753
                yyrcvr.char = -1
3,060✔
754
                yytoken = -1
3,060✔
755
        }()
3,060✔
756
        yyp := -1
3,060✔
757
        goto yystack
3,060✔
758

759
ret0:
760
        return 0
3,019✔
761

3,019✔
762
ret1:
3,019✔
763
        return 1
41✔
764

41✔
765
yystack:
41✔
766
        /* put a state and value onto the stack */
767
        if yyDebug >= 4 {
133,344✔
768
                __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
×
769
        }
×
770

771
        yyp++
133,344✔
772
        if yyp >= len(yyS) {
133,429✔
773
                nyys := make([]yySymType, len(yyS)*2)
85✔
774
                copy(nyys, yyS)
85✔
775
                yyS = nyys
85✔
776
        }
85✔
777
        yyS[yyp] = yyVAL
133,344✔
778
        yyS[yyp].yys = yystate
133,344✔
779

133,344✔
780
yynewstate:
133,344✔
781
        yyn = int(yyPact[yystate])
133,344✔
782
        if yyn <= yyFlag {
179,870✔
783
                goto yydefault /* simple state */
46,526✔
784
        }
785
        if yyrcvr.char < 0 {
139,133✔
786
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
52,315✔
787
        }
52,315✔
788
        yyn += yytoken
86,818✔
789
        if yyn < 0 || yyn >= yyLast {
90,344✔
790
                goto yydefault
3,526✔
791
        }
792
        yyn = int(yyAct[yyn])
83,292✔
793
        if int(yyChk[yyn]) == yytoken { /* valid shift */
132,547✔
794
                yyrcvr.char = -1
49,255✔
795
                yytoken = -1
49,255✔
796
                yyVAL = yyrcvr.lval
49,255✔
797
                yystate = yyn
49,255✔
798
                if Errflag > 0 {
49,255✔
799
                        Errflag--
×
800
                }
×
801
                goto yystack
49,255✔
802
        }
803

804
yydefault:
805
        /* default state action */
806
        yyn = int(yyDef[yystate])
84,089✔
807
        if yyn == -2 {
95,148✔
808
                if yyrcvr.char < 0 {
11,059✔
809
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
810
                }
×
811

812
                /* look through exception table */
813
                xi := 0
11,059✔
814
                for {
48,802✔
815
                        if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
48,802✔
816
                                break
11,059✔
817
                        }
818
                        xi += 2
26,684✔
819
                }
820
                for xi += 2; ; xi += 2 {
37,490✔
821
                        yyn = int(yyExca[xi+0])
26,431✔
822
                        if yyn < 0 || yyn == yytoken {
37,490✔
823
                                break
11,059✔
824
                        }
825
                }
826
                yyn = int(yyExca[xi+1])
11,059✔
827
                if yyn < 0 {
14,078✔
828
                        goto ret0
3,019✔
829
                }
830
        }
831
        if yyn == 0 {
81,111✔
832
                /* error ... attempt to resume parsing */
41✔
833
                switch Errflag {
41✔
834
                case 0: /* brand new error */
41✔
835
                        yylex.Error(yyErrorMessage(yystate, yytoken))
41✔
836
                        Nerrs++
41✔
837
                        if yyDebug >= 1 {
41✔
838
                                __yyfmt__.Printf("%s", yyStatname(yystate))
×
839
                                __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
×
840
                        }
×
841
                        fallthrough
41✔
842

843
                case 1, 2: /* incompletely recovered error ... try again */
41✔
844
                        Errflag = 3
41✔
845

41✔
846
                        /* find a state where "error" is a legal shift action */
41✔
847
                        for yyp >= 0 {
261✔
848
                                yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
220✔
849
                                if yyn >= 0 && yyn < yyLast {
403✔
850
                                        yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
183✔
851
                                        if int(yyChk[yystate]) == yyErrCode {
183✔
852
                                                goto yystack
×
853
                                        }
854
                                }
855

856
                                /* the current p has no shift on "error", pop stack */
857
                                if yyDebug >= 2 {
220✔
858
                                        __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
×
859
                                }
×
860
                                yyp--
220✔
861
                        }
862
                        /* there is no state on the stack with an error shift ... abort */
863
                        goto ret1
41✔
864

865
                case 3: /* no shift yet; clobber input char */
×
866
                        if yyDebug >= 2 {
×
867
                                __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
×
868
                        }
×
869
                        if yytoken == yyEofCode {
×
870
                                goto ret1
×
871
                        }
872
                        yyrcvr.char = -1
×
873
                        yytoken = -1
×
874
                        goto yynewstate /* try again in the same state */
×
875
                }
876
        }
877

878
        /* reduction by production yyn */
879
        if yyDebug >= 2 {
81,029✔
880
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
881
        }
×
882

883
        yynt := yyn
81,029✔
884
        yypt := yyp
81,029✔
885
        _ = yypt // guard against "declared and not used"
81,029✔
886

81,029✔
887
        yyp -= int(yyR2[yyn])
81,029✔
888
        // yyp is now the index of $0. Perform the default action. Iff the
81,029✔
889
        // reduced production is ε, $1 is possibly out of range.
81,029✔
890
        if yyp+1 >= len(yyS) {
81,051✔
891
                nyys := make([]yySymType, len(yyS)*2)
22✔
892
                copy(nyys, yyS)
22✔
893
                yyS = nyys
22✔
894
        }
22✔
895
        yyVAL = yyS[yyp+1]
81,029✔
896

81,029✔
897
        /* consult goto table to find next state */
81,029✔
898
        yyn = int(yyR1[yyn])
81,029✔
899
        yyg := int(yyPgo[yyn])
81,029✔
900
        yyj := yyg + yyS[yyp].yys + 1
81,029✔
901

81,029✔
902
        if yyj >= yyLast {
111,320✔
903
                yystate = int(yyAct[yyg])
30,291✔
904
        } else {
81,029✔
905
                yystate = int(yyAct[yyj])
50,738✔
906
                if int(yyChk[yystate]) != -yyn {
81,990✔
907
                        yystate = int(yyAct[yyg])
31,252✔
908
                }
31,252✔
909
        }
910
        // dummy call; replaced with literal code
911
        switch yynt {
81,029✔
912

913
        case 1:
3,021✔
914
                yyDollar = yyS[yypt-1 : yypt+1]
3,021✔
915
                {
6,042✔
916
                        yyVAL.stmts = yyDollar[1].stmts
3,021✔
917
                        setResult(yylex, yyDollar[1].stmts)
3,021✔
918
                }
3,021✔
919
        case 2:
3,021✔
920
                yyDollar = yyS[yypt-2 : yypt+1]
3,021✔
921
                {
6,042✔
922
                        yyVAL.stmts = []SQLStmt{yyDollar[1].stmt}
3,021✔
923
                }
3,021✔
924
        case 3:
95✔
925
                yyDollar = yyS[yypt-3 : yypt+1]
95✔
926
                {
190✔
927
                        yyVAL.stmts = append([]SQLStmt{yyDollar[1].stmt}, yyDollar[3].stmts...)
95✔
928
                }
95✔
929
        case 4:
2,715✔
930
                yyDollar = yyS[yypt-0 : yypt+1]
2,715✔
931
                {
5,430✔
932
                }
2,715✔
933
        case 9:
69✔
934
                yyDollar = yyS[yypt-2 : yypt+1]
69✔
935
                {
138✔
936
                        yyVAL.stmt = &BeginTransactionStmt{}
69✔
937
                }
69✔
938
        case 10:
1✔
939
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
940
                {
2✔
941
                        yyVAL.stmt = &BeginTransactionStmt{}
1✔
942
                }
1✔
943
        case 11:
174✔
944
                yyDollar = yyS[yypt-1 : yypt+1]
174✔
945
                {
348✔
946
                        yyVAL.stmt = &CommitStmt{}
174✔
947
                }
174✔
948
        case 12:
6✔
949
                yyDollar = yyS[yypt-1 : yypt+1]
6✔
950
                {
12✔
951
                        yyVAL.stmt = &RollbackStmt{}
6✔
952
                }
6✔
953
        case 13:
23✔
954
                yyDollar = yyS[yypt-4 : yypt+1]
23✔
955
                {
46✔
956
                        yyVAL.stmt = &CreateDatabaseStmt{ifNotExists: yyDollar[3].boolean, DB: yyDollar[4].id}
23✔
957
                }
23✔
958
        case 14:
3✔
959
                yyDollar = yyS[yypt-2 : yypt+1]
3✔
960
                {
6✔
961
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[2].id}
3✔
962
                }
3✔
963
        case 15:
14✔
964
                yyDollar = yyS[yypt-3 : yypt+1]
14✔
965
                {
28✔
966
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[3].id}
14✔
967
                }
14✔
968
        case 16:
9✔
969
                yyDollar = yyS[yypt-3 : yypt+1]
9✔
970
                {
18✔
971
                        yyVAL.stmt = &UseSnapshotStmt{period: yyDollar[3].period}
9✔
972
                }
9✔
973
        case 17:
205✔
974
                yyDollar = yyS[yypt-12 : yypt+1]
205✔
975
                {
410✔
976
                        yyVAL.stmt = &CreateTableStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[4].id, colsSpec: yyDollar[6].colsSpec, checks: yyDollar[8].checks, pkColNames: yyDollar[11].ids}
205✔
977
                }
205✔
978
        case 18:
2✔
979
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
980
                {
4✔
981
                        yyVAL.stmt = &DropTableStmt{table: yyDollar[3].id}
2✔
982
                }
2✔
983
        case 19:
62✔
984
                yyDollar = yyS[yypt-8 : yypt+1]
62✔
985
                {
124✔
986
                        yyVAL.stmt = &CreateIndexStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[5].id, cols: yyDollar[7].ids}
62✔
987
                }
62✔
988
        case 20:
21✔
989
                yyDollar = yyS[yypt-9 : yypt+1]
21✔
990
                {
42✔
991
                        yyVAL.stmt = &CreateIndexStmt{unique: true, ifNotExists: yyDollar[4].boolean, table: yyDollar[6].id, cols: yyDollar[8].ids}
21✔
992
                }
21✔
993
        case 21:
3✔
994
                yyDollar = yyS[yypt-7 : yypt+1]
3✔
995
                {
6✔
996
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[4].id, cols: yyDollar[6].ids}
3✔
997
                }
3✔
998
        case 22:
×
999
                yyDollar = yyS[yypt-5 : yypt+1]
×
1000
                {
×
1001
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[3].id, cols: []string{yyDollar[5].id}}
×
1002
                }
×
1003
        case 23:
16✔
1004
                yyDollar = yyS[yypt-6 : yypt+1]
16✔
1005
                {
32✔
1006
                        yyVAL.stmt = &AddColumnStmt{table: yyDollar[3].id, colSpec: yyDollar[6].colSpec}
16✔
1007
                }
16✔
1008
        case 24:
6✔
1009
                yyDollar = yyS[yypt-6 : yypt+1]
6✔
1010
                {
12✔
1011
                        yyVAL.stmt = &RenameTableStmt{oldName: yyDollar[3].id, newName: yyDollar[6].id}
6✔
1012
                }
6✔
1013
        case 25:
9✔
1014
                yyDollar = yyS[yypt-8 : yypt+1]
9✔
1015
                {
18✔
1016
                        yyVAL.stmt = &RenameColumnStmt{table: yyDollar[3].id, oldName: yyDollar[6].id, newName: yyDollar[8].id}
9✔
1017
                }
9✔
1018
        case 26:
11✔
1019
                yyDollar = yyS[yypt-6 : yypt+1]
11✔
1020
                {
22✔
1021
                        yyVAL.stmt = &DropColumnStmt{table: yyDollar[3].id, colName: yyDollar[6].id}
11✔
1022
                }
11✔
1023
        case 27:
4✔
1024
                yyDollar = yyS[yypt-6 : yypt+1]
4✔
1025
                {
8✔
1026
                        yyVAL.stmt = &DropConstraintStmt{table: yyDollar[3].id, constraintName: yyDollar[6].id}
4✔
1027
                }
4✔
1028
        case 28:
6✔
1029
                yyDollar = yyS[yypt-7 : yypt+1]
6✔
1030
                {
12✔
1031
                        yyVAL.stmt = &CreateUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
6✔
1032
                }
6✔
1033
        case 29:
5✔
1034
                yyDollar = yyS[yypt-7 : yypt+1]
5✔
1035
                {
10✔
1036
                        yyVAL.stmt = &AlterUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
5✔
1037
                }
5✔
1038
        case 30:
3✔
1039
                yyDollar = yyS[yypt-3 : yypt+1]
3✔
1040
                {
6✔
1041
                        yyVAL.stmt = &DropUserStmt{username: yyDollar[3].id}
3✔
1042
                }
3✔
1043
        case 31:
3✔
1044
                yyDollar = yyS[yypt-8 : yypt+1]
3✔
1045
                {
6✔
1046
                        yyVAL.stmt = &AlterPrivilegesStmt{database: yyDollar[5].id, user: yyDollar[8].id, privileges: yyDollar[2].sqlPrivileges, isGrant: true}
3✔
1047
                }
3✔
1048
        case 32:
3✔
1049
                yyDollar = yyS[yypt-8 : yypt+1]
3✔
1050
                {
6✔
1051
                        yyVAL.stmt = &AlterPrivilegesStmt{database: yyDollar[5].id, user: yyDollar[8].id, privileges: yyDollar[2].sqlPrivileges}
3✔
1052
                }
3✔
1053
        case 33:
4✔
1054
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
1055
                {
8✔
1056
                        yyVAL.sqlPrivileges = allPrivileges
4✔
1057
                }
4✔
1058
        case 34:
2✔
1059
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1060
                {
4✔
1061
                        yyVAL.sqlPrivileges = []SQLPrivilege{yyDollar[1].sqlPrivilege}
2✔
1062
                }
2✔
1063
        case 35:
6✔
1064
                yyDollar = yyS[yypt-3 : yypt+1]
6✔
1065
                {
12✔
1066
                        yyVAL.sqlPrivileges = append(yyDollar[3].sqlPrivileges, yyDollar[1].sqlPrivilege)
6✔
1067
                }
6✔
1068
        case 36:
2✔
1069
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1070
                {
4✔
1071
                        yyVAL.sqlPrivilege = SQLPrivilegeSelect
2✔
1072
                }
2✔
NEW
1073
        case 37:
×
NEW
1074
                yyDollar = yyS[yypt-1 : yypt+1]
×
NEW
1075
                {
×
NEW
1076
                        yyVAL.sqlPrivilege = SQLPrivilegeCreate
×
NEW
1077
                }
×
1078
        case 38:
2✔
1079
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1080
                {
4✔
1081
                        yyVAL.sqlPrivilege = SQLPrivilegeInsert
2✔
1082
                }
2✔
1083
        case 39:
2✔
1084
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1085
                {
4✔
1086
                        yyVAL.sqlPrivilege = SQLPrivilegeUpdate
2✔
1087
                }
2✔
1088
        case 40:
2✔
1089
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1090
                {
4✔
1091
                        yyVAL.sqlPrivilege = SQLPrivilegeDelete
2✔
1092
                }
2✔
NEW
1093
        case 41:
×
NEW
1094
                yyDollar = yyS[yypt-1 : yypt+1]
×
NEW
1095
                {
×
NEW
1096
                        yyVAL.sqlPrivilege = SQLPrivilegeDrop
×
NEW
1097
                }
×
NEW
1098
        case 42:
×
NEW
1099
                yyDollar = yyS[yypt-1 : yypt+1]
×
NEW
1100
                {
×
NEW
1101
                        yyVAL.sqlPrivilege = SQLPrivilegeAlter
×
NEW
1102
                }
×
NEW
1103
        case 43:
×
1104
                yyDollar = yyS[yypt-0 : yypt+1]
×
1105
                {
×
1106
                        yyVAL.permission = PermissionReadWrite
×
1107
                }
×
1108
        case 44:
5✔
1109
                yyDollar = yyS[yypt-1 : yypt+1]
5✔
1110
                {
10✔
1111
                        yyVAL.permission = PermissionReadOnly
5✔
1112
                }
5✔
1113
        case 45:
4✔
1114
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
1115
                {
8✔
1116
                        yyVAL.permission = PermissionReadWrite
4✔
1117
                }
4✔
1118
        case 46:
2✔
1119
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1120
                {
4✔
1121
                        yyVAL.permission = PermissionAdmin
2✔
1122
                }
2✔
1123
        case 47:
290✔
1124
                yyDollar = yyS[yypt-0 : yypt+1]
290✔
1125
                {
580✔
1126
                        yyVAL.boolean = false
290✔
1127
                }
290✔
1128
        case 48:
25✔
1129
                yyDollar = yyS[yypt-3 : yypt+1]
25✔
1130
                {
50✔
1131
                        yyVAL.boolean = true
25✔
1132
                }
25✔
1133
        case 49:
164✔
1134
                yyDollar = yyS[yypt-1 : yypt+1]
164✔
1135
                {
328✔
1136
                        yyVAL.ids = []string{yyDollar[1].id}
164✔
1137
                }
164✔
1138
        case 50:
71✔
1139
                yyDollar = yyS[yypt-3 : yypt+1]
71✔
1140
                {
142✔
1141
                        yyVAL.ids = yyDollar[2].ids
71✔
1142
                }
71✔
1143
        case 51:
1,605✔
1144
                yyDollar = yyS[yypt-9 : yypt+1]
1,605✔
1145
                {
3,210✔
1146
                        yyVAL.stmt = &UpsertIntoStmt{isInsert: true, tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows, onConflict: yyDollar[9].onConflict}
1,605✔
1147
                }
1,605✔
1148
        case 52:
203✔
1149
                yyDollar = yyS[yypt-8 : yypt+1]
203✔
1150
                {
406✔
1151
                        yyVAL.stmt = &UpsertIntoStmt{tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows}
203✔
1152
                }
203✔
1153
        case 53:
12✔
1154
                yyDollar = yyS[yypt-7 : yypt+1]
12✔
1155
                {
24✔
1156
                        yyVAL.stmt = &DeleteFromStmt{tableRef: yyDollar[3].tableRef, where: yyDollar[4].exp, indexOn: yyDollar[5].ids, limit: yyDollar[6].exp, offset: yyDollar[7].exp}
12✔
1157
                }
12✔
1158
        case 54:
24✔
1159
                yyDollar = yyS[yypt-8 : yypt+1]
24✔
1160
                {
48✔
1161
                        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}
24✔
1162
                }
24✔
1163
        case 55:
1,602✔
1164
                yyDollar = yyS[yypt-0 : yypt+1]
1,602✔
1165
                {
3,204✔
1166
                        yyVAL.onConflict = nil
1,602✔
1167
                }
1,602✔
1168
        case 56:
3✔
1169
                yyDollar = yyS[yypt-4 : yypt+1]
3✔
1170
                {
6✔
1171
                        yyVAL.onConflict = &OnConflictDo{}
3✔
1172
                }
3✔
1173
        case 57:
24✔
1174
                yyDollar = yyS[yypt-1 : yypt+1]
24✔
1175
                {
48✔
1176
                        yyVAL.updates = []*colUpdate{yyDollar[1].update}
24✔
1177
                }
24✔
1178
        case 58:
2✔
1179
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1180
                {
4✔
1181
                        yyVAL.updates = append(yyDollar[1].updates, yyDollar[3].update)
2✔
1182
                }
2✔
1183
        case 59:
26✔
1184
                yyDollar = yyS[yypt-3 : yypt+1]
26✔
1185
                {
52✔
1186
                        yyVAL.update = &colUpdate{col: yyDollar[1].id, op: yyDollar[2].cmpOp, val: yyDollar[3].exp}
26✔
1187
                }
26✔
1188
        case 60:
1✔
1189
                yyDollar = yyS[yypt-0 : yypt+1]
1✔
1190
                {
2✔
1191
                        yyVAL.ids = nil
1✔
1192
                }
1✔
1193
        case 61:
1,610✔
1194
                yyDollar = yyS[yypt-1 : yypt+1]
1,610✔
1195
                {
3,220✔
1196
                        yyVAL.ids = yyDollar[1].ids
1,610✔
1197
                }
1,610✔
1198
        case 62:
1,808✔
1199
                yyDollar = yyS[yypt-1 : yypt+1]
1,808✔
1200
                {
3,616✔
1201
                        yyVAL.rows = []*RowSpec{yyDollar[1].row}
1,808✔
1202
                }
1,808✔
1203
        case 63:
82✔
1204
                yyDollar = yyS[yypt-3 : yypt+1]
82✔
1205
                {
164✔
1206
                        yyVAL.rows = append(yyDollar[1].rows, yyDollar[3].row)
82✔
1207
                }
82✔
1208
        case 64:
1,890✔
1209
                yyDollar = yyS[yypt-3 : yypt+1]
1,890✔
1210
                {
3,780✔
1211
                        yyVAL.row = &RowSpec{Values: yyDollar[2].values}
1,890✔
1212
                }
1,890✔
1213
        case 65:
1,978✔
1214
                yyDollar = yyS[yypt-1 : yypt+1]
1,978✔
1215
                {
3,956✔
1216
                        yyVAL.ids = []string{yyDollar[1].id}
1,978✔
1217
                }
1,978✔
1218
        case 66:
4,002✔
1219
                yyDollar = yyS[yypt-3 : yypt+1]
4,002✔
1220
                {
8,004✔
1221
                        yyVAL.ids = append(yyDollar[1].ids, yyDollar[3].id)
4,002✔
1222
                }
4,002✔
1223
        case 67:
33✔
1224
                yyDollar = yyS[yypt-1 : yypt+1]
33✔
1225
                {
66✔
1226
                        yyVAL.cols = []*ColSelector{yyDollar[1].col}
33✔
1227
                }
33✔
1228
        case 68:
18✔
1229
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1230
                {
36✔
1231
                        yyVAL.cols = append(yyDollar[1].cols, yyDollar[3].col)
18✔
1232
                }
18✔
1233
        case 69:
126✔
1234
                yyDollar = yyS[yypt-0 : yypt+1]
126✔
1235
                {
252✔
1236
                        yyVAL.values = nil
126✔
1237
                }
126✔
1238
        case 70:
1,905✔
1239
                yyDollar = yyS[yypt-1 : yypt+1]
1,905✔
1240
                {
3,810✔
1241
                        yyVAL.values = yyDollar[1].values
1,905✔
1242
                }
1,905✔
1243
        case 71:
1,926✔
1244
                yyDollar = yyS[yypt-1 : yypt+1]
1,926✔
1245
                {
3,852✔
1246
                        yyVAL.values = []ValueExp{yyDollar[1].exp}
1,926✔
1247
                }
1,926✔
1248
        case 72:
4,035✔
1249
                yyDollar = yyS[yypt-3 : yypt+1]
4,035✔
1250
                {
8,070✔
1251
                        yyVAL.values = append(yyDollar[1].values, yyDollar[3].exp)
4,035✔
1252
                }
4,035✔
1253
        case 73:
772✔
1254
                yyDollar = yyS[yypt-1 : yypt+1]
772✔
1255
                {
1,544✔
1256
                        yyVAL.value = &Integer{val: int64(yyDollar[1].integer)}
772✔
1257
                }
772✔
1258
        case 74:
45✔
1259
                yyDollar = yyS[yypt-1 : yypt+1]
45✔
1260
                {
90✔
1261
                        yyVAL.value = &Float64{val: float64(yyDollar[1].float)}
45✔
1262
                }
45✔
1263
        case 75:
514✔
1264
                yyDollar = yyS[yypt-1 : yypt+1]
514✔
1265
                {
1,028✔
1266
                        yyVAL.value = &Varchar{val: yyDollar[1].str}
514✔
1267
                }
514✔
1268
        case 76:
190✔
1269
                yyDollar = yyS[yypt-1 : yypt+1]
190✔
1270
                {
380✔
1271
                        yyVAL.value = &Bool{val: yyDollar[1].boolean}
190✔
1272
                }
190✔
1273
        case 77:
94✔
1274
                yyDollar = yyS[yypt-1 : yypt+1]
94✔
1275
                {
188✔
1276
                        yyVAL.value = &Blob{val: yyDollar[1].blob}
94✔
1277
                }
94✔
1278
        case 78:
59✔
1279
                yyDollar = yyS[yypt-6 : yypt+1]
59✔
1280
                {
118✔
1281
                        yyVAL.value = &Cast{val: yyDollar[3].exp, t: yyDollar[5].sqlType}
59✔
1282
                }
59✔
1283
        case 79:
128✔
1284
                yyDollar = yyS[yypt-1 : yypt+1]
128✔
1285
                {
256✔
1286
                        yyVAL.value = yyDollar[1].value
128✔
1287
                }
128✔
1288
        case 80:
4,605✔
1289
                yyDollar = yyS[yypt-1 : yypt+1]
4,605✔
1290
                {
9,210✔
1291
                        yyVAL.value = &Param{id: yyDollar[1].id}
4,605✔
1292
                }
4,605✔
1293
        case 81:
175✔
1294
                yyDollar = yyS[yypt-1 : yypt+1]
175✔
1295
                {
350✔
1296
                        yyVAL.value = &Param{id: fmt.Sprintf("param%d", yyDollar[1].pparam), pos: yyDollar[1].pparam}
175✔
1297
                }
175✔
1298
        case 82:
83✔
1299
                yyDollar = yyS[yypt-1 : yypt+1]
83✔
1300
                {
166✔
1301
                        yyVAL.value = &NullValue{t: AnyType}
83✔
1302
                }
83✔
1303
        case 83:
134✔
1304
                yyDollar = yyS[yypt-4 : yypt+1]
134✔
1305
                {
268✔
1306
                        yyVAL.value = &FnCall{fn: yyDollar[1].id, params: yyDollar[3].values}
134✔
1307
                }
134✔
1308
        case 84:
205✔
1309
                yyDollar = yyS[yypt-1 : yypt+1]
205✔
1310
                {
410✔
1311
                        yyVAL.colsSpec = []*ColSpec{yyDollar[1].colSpec}
205✔
1312
                }
205✔
1313
        case 85:
352✔
1314
                yyDollar = yyS[yypt-3 : yypt+1]
352✔
1315
                {
704✔
1316
                        yyVAL.colsSpec = append(yyDollar[1].colsSpec, yyDollar[3].colSpec)
352✔
1317
                }
352✔
1318
        case 86:
573✔
1319
                yyDollar = yyS[yypt-5 : yypt+1]
573✔
1320
                {
1,146✔
1321
                        yyVAL.colSpec = &ColSpec{colName: yyDollar[1].id, colType: yyDollar[2].sqlType, maxLen: int(yyDollar[3].integer), notNull: yyDollar[4].boolean, autoIncrement: yyDollar[5].boolean}
573✔
1322
                }
573✔
1323
        case 87:
518✔
1324
                yyDollar = yyS[yypt-0 : yypt+1]
518✔
1325
                {
1,036✔
1326
                        yyVAL.integer = 0
518✔
1327
                }
518✔
1328
        case 88:
54✔
1329
                yyDollar = yyS[yypt-3 : yypt+1]
54✔
1330
                {
108✔
1331
                        yyVAL.integer = yyDollar[2].integer
54✔
1332
                }
54✔
1333
        case 89:
1✔
1334
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
1335
                {
2✔
1336
                        yyVAL.integer = yyDollar[2].integer
1✔
1337
                }
1✔
1338
        case 90:
492✔
1339
                yyDollar = yyS[yypt-0 : yypt+1]
492✔
1340
                {
984✔
1341
                        yyVAL.boolean = false
492✔
1342
                }
492✔
1343
        case 91:
81✔
1344
                yyDollar = yyS[yypt-1 : yypt+1]
81✔
1345
                {
162✔
1346
                        yyVAL.boolean = true
81✔
1347
                }
81✔
1348
        case 92:
563✔
1349
                yyDollar = yyS[yypt-0 : yypt+1]
563✔
1350
                {
1,126✔
1351
                        yyVAL.boolean = false
563✔
1352
                }
563✔
1353
        case 93:
1✔
1354
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1355
                {
2✔
1356
                        yyVAL.boolean = false
1✔
1357
                }
1✔
1358
        case 94:
9✔
1359
                yyDollar = yyS[yypt-2 : yypt+1]
9✔
1360
                {
18✔
1361
                        yyVAL.boolean = true
9✔
1362
                }
9✔
1363
        case 95:
618✔
1364
                yyDollar = yyS[yypt-1 : yypt+1]
618✔
1365
                {
1,236✔
1366
                        yyVAL.stmt = yyDollar[1].stmt
618✔
1367
                }
618✔
1368
        case 96:
11✔
1369
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1370
                {
22✔
1371
                        yyVAL.stmt = &UnionStmt{
11✔
1372
                                distinct: yyDollar[3].distinct,
11✔
1373
                                left:     yyDollar[1].stmt.(DataSource),
11✔
1374
                                right:    yyDollar[4].stmt.(DataSource),
11✔
1375
                        }
11✔
1376
                }
11✔
1377
        case 97:
1✔
1378
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1379
                {
2✔
1380
                        yyVAL.stmt = &SelectStmt{
1✔
1381
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}},
1✔
1382
                        }
1✔
1383
                }
1✔
1384
        case 98:
1✔
1385
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1386
                {
2✔
1387
                        yyVAL.stmt = &SelectStmt{
1✔
1388
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}},
1✔
1389
                        }
1✔
1390
                }
1✔
NEW
1391
        case 99:
×
1392
                yyDollar = yyS[yypt-3 : yypt+1]
×
1393
                {
×
1394
                        yyVAL.stmt = &SelectStmt{
×
1395
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}},
×
1396
                        }
×
1397
                }
×
1398
        case 100:
6✔
1399
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1400
                {
12✔
1401
                        yyVAL.stmt = &SelectStmt{
6✔
1402
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}},
6✔
1403
                        }
6✔
1404
                }
6✔
1405
        case 101:
1✔
1406
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1407
                {
2✔
1408
                        yyVAL.stmt = &SelectStmt{
1✔
1409
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "grants"}},
1✔
1410
                        }
1✔
1411
                }
1✔
1412
        case 102:
1✔
1413
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1414
                {
2✔
1415
                        yyVAL.stmt = &SelectStmt{
1✔
1416
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "grants", params: []ValueExp{&Varchar{val: yyDollar[4].id}}}},
1✔
1417
                        }
1✔
1418
                }
1✔
1419
        case 103:
630✔
1420
                yyDollar = yyS[yypt-13 : yypt+1]
630✔
1421
                {
1,260✔
1422
                        yyVAL.stmt = &SelectStmt{
630✔
1423
                                distinct:  yyDollar[2].distinct,
630✔
1424
                                selectors: yyDollar[3].sels,
630✔
1425
                                ds:        yyDollar[5].ds,
630✔
1426
                                indexOn:   yyDollar[6].ids,
630✔
1427
                                joins:     yyDollar[7].joins,
630✔
1428
                                where:     yyDollar[8].exp,
630✔
1429
                                groupBy:   yyDollar[9].cols,
630✔
1430
                                having:    yyDollar[10].exp,
630✔
1431
                                orderBy:   yyDollar[11].ordcols,
630✔
1432
                                limit:     yyDollar[12].exp,
630✔
1433
                                offset:    yyDollar[13].exp,
630✔
1434
                        }
630✔
1435
                }
630✔
1436
        case 104:
11✔
1437
                yyDollar = yyS[yypt-0 : yypt+1]
11✔
1438
                {
22✔
1439
                        yyVAL.distinct = true
11✔
1440
                }
11✔
1441
        case 105:
1✔
1442
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1443
                {
2✔
1444
                        yyVAL.distinct = false
1✔
1445
                }
1✔
1446
        case 106:
624✔
1447
                yyDollar = yyS[yypt-0 : yypt+1]
624✔
1448
                {
1,248✔
1449
                        yyVAL.distinct = false
624✔
1450
                }
624✔
1451
        case 107:
8✔
1452
                yyDollar = yyS[yypt-1 : yypt+1]
8✔
1453
                {
16✔
1454
                        yyVAL.distinct = true
8✔
1455
                }
8✔
1456
        case 108:
251✔
1457
                yyDollar = yyS[yypt-1 : yypt+1]
251✔
1458
                {
502✔
1459
                        yyVAL.sels = nil
251✔
1460
                }
251✔
1461
        case 109:
381✔
1462
                yyDollar = yyS[yypt-1 : yypt+1]
381✔
1463
                {
762✔
1464
                        yyVAL.sels = yyDollar[1].sels
381✔
1465
                }
381✔
1466
        case 110:
381✔
1467
                yyDollar = yyS[yypt-2 : yypt+1]
381✔
1468
                {
762✔
1469
                        yyDollar[1].sel.setAlias(yyDollar[2].id)
381✔
1470
                        yyVAL.sels = []Selector{yyDollar[1].sel}
381✔
1471
                }
381✔
1472
        case 111:
423✔
1473
                yyDollar = yyS[yypt-4 : yypt+1]
423✔
1474
                {
846✔
1475
                        yyDollar[3].sel.setAlias(yyDollar[4].id)
423✔
1476
                        yyVAL.sels = append(yyDollar[1].sels, yyDollar[3].sel)
423✔
1477
                }
423✔
1478
        case 112:
1,354✔
1479
                yyDollar = yyS[yypt-1 : yypt+1]
1,354✔
1480
                {
2,708✔
1481
                        yyVAL.sel = yyDollar[1].col
1,354✔
1482
                }
1,354✔
1483
        case 113:
31✔
1484
                yyDollar = yyS[yypt-2 : yypt+1]
31✔
1485
                {
62✔
1486
                        yyVAL.sel = &JSONSelector{ColSelector: yyDollar[1].col, fields: yyDollar[2].jsonFields}
31✔
1487
                }
31✔
1488
        case 114:
66✔
1489
                yyDollar = yyS[yypt-4 : yypt+1]
66✔
1490
                {
132✔
1491
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, col: "*"}
66✔
1492
                }
66✔
1493
        case 115:
67✔
1494
                yyDollar = yyS[yypt-4 : yypt+1]
67✔
1495
                {
134✔
1496
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, table: yyDollar[3].col.table, col: yyDollar[3].col.col}
67✔
1497
                }
67✔
1498
        case 116:
31✔
1499
                yyDollar = yyS[yypt-2 : yypt+1]
31✔
1500
                {
62✔
1501
                        yyVAL.jsonFields = []string{yyDollar[2].str}
31✔
1502
                }
31✔
1503
        case 117:
19✔
1504
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
1505
                {
38✔
1506
                        yyVAL.jsonFields = append(yyVAL.jsonFields, yyDollar[3].str)
19✔
1507
                }
19✔
1508
        case 118:
1,403✔
1509
                yyDollar = yyS[yypt-1 : yypt+1]
1,403✔
1510
                {
2,806✔
1511
                        yyVAL.col = &ColSelector{col: yyDollar[1].id}
1,403✔
1512
                }
1,403✔
1513
        case 119:
100✔
1514
                yyDollar = yyS[yypt-3 : yypt+1]
100✔
1515
                {
200✔
1516
                        yyVAL.col = &ColSelector{table: yyDollar[1].id, col: yyDollar[3].id}
100✔
1517
                }
100✔
1518
        case 120:
621✔
1519
                yyDollar = yyS[yypt-3 : yypt+1]
621✔
1520
                {
1,242✔
1521
                        yyDollar[1].tableRef.period = yyDollar[2].period
621✔
1522
                        yyDollar[1].tableRef.as = yyDollar[3].id
621✔
1523
                        yyVAL.ds = yyDollar[1].tableRef
621✔
1524
                }
621✔
1525
        case 121:
11✔
1526
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1527
                {
22✔
1528
                        yyDollar[2].stmt.(*SelectStmt).as = yyDollar[4].id
11✔
1529
                        yyVAL.ds = yyDollar[2].stmt.(DataSource)
11✔
1530
                }
11✔
1531
        case 122:
4✔
1532
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1533
                {
8✔
1534
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}, as: yyDollar[4].id}
4✔
1535
                }
4✔
1536
        case 123:
4✔
1537
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1538
                {
8✔
1539
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}, as: yyDollar[4].id}
4✔
1540
                }
4✔
NEW
1541
        case 124:
×
1542
                yyDollar = yyS[yypt-4 : yypt+1]
×
1543
                {
×
1544
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}}
×
1545
                }
×
1546
        case 125:
1✔
1547
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1548
                {
2✔
1549
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}, as: yyDollar[4].id}
1✔
1550
                }
1✔
1551
        case 126:
6✔
1552
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1553
                {
12✔
1554
                        yyVAL.ds = &FnDataSourceStmt{fnCall: yyDollar[1].value.(*FnCall), as: yyDollar[2].id}
6✔
1555
                }
6✔
1556
        case 127:
2✔
1557
                yyDollar = yyS[yypt-6 : yypt+1]
2✔
1558
                {
4✔
1559
                        yyVAL.ds = &tableRef{table: yyDollar[4].id, history: true, as: yyDollar[6].id}
2✔
1560
                }
2✔
1561
        case 128:
2,480✔
1562
                yyDollar = yyS[yypt-1 : yypt+1]
2,480✔
1563
                {
4,960✔
1564
                        yyVAL.tableRef = &tableRef{table: yyDollar[1].id}
2,480✔
1565
                }
2,480✔
1566
        case 129:
630✔
1567
                yyDollar = yyS[yypt-2 : yypt+1]
630✔
1568
                {
1,260✔
1569
                        yyVAL.period = period{start: yyDollar[1].openPeriod, end: yyDollar[2].openPeriod}
630✔
1570
                }
630✔
1571
        case 130:
561✔
1572
                yyDollar = yyS[yypt-0 : yypt+1]
561✔
1573
                {
1,122✔
1574
                        yyVAL.openPeriod = nil
561✔
1575
                }
561✔
1576
        case 131:
44✔
1577
                yyDollar = yyS[yypt-2 : yypt+1]
44✔
1578
                {
88✔
1579
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
44✔
1580
                }
44✔
1581
        case 132:
25✔
1582
                yyDollar = yyS[yypt-2 : yypt+1]
25✔
1583
                {
50✔
1584
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
25✔
1585
                }
25✔
1586
        case 133:
586✔
1587
                yyDollar = yyS[yypt-0 : yypt+1]
586✔
1588
                {
1,172✔
1589
                        yyVAL.openPeriod = nil
586✔
1590
                }
586✔
1591
        case 134:
33✔
1592
                yyDollar = yyS[yypt-2 : yypt+1]
33✔
1593
                {
66✔
1594
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
33✔
1595
                }
33✔
1596
        case 135:
11✔
1597
                yyDollar = yyS[yypt-2 : yypt+1]
11✔
1598
                {
22✔
1599
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
11✔
1600
                }
11✔
1601
        case 136:
56✔
1602
                yyDollar = yyS[yypt-2 : yypt+1]
56✔
1603
                {
112✔
1604
                        yyVAL.periodInstant = periodInstant{instantType: txInstant, exp: yyDollar[2].exp}
56✔
1605
                }
56✔
1606
        case 137:
57✔
1607
                yyDollar = yyS[yypt-1 : yypt+1]
57✔
1608
                {
114✔
1609
                        yyVAL.periodInstant = periodInstant{instantType: timeInstant, exp: yyDollar[1].exp}
57✔
1610
                }
57✔
1611
        case 138:
616✔
1612
                yyDollar = yyS[yypt-0 : yypt+1]
616✔
1613
                {
1,232✔
1614
                        yyVAL.joins = nil
616✔
1615
                }
616✔
1616
        case 139:
14✔
1617
                yyDollar = yyS[yypt-1 : yypt+1]
14✔
1618
                {
28✔
1619
                        yyVAL.joins = yyDollar[1].joins
14✔
1620
                }
14✔
1621
        case 140:
14✔
1622
                yyDollar = yyS[yypt-1 : yypt+1]
14✔
1623
                {
28✔
1624
                        yyVAL.joins = []*JoinSpec{yyDollar[1].join}
14✔
1625
                }
14✔
1626
        case 141:
5✔
1627
                yyDollar = yyS[yypt-2 : yypt+1]
5✔
1628
                {
10✔
1629
                        yyVAL.joins = append([]*JoinSpec{yyDollar[1].join}, yyDollar[2].joins...)
5✔
1630
                }
5✔
1631
        case 142:
19✔
1632
                yyDollar = yyS[yypt-6 : yypt+1]
19✔
1633
                {
38✔
1634
                        yyVAL.join = &JoinSpec{joinType: yyDollar[1].joinType, ds: yyDollar[3].ds, indexOn: yyDollar[4].ids, cond: yyDollar[6].exp}
19✔
1635
                }
19✔
1636
        case 143:
2✔
1637
                yyDollar = yyS[yypt-0 : yypt+1]
2✔
1638
                {
4✔
1639
                        yyVAL.joinType = InnerJoin
2✔
1640
                }
2✔
1641
        case 144:
17✔
1642
                yyDollar = yyS[yypt-1 : yypt+1]
17✔
1643
                {
34✔
1644
                        yyVAL.joinType = yyDollar[1].joinType
17✔
1645
                }
17✔
1646
        case 145:
341✔
1647
                yyDollar = yyS[yypt-0 : yypt+1]
341✔
1648
                {
682✔
1649
                        yyVAL.exp = nil
341✔
1650
                }
341✔
1651
        case 146:
325✔
1652
                yyDollar = yyS[yypt-2 : yypt+1]
325✔
1653
                {
650✔
1654
                        yyVAL.exp = yyDollar[2].exp
325✔
1655
                }
325✔
1656
        case 147:
597✔
1657
                yyDollar = yyS[yypt-0 : yypt+1]
597✔
1658
                {
1,194✔
1659
                        yyVAL.cols = nil
597✔
1660
                }
597✔
1661
        case 148:
33✔
1662
                yyDollar = yyS[yypt-3 : yypt+1]
33✔
1663
                {
66✔
1664
                        yyVAL.cols = yyDollar[3].cols
33✔
1665
                }
33✔
1666
        case 149:
623✔
1667
                yyDollar = yyS[yypt-0 : yypt+1]
623✔
1668
                {
1,246✔
1669
                        yyVAL.exp = nil
623✔
1670
                }
623✔
1671
        case 150:
7✔
1672
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1673
                {
14✔
1674
                        yyVAL.exp = yyDollar[2].exp
7✔
1675
                }
7✔
1676
        case 151:
627✔
1677
                yyDollar = yyS[yypt-0 : yypt+1]
627✔
1678
                {
1,254✔
1679
                        yyVAL.exp = nil
627✔
1680
                }
627✔
1681
        case 152:
39✔
1682
                yyDollar = yyS[yypt-2 : yypt+1]
39✔
1683
                {
78✔
1684
                        yyVAL.exp = yyDollar[2].exp
39✔
1685
                }
39✔
1686
        case 153:
662✔
1687
                yyDollar = yyS[yypt-0 : yypt+1]
662✔
1688
                {
1,324✔
1689
                        yyVAL.exp = nil
662✔
1690
                }
662✔
1691
        case 154:
4✔
1692
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
1693
                {
8✔
1694
                        yyVAL.exp = yyDollar[2].exp
4✔
1695
                }
4✔
1696
        case 155:
491✔
1697
                yyDollar = yyS[yypt-0 : yypt+1]
491✔
1698
                {
982✔
1699
                        yyVAL.ordcols = nil
491✔
1700
                }
491✔
1701
        case 156:
139✔
1702
                yyDollar = yyS[yypt-3 : yypt+1]
139✔
1703
                {
278✔
1704
                        yyVAL.ordcols = yyDollar[3].ordcols
139✔
1705
                }
139✔
1706
        case 157:
655✔
1707
                yyDollar = yyS[yypt-0 : yypt+1]
655✔
1708
                {
1,310✔
1709
                        yyVAL.ids = nil
655✔
1710
                }
655✔
1711
        case 158:
30✔
1712
                yyDollar = yyS[yypt-4 : yypt+1]
30✔
1713
                {
60✔
1714
                        yyVAL.ids = yyDollar[4].ids
30✔
1715
                }
30✔
1716
        case 159:
139✔
1717
                yyDollar = yyS[yypt-2 : yypt+1]
139✔
1718
                {
278✔
1719
                        yyVAL.ordcols = []*OrdCol{{sel: yyDollar[1].sel, descOrder: yyDollar[2].opt_ord}}
139✔
1720
                }
139✔
1721
        case 160:
27✔
1722
                yyDollar = yyS[yypt-4 : yypt+1]
27✔
1723
                {
54✔
1724
                        yyVAL.ordcols = append(yyDollar[1].ordcols, &OrdCol{sel: yyDollar[3].sel, descOrder: yyDollar[4].opt_ord})
27✔
1725
                }
27✔
1726
        case 161:
54✔
1727
                yyDollar = yyS[yypt-0 : yypt+1]
54✔
1728
                {
108✔
1729
                        yyVAL.opt_ord = false
54✔
1730
                }
54✔
1731
        case 162:
27✔
1732
                yyDollar = yyS[yypt-1 : yypt+1]
27✔
1733
                {
54✔
1734
                        yyVAL.opt_ord = false
27✔
1735
                }
27✔
1736
        case 163:
85✔
1737
                yyDollar = yyS[yypt-1 : yypt+1]
85✔
1738
                {
170✔
1739
                        yyVAL.opt_ord = true
85✔
1740
                }
85✔
1741
        case 164:
1,363✔
1742
                yyDollar = yyS[yypt-0 : yypt+1]
1,363✔
1743
                {
2,726✔
1744
                        yyVAL.id = ""
1,363✔
1745
                }
1,363✔
1746
        case 165:
21✔
1747
                yyDollar = yyS[yypt-1 : yypt+1]
21✔
1748
                {
42✔
1749
                        yyVAL.id = yyDollar[1].id
21✔
1750
                }
21✔
1751
        case 166:
69✔
1752
                yyDollar = yyS[yypt-2 : yypt+1]
69✔
1753
                {
138✔
1754
                        yyVAL.id = yyDollar[2].id
69✔
1755
                }
69✔
1756
        case 167:
205✔
1757
                yyDollar = yyS[yypt-0 : yypt+1]
205✔
1758
                {
410✔
1759
                        yyVAL.checks = nil
205✔
1760
                }
205✔
1761
        case 168:
7✔
1762
                yyDollar = yyS[yypt-4 : yypt+1]
7✔
1763
                {
14✔
1764
                        yyVAL.checks = append([]CheckConstraint{{exp: yyDollar[2].exp}}, yyDollar[4].checks...)
7✔
1765
                }
7✔
1766
        case 169:
3✔
1767
                yyDollar = yyS[yypt-6 : yypt+1]
3✔
1768
                {
6✔
1769
                        yyVAL.checks = append([]CheckConstraint{{name: yyDollar[2].id, exp: yyDollar[4].exp}}, yyDollar[6].checks...)
3✔
1770
                }
3✔
1771
        case 170:
7,363✔
1772
                yyDollar = yyS[yypt-1 : yypt+1]
7,363✔
1773
                {
14,726✔
1774
                        yyVAL.exp = yyDollar[1].exp
7,363✔
1775
                }
7,363✔
1776
        case 171:
627✔
1777
                yyDollar = yyS[yypt-1 : yypt+1]
627✔
1778
                {
1,254✔
1779
                        yyVAL.exp = yyDollar[1].binExp
627✔
1780
                }
627✔
1781
        case 172:
15✔
1782
                yyDollar = yyS[yypt-2 : yypt+1]
15✔
1783
                {
30✔
1784
                        yyVAL.exp = &NotBoolExp{exp: yyDollar[2].exp}
15✔
1785
                }
15✔
1786
        case 173:
10✔
1787
                yyDollar = yyS[yypt-2 : yypt+1]
10✔
1788
                {
20✔
1789
                        yyVAL.exp = &NumExp{left: &Integer{val: 0}, op: SUBSOP, right: yyDollar[2].exp}
10✔
1790
                }
10✔
1791
        case 174:
29✔
1792
                yyDollar = yyS[yypt-4 : yypt+1]
29✔
1793
                {
58✔
1794
                        yyVAL.exp = &LikeBoolExp{val: yyDollar[1].exp, notLike: yyDollar[2].boolean, pattern: yyDollar[4].exp}
29✔
1795
                }
29✔
1796
        case 175:
2✔
1797
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
1798
                {
4✔
1799
                        yyVAL.exp = &ExistsBoolExp{q: (yyDollar[3].stmt).(DataSource)}
2✔
1800
                }
2✔
1801
        case 176:
1✔
1802
                yyDollar = yyS[yypt-6 : yypt+1]
1✔
1803
                {
2✔
1804
                        yyVAL.exp = &InSubQueryExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, q: yyDollar[5].stmt.(*SelectStmt)}
1✔
1805
                }
1✔
1806
        case 177:
14✔
1807
                yyDollar = yyS[yypt-6 : yypt+1]
14✔
1808
                {
28✔
1809
                        yyVAL.exp = &InListExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, values: yyDollar[5].values}
14✔
1810
                }
14✔
1811
        case 178:
548✔
1812
                yyDollar = yyS[yypt-1 : yypt+1]
548✔
1813
                {
1,096✔
1814
                        yyVAL.exp = yyDollar[1].sel
548✔
1815
                }
548✔
1816
        case 179:
6,665✔
1817
                yyDollar = yyS[yypt-1 : yypt+1]
6,665✔
1818
                {
13,330✔
1819
                        yyVAL.exp = yyDollar[1].value
6,665✔
1820
                }
6,665✔
1821
        case 180:
194✔
1822
                yyDollar = yyS[yypt-3 : yypt+1]
194✔
1823
                {
388✔
1824
                        yyVAL.exp = yyDollar[2].exp
194✔
1825
                }
194✔
1826
        case 181:
2✔
1827
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1828
                {
4✔
1829
                        yyVAL.exp = &Cast{val: yyDollar[1].exp, t: yyDollar[3].sqlType}
2✔
1830
                }
2✔
1831
        case 182:
43✔
1832
                yyDollar = yyS[yypt-0 : yypt+1]
43✔
1833
                {
86✔
1834
                        yyVAL.boolean = false
43✔
1835
                }
43✔
1836
        case 183:
1✔
1837
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1838
                {
2✔
1839
                        yyVAL.boolean = true
1✔
1840
                }
1✔
1841
        case 184:
30✔
1842
                yyDollar = yyS[yypt-3 : yypt+1]
30✔
1843
                {
60✔
1844
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: ADDOP, right: yyDollar[3].exp}
30✔
1845
                }
30✔
1846
        case 185:
18✔
1847
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1848
                {
36✔
1849
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: SUBSOP, right: yyDollar[3].exp}
18✔
1850
                }
18✔
1851
        case 186:
6✔
1852
                yyDollar = yyS[yypt-3 : yypt+1]
6✔
1853
                {
12✔
1854
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: DIVOP, right: yyDollar[3].exp}
6✔
1855
                }
6✔
1856
        case 187:
4✔
1857
                yyDollar = yyS[yypt-3 : yypt+1]
4✔
1858
                {
8✔
1859
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: MULTOP, right: yyDollar[3].exp}
4✔
1860
                }
4✔
1861
        case 188:
148✔
1862
                yyDollar = yyS[yypt-3 : yypt+1]
148✔
1863
                {
296✔
1864
                        yyVAL.binExp = &BinBoolExp{left: yyDollar[1].exp, op: yyDollar[2].logicOp, right: yyDollar[3].exp}
148✔
1865
                }
148✔
1866
        case 189:
417✔
1867
                yyDollar = yyS[yypt-3 : yypt+1]
417✔
1868
                {
834✔
1869
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: yyDollar[2].cmpOp, right: yyDollar[3].exp}
417✔
1870
                }
417✔
1871
        case 190:
2✔
1872
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1873
                {
4✔
1874
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: EQ, right: &NullValue{t: AnyType}}
2✔
1875
                }
2✔
1876
        case 191:
2✔
1877
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
1878
                {
4✔
1879
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: NE, right: &NullValue{t: AnyType}}
2✔
1880
                }
2✔
1881
        }
1882
        goto yystack /* stack new state and value */
81,029✔
1883
}
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