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

codenotary / immudb / 18256250200

05 Oct 2025 08:25AM UTC coverage: 89.236% (-0.005%) from 89.241%
18256250200

Pull #2073

gh-ci

ostafen
chore(embedded/sql): Implement EXTRACT FROM TIMESTAMP expressions

Signed-off-by: Stefano Scafiti <stefano.scafiti96@gmail.com>
Pull Request #2073: chore(embedded/sql): Implement EXTRACT FROM TIMESTAMP expressions

410 of 454 new or added lines in 3 files covered. (90.31%)

1 existing line in 1 file now uncovered.

37926 of 42501 relevant lines covered (89.24%)

150261.4 hits per line

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

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

4
import __yyfmt__ "fmt"
5

6
import "fmt"
7

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

12
type yySymType struct {
13
        yys             int
14
        stmts           []SQLStmt
15
        stmt            SQLStmt
16
        datasource      DataSource
17
        colSpec         *ColSpec
18
        cols            []*ColSelector
19
        rows            []*RowSpec
20
        row             *RowSpec
21
        values          []ValueExp
22
        value           ValueExp
23
        id              string
24
        integer         uint64
25
        float           float64
26
        str             string
27
        boolean         bool
28
        blob            []byte
29
        keyword         string
30
        sqlType         SQLValueType
31
        aggFn           AggregateFn
32
        colNames        []string
33
        col             *ColSelector
34
        sel             Selector
35
        targets         []TargetEntry
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
        check           CheckConstraint
47
        exp             ValueExp
48
        binExp          ValueExp
49
        err             error
50
        ordexps         []*OrdExp
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
        whenThenClauses []whenThenClause
62
        tableElem       TableElem
63
        tableElems      []TableElem
64
        timestampField  TimestampFieldType
65
}
66

67
const CREATE = 57346
68
const DROP = 57347
69
const USE = 57348
70
const DATABASE = 57349
71
const USER = 57350
72
const WITH = 57351
73
const PASSWORD = 57352
74
const READ = 57353
75
const READWRITE = 57354
76
const ADMIN = 57355
77
const SNAPSHOT = 57356
78
const HISTORY = 57357
79
const SINCE = 57358
80
const AFTER = 57359
81
const BEFORE = 57360
82
const UNTIL = 57361
83
const TX = 57362
84
const OF = 57363
85
const INTEGER_TYPE = 57364
86
const BOOLEAN_TYPE = 57365
87
const VARCHAR_TYPE = 57366
88
const UUID_TYPE = 57367
89
const BLOB_TYPE = 57368
90
const TIMESTAMP_TYPE = 57369
91
const FLOAT_TYPE = 57370
92
const JSON_TYPE = 57371
93
const TABLE = 57372
94
const UNIQUE = 57373
95
const INDEX = 57374
96
const ON = 57375
97
const ALTER = 57376
98
const ADD = 57377
99
const RENAME = 57378
100
const TO = 57379
101
const COLUMN = 57380
102
const CONSTRAINT = 57381
103
const PRIMARY = 57382
104
const KEY = 57383
105
const CHECK = 57384
106
const GRANT = 57385
107
const REVOKE = 57386
108
const GRANTS = 57387
109
const FOR = 57388
110
const PRIVILEGES = 57389
111
const BEGIN = 57390
112
const TRANSACTION = 57391
113
const COMMIT = 57392
114
const ROLLBACK = 57393
115
const INSERT = 57394
116
const UPSERT = 57395
117
const INTO = 57396
118
const VALUES = 57397
119
const DELETE = 57398
120
const UPDATE = 57399
121
const SET = 57400
122
const CONFLICT = 57401
123
const DO = 57402
124
const NOTHING = 57403
125
const RETURNING = 57404
126
const SELECT = 57405
127
const DISTINCT = 57406
128
const FROM = 57407
129
const JOIN = 57408
130
const HAVING = 57409
131
const WHERE = 57410
132
const GROUP = 57411
133
const BY = 57412
134
const LIMIT = 57413
135
const OFFSET = 57414
136
const ORDER = 57415
137
const ASC = 57416
138
const DESC = 57417
139
const AS = 57418
140
const UNION = 57419
141
const ALL = 57420
142
const CASE = 57421
143
const WHEN = 57422
144
const THEN = 57423
145
const ELSE = 57424
146
const END = 57425
147
const NOT = 57426
148
const LIKE = 57427
149
const IF = 57428
150
const EXISTS = 57429
151
const IN = 57430
152
const IS = 57431
153
const AUTO_INCREMENT = 57432
154
const NULL = 57433
155
const CAST = 57434
156
const SCAST = 57435
157
const SHOW = 57436
158
const DATABASES = 57437
159
const TABLES = 57438
160
const USERS = 57439
161
const BETWEEN = 57440
162
const EXTRACT = 57441
163
const YEAR = 57442
164
const MONTH = 57443
165
const DAY = 57444
166
const HOUR = 57445
167
const MINUTE = 57446
168
const SECOND = 57447
169
const NPARAM = 57448
170
const PPARAM = 57449
171
const JOINTYPE = 57450
172
const AND = 57451
173
const OR = 57452
174
const CMPOP = 57453
175
const NOT_MATCHES_OP = 57454
176
const IDENTIFIER = 57455
177
const INTEGER_LIT = 57456
178
const FLOAT_LIT = 57457
179
const VARCHAR_LIT = 57458
180
const BOOLEAN_LIT = 57459
181
const BLOB_LIT = 57460
182
const AGGREGATE_FUNC = 57461
183
const ERROR = 57462
184
const DOT = 57463
185
const ARROW = 57464
186
const STMT_SEPARATOR = 57465
187

188
var yyToknames = [...]string{
189
        "$end",
190
        "error",
191
        "$unk",
192
        "CREATE",
193
        "DROP",
194
        "USE",
195
        "DATABASE",
196
        "USER",
197
        "WITH",
198
        "PASSWORD",
199
        "READ",
200
        "READWRITE",
201
        "ADMIN",
202
        "SNAPSHOT",
203
        "HISTORY",
204
        "SINCE",
205
        "AFTER",
206
        "BEFORE",
207
        "UNTIL",
208
        "TX",
209
        "OF",
210
        "INTEGER_TYPE",
211
        "BOOLEAN_TYPE",
212
        "VARCHAR_TYPE",
213
        "UUID_TYPE",
214
        "BLOB_TYPE",
215
        "TIMESTAMP_TYPE",
216
        "FLOAT_TYPE",
217
        "JSON_TYPE",
218
        "TABLE",
219
        "UNIQUE",
220
        "INDEX",
221
        "ON",
222
        "ALTER",
223
        "ADD",
224
        "RENAME",
225
        "TO",
226
        "COLUMN",
227
        "CONSTRAINT",
228
        "PRIMARY",
229
        "KEY",
230
        "CHECK",
231
        "GRANT",
232
        "REVOKE",
233
        "GRANTS",
234
        "FOR",
235
        "PRIVILEGES",
236
        "BEGIN",
237
        "TRANSACTION",
238
        "COMMIT",
239
        "ROLLBACK",
240
        "INSERT",
241
        "UPSERT",
242
        "INTO",
243
        "VALUES",
244
        "DELETE",
245
        "UPDATE",
246
        "SET",
247
        "CONFLICT",
248
        "DO",
249
        "NOTHING",
250
        "RETURNING",
251
        "SELECT",
252
        "DISTINCT",
253
        "FROM",
254
        "JOIN",
255
        "HAVING",
256
        "WHERE",
257
        "GROUP",
258
        "BY",
259
        "LIMIT",
260
        "OFFSET",
261
        "ORDER",
262
        "ASC",
263
        "DESC",
264
        "AS",
265
        "UNION",
266
        "ALL",
267
        "CASE",
268
        "WHEN",
269
        "THEN",
270
        "ELSE",
271
        "END",
272
        "NOT",
273
        "LIKE",
274
        "IF",
275
        "EXISTS",
276
        "IN",
277
        "IS",
278
        "AUTO_INCREMENT",
279
        "NULL",
280
        "CAST",
281
        "SCAST",
282
        "SHOW",
283
        "DATABASES",
284
        "TABLES",
285
        "USERS",
286
        "BETWEEN",
287
        "EXTRACT",
288
        "YEAR",
289
        "MONTH",
290
        "DAY",
291
        "HOUR",
292
        "MINUTE",
293
        "SECOND",
294
        "NPARAM",
295
        "PPARAM",
296
        "JOINTYPE",
297
        "AND",
298
        "OR",
299
        "CMPOP",
300
        "NOT_MATCHES_OP",
301
        "IDENTIFIER",
302
        "INTEGER_LIT",
303
        "FLOAT_LIT",
304
        "VARCHAR_LIT",
305
        "BOOLEAN_LIT",
306
        "BLOB_LIT",
307
        "AGGREGATE_FUNC",
308
        "ERROR",
309
        "DOT",
310
        "ARROW",
311
        "','",
312
        "'+'",
313
        "'-'",
314
        "'*'",
315
        "'/'",
316
        "'%'",
317
        "'.'",
318
        "STMT_SEPARATOR",
319
        "'('",
320
        "')'",
321
        "'['",
322
        "']'",
323
}
324

325
var yyStatenames = [...]string{}
326

327
const yyEofCode = 1
328
const yyErrCode = 2
329
const yyInitialStackSize = 16
330

331
var yyExca = [...]int16{
332
        -1, 1,
333
        1, -1,
334
        -2, 0,
335
        -1, 138,
336
        85, 276,
337
        88, 276,
338
        -2, 260,
339
        -1, 369,
340
        66, 209,
341
        -2, 204,
342
        -1, 427,
343
        66, 209,
344
        -2, 206,
345
}
346

347
const yyPrivate = 57344
348

349
const yyLast = 1948
350

351
var yyAct = [...]int16{
352
        189, 521, 166, 420, 152, 277, 212, 160, 363, 283,
353
        203, 359, 274, 245, 311, 426, 334, 358, 6, 333,
354
        407, 398, 53, 246, 107, 206, 247, 100, 135, 98,
355
        101, 271, 489, 134, 106, 138, 111, 101, 140, 101,
356
        187, 143, 403, 360, 402, 496, 361, 361, 339, 490,
357
        395, 417, 53, 53, 53, 491, 485, 484, 164, 479,
358
        471, 361, 113, 361, 115, 361, 339, 483, 482, 478,
359
        457, 476, 411, 464, 362, 338, 437, 435, 434, 432,
360
        58, 394, 59, 392, 391, 384, 310, 406, 56, 60,
361
        396, 383, 377, 376, 375, 132, 57, 172, 170, 176,
362
        374, 169, 174, 171, 173, 344, 261, 61, 242, 62,
363
        63, 64, 240, 239, 65, 101, 66, 236, 67, 68,
364
        229, 201, 69, 70, 71, 72, 73, 74, 179, 24,
365
        175, 75, 76, 327, 77, 213, 226, 227, 228, 520,
366
        191, 381, 223, 224, 208, 231, 204, 514, 234, 417,
367
        395, 190, 211, 119, 225, 200, 223, 224, 238, 219,
368
        241, 78, 233, 192, 390, 217, 353, 346, 220, 79,
369
        328, 80, 87, 168, 253, 81, 82, 83, 84, 85,
370
        86, 218, 222, 101, 282, 455, 454, 232, 54, 260,
371
        473, 38, 461, 460, 223, 224, 436, 207, 352, 343,
372
        269, 281, 270, 209, 127, 279, 400, 48, 254, 116,
373
        114, 105, 291, 53, 215, 216, 280, 292, 290, 273,
374
        429, 273, 102, 235, 22, 488, 258, 259, 321, 322,
375
        323, 324, 325, 326, 276, 380, 487, 373, 250, 255,
376
        244, 331, 272, 335, 330, 294, 336, 101, 307, 293,
377
        22, 262, 342, 243, 295, 21, 298, 453, 301, 101,
378
        275, 103, 302, 303, 452, 341, 297, 101, 304, 305,
379
        306, 442, 337, 296, 347, 480, 299, 371, 202, 300,
380
        181, 21, 178, 368, 345, 22, 366, 177, 445, 369,
381
        348, 309, 349, 213, 213, 126, 88, 378, 379, 393,
382
        332, 10, 12, 11, 372, 507, 386, 367, 387, 370,
383
        388, 198, 522, 523, 421, 364, 21, 513, 502, 494,
384
        275, 204, 250, 501, 350, 351, 470, 182, 91, 389,
385
        210, 13, 51, 95, 492, 382, 462, 416, 124, 50,
386
        14, 15, 49, 93, 25, 7, 118, 8, 9, 16,
387
        17, 128, 404, 18, 19, 505, 340, 405, 499, 263,
388
        22, 335, 412, 397, 355, 422, 266, 267, 264, 265,
389
        354, 511, 423, 213, 413, 424, 195, 430, 357, 256,
390
        418, 284, 180, 120, 335, 117, 365, 443, 444, 431,
391
        446, 21, 35, 89, 90, 92, 448, 104, 250, 399,
392
        440, 52, 439, 275, 433, 456, 193, 194, 447, 268,
393
        449, 257, 37, 450, 33, 196, 34, 438, 183, 458,
394
        419, 415, 465, 2, 42, 46, 26, 30, 467, 463,
395
        414, 121, 122, 123, 36, 213, 468, 213, 213, 472,
396
        213, 474, 475, 469, 477, 466, 481, 278, 96, 27,
397
        29, 28, 186, 185, 47, 250, 109, 110, 199, 275,
398
        408, 409, 410, 31, 197, 275, 23, 167, 55, 320,
399
        32, 459, 43, 53, 308, 40, 45, 44, 290, 356,
400
        495, 497, 399, 41, 312, 313, 314, 315, 316, 317,
401
        318, 319, 205, 498, 221, 451, 486, 506, 39, 213,
402
        517, 503, 508, 504, 401, 131, 129, 510, 142, 493,
403
        146, 139, 515, 137, 518, 512, 516, 133, 385, 519,
404
        58, 524, 59, 148, 500, 230, 525, 248, 56, 60,
405
        428, 427, 425, 184, 108, 125, 57, 172, 170, 176,
406
        94, 169, 174, 171, 173, 237, 149, 61, 150, 62,
407
        63, 64, 509, 20, 65, 5, 66, 4, 67, 68,
408
        3, 1, 69, 70, 71, 72, 73, 74, 0, 0,
409
        175, 75, 76, 0, 77, 0, 0, 0, 22, 0,
410
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
411
        0, 0, 0, 0, 144, 0, 0, 0, 0, 136,
412
        0, 78, 141, 0, 0, 0, 163, 159, 0, 441,
413
        0, 80, 87, 168, 151, 81, 82, 83, 84, 85,
414
        86, 161, 162, 0, 0, 0, 0, 0, 165, 154,
415
        155, 156, 157, 158, 153, 58, 0, 59, 0, 0,
416
        145, 0, 0, 56, 60, 0, 147, 0, 0, 0,
417
        188, 57, 172, 170, 176, 0, 169, 174, 171, 173,
418
        0, 0, 61, 0, 62, 63, 64, 0, 0, 65,
419
        0, 66, 0, 67, 68, 0, 0, 69, 70, 71,
420
        72, 73, 74, 0, 0, 175, 75, 76, 0, 77,
421
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
422
        0, 0, 0, 0, 0, 0, 0, 0, 0, 144,
423
        0, 0, 0, 0, 136, 0, 78, 141, 0, 0,
424
        0, 163, 159, 0, 79, 0, 80, 87, 168, 151,
425
        81, 82, 83, 84, 85, 86, 161, 162, 0, 0,
426
        0, 0, 0, 165, 154, 155, 156, 157, 158, 153,
427
        58, 0, 59, 0, 0, 145, 0, 0, 56, 60,
428
        0, 147, 0, 0, 0, 0, 57, 172, 170, 176,
429
        0, 169, 174, 171, 173, 0, 0, 61, 0, 62,
430
        63, 64, 0, 0, 65, 0, 66, 0, 67, 68,
431
        0, 0, 69, 70, 71, 72, 73, 74, 0, 0,
432
        175, 75, 76, 0, 77, 0, 0, 0, 0, 0,
433
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
434
        0, 0, 0, 0, 144, 0, 0, 0, 0, 136,
435
        0, 78, 141, 0, 0, 0, 163, 159, 0, 79,
436
        0, 80, 87, 168, 151, 81, 82, 83, 84, 85,
437
        86, 161, 162, 0, 0, 0, 0, 0, 165, 154,
438
        155, 156, 157, 158, 153, 58, 0, 59, 0, 0,
439
        145, 130, 0, 56, 60, 0, 147, 0, 0, 0,
440
        0, 57, 172, 170, 176, 0, 169, 174, 171, 173,
441
        0, 0, 61, 0, 62, 63, 64, 0, 0, 65,
442
        0, 66, 0, 67, 68, 0, 0, 69, 70, 71,
443
        72, 73, 74, 0, 0, 175, 75, 76, 0, 77,
444
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
445
        0, 0, 0, 0, 0, 0, 0, 0, 0, 144,
446
        0, 0, 0, 0, 136, 0, 78, 141, 0, 0,
447
        0, 163, 159, 0, 79, 0, 80, 87, 168, 151,
448
        81, 82, 83, 84, 85, 86, 161, 162, 0, 0,
449
        0, 0, 0, 165, 154, 155, 156, 157, 158, 153,
450
        58, 0, 59, 0, 0, 145, 0, 0, 56, 60,
451
        0, 147, 0, 0, 0, 0, 57, 172, 170, 176,
452
        0, 169, 174, 171, 173, 0, 0, 61, 0, 62,
453
        63, 64, 0, 0, 65, 0, 66, 0, 67, 68,
454
        0, 0, 69, 70, 71, 72, 73, 74, 0, 0,
455
        175, 75, 76, 0, 77, 0, 0, 0, 0, 0,
456
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
457
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
458
        0, 78, 233, 0, 0, 0, 163, 159, 0, 79,
459
        0, 80, 87, 168, 151, 81, 82, 83, 84, 85,
460
        86, 161, 162, 0, 0, 0, 0, 0, 165, 154,
461
        155, 156, 157, 158, 153, 58, 0, 59, 0, 0,
462
        145, 0, 0, 56, 60, 0, 147, 0, 0, 0,
463
        0, 57, 172, 170, 176, 0, 169, 174, 171, 173,
464
        0, 0, 61, 0, 62, 63, 64, 0, 0, 65,
465
        0, 66, 0, 67, 68, 0, 0, 69, 70, 71,
466
        72, 73, 74, 0, 0, 175, 75, 76, 0, 77,
467
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
468
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
469
        0, 0, 0, 0, 0, 0, 78, 233, 0, 0,
470
        0, 0, 0, 0, 79, 0, 80, 87, 168, 253,
471
        81, 82, 83, 84, 85, 86, 58, 0, 59, 0,
472
        0, 0, 0, 54, 56, 60, 0, 0, 0, 0,
473
        0, 0, 57, 0, 0, 0, 329, 0, 0, 0,
474
        0, 288, 0, 61, 0, 62, 63, 64, 0, 0,
475
        65, 0, 66, 0, 67, 68, 0, 0, 69, 70,
476
        71, 72, 73, 74, 0, 0, 0, 75, 76, 0,
477
        77, 0, 0, 0, 0, 0, 0, 0, 0, 0,
478
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
479
        0, 0, 0, 0, 0, 0, 0, 78, 0, 0,
480
        0, 0, 0, 0, 0, 79, 286, 287, 289, 0,
481
        0, 81, 82, 83, 84, 85, 86, 58, 0, 59,
482
        0, 0, 0, 0, 165, 56, 60, 0, 0, 0,
483
        0, 0, 0, 57, 172, 170, 176, 0, 169, 174,
484
        171, 173, 285, 0, 61, 0, 62, 63, 64, 0,
485
        0, 252, 249, 66, 251, 67, 68, 0, 0, 69,
486
        70, 71, 72, 73, 74, 0, 0, 175, 75, 76,
487
        0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
488
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
489
        0, 0, 0, 0, 0, 0, 0, 0, 78, 233,
490
        0, 0, 0, 0, 0, 0, 79, 0, 80, 87,
491
        168, 253, 81, 82, 83, 84, 85, 86, 58, 0,
492
        59, 0, 0, 0, 0, 54, 56, 60, 0, 0,
493
        0, 0, 0, 0, 57, 172, 170, 176, 0, 169,
494
        174, 171, 173, 0, 0, 61, 0, 62, 63, 64,
495
        0, 0, 65, 0, 66, 0, 67, 68, 0, 0,
496
        69, 70, 71, 72, 73, 74, 0, 0, 175, 75,
497
        76, 0, 77, 0, 0, 0, 0, 0, 0, 0,
498
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
499
        0, 0, 0, 0, 0, 0, 0, 0, 0, 78,
500
        233, 0, 0, 0, 0, 0, 0, 79, 0, 80,
501
        87, 168, 253, 81, 82, 83, 84, 85, 86, 58,
502
        0, 59, 0, 0, 0, 0, 54, 56, 60, 0,
503
        0, 0, 0, 0, 0, 57, 0, 0, 0, 0,
504
        0, 0, 0, 0, 0, 0, 61, 0, 62, 63,
505
        64, 0, 0, 65, 0, 66, 0, 67, 68, 0,
506
        0, 69, 70, 71, 72, 73, 74, 0, 0, 0,
507
        75, 76, 0, 77, 0, 0, 0, 0, 0, 0,
508
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
509
        214, 0, 0, 0, 0, 0, 0, 0, 0, 0,
510
        78, 0, 0, 0, 58, 0, 59, 0, 79, 0,
511
        80, 87, 56, 60, 81, 82, 83, 84, 85, 86,
512
        57, 0, 0, 0, 0, 0, 0, 54, 0, 0,
513
        0, 61, 112, 62, 63, 64, 0, 0, 65, 0,
514
        66, 0, 67, 68, 0, 0, 69, 70, 71, 72,
515
        73, 74, 0, 0, 0, 75, 76, 0, 77, 0,
516
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
517
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
518
        0, 0, 0, 0, 0, 78, 0, 0, 0, 58,
519
        0, 59, 0, 79, 0, 80, 87, 56, 60, 81,
520
        82, 83, 84, 85, 86, 57, 0, 0, 0, 0,
521
        0, 0, 54, 0, 0, 0, 61, 0, 62, 63,
522
        64, 0, 0, 65, 0, 66, 0, 67, 68, 0,
523
        0, 69, 70, 71, 72, 73, 74, 0, 0, 0,
524
        75, 76, 0, 77, 0, 0, 0, 0, 0, 0,
525
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
526
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
527
        78, 0, 0, 0, 58, 0, 59, 0, 79, 0,
528
        80, 87, 56, 60, 81, 82, 83, 84, 85, 86,
529
        57, 0, 0, 0, 0, 0, 0, 54, 0, 0,
530
        0, 61, 0, 62, 63, 64, 0, 0, 65, 0,
531
        66, 0, 67, 68, 0, 0, 69, 70, 71, 72,
532
        73, 74, 0, 0, 0, 75, 76, 0, 77, 0,
533
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
534
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
535
        0, 0, 0, 0, 0, 99, 0, 0, 0, 58,
536
        0, 59, 0, 79, 0, 80, 87, 56, 60, 81,
537
        82, 83, 84, 85, 86, 57, 0, 0, 0, 0,
538
        0, 0, 54, 0, 0, 0, 61, 0, 62, 63,
539
        64, 0, 0, 65, 0, 66, 0, 67, 68, 0,
540
        0, 69, 70, 71, 72, 73, 74, 0, 0, 0,
541
        75, 76, 0, 77, 0, 0, 0, 0, 0, 0,
542
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
543
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
544
        97, 0, 0, 0, 0, 0, 0, 0, 79, 0,
545
        80, 87, 0, 0, 81, 82, 83, 84, 85, 86,
546
        0, 0, 0, 0, 0, 0, 0, 54,
547
}
548

549
var yyPact = [...]int16{
550
        297, -1000, -1000, -1, -1000, -1000, -1000, 295, -1000, -1000,
551
        419, 456, 384, 404, 420, 420, 288, 285, 267, 1664,
552
        219, 298, 269, -1000, 297, -1000, 1834, 1749, 175, 365,
553
        98, 1664, 440, 1664, 1579, 97, 1664, 96, 352, 299,
554
        30, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 350, 1664,
555
        1664, 1664, 280, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
556
        -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
557
        -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
558
        -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 217, -1000,
559
        -1000, 91, -1000, 305, 745, -1000, -1000, 203, -1000, 198,
560
        -3, -1000, 349, 196, 175, 409, -1000, -1000, 434, 630,
561
        630, -1000, 1664, 42, -1000, 371, 406, 457, -1000, 420,
562
        451, -10, -10, 253, 84, 161, -1000, -1000, 90, 265,
563
        -1000, 29, 1494, 104, 106, -1000, 860, -1000, 70, -1000,
564
        10, -11, -1000, -1000, 860, 975, -1000, 860, 130, -1000,
565
        -1000, -14, 36, -18, -1000, -1000, -1000, -1000, -1000, -19,
566
        -1000, -1000, -1000, -1000, 39, -23, -1000, -1000, -1000, -1000,
567
        -1000, -1000, -1000, -1000, -1000, -1000, -1000, 166, 153, 1292,
568
        1664, 152, 346, 401, -1000, 630, 630, -1000, 860, -1000,
569
        -1000, -25, 1393, 321, 331, 328, 399, 1664, -1000, 1664,
570
        187, 1393, 187, 441, 860, 78, -1000, 73, -1000, -1000,
571
        1191, 860, -1000, -1000, 1664, 860, 860, -1000, 975, 182,
572
        975, 191, 975, 975, 975, -1000, 975, 975, 975, 161,
573
        211, -1000, -1000, -1000, -46, 462, 128, 11, 54, 1090,
574
        860, 1393, 860, 1664, 1664, -57, -1000, -1000, -1000, 315,
575
        462, 860, 86, -1000, -26, -1000, 1664, 51, -1000, -1000,
576
        -1000, 1393, -1000, 1393, 1664, 1393, 1393, 85, 50, 333,
577
        327, 345, -88, -1000, -58, -1000, -1000, 244, 354, -1000,
578
        441, 84, 860, 441, 440, 222, -31, -37, -38, -39,
579
        1494, 1494, -1000, 106, -1000, 18, -1000, 144, 32, 975,
580
        -40, 18, 10, 10, -1000, -1000, -1000, -47, 226, 860,
581
        -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
582
        264, -1000, -1000, -1000, -1000, -1000, -1000, 48, -1000, -48,
583
        -49, 223, -1000, -51, 27, -1000, -1000, -41, -1000, 1292,
584
        75, -89, -1000, 310, 1393, -44, 449, -60, -1000, -1000,
585
        325, -1000, -1000, 449, 422, 413, -1000, 278, 26, -1000,
586
        860, 1393, -1000, 242, 860, 339, 244, -1000, -1000, 112,
587
        1494, -88, -53, 383, -54, -55, 83, -56, -1000, -1000,
588
        -1000, 975, 18, 515, -1000, 188, 860, 860, 207, 860,
589
        -1000, -1000, -1000, 462, -1000, 860, 1292, -1000, -1000, -1000,
590
        1393, 173, 72, 71, 860, -62, 1393, -1000, -1000, -1000,
591
        -1000, -1000, 1393, -1000, 80, 79, 276, -88, -59, -1000,
592
        -1000, 860, -1000, 75, 242, 253, -1000, 112, 260, -1000,
593
        -1000, -72, 1494, 77, 1494, 1494, -61, 1494, 18, -63,
594
        -73, 298, -1000, 194, -1000, 860, -64, -65, -1000, -75,
595
        -76, 146, -1000, 134, -102, -83, -1000, -1000, -77, -1000,
596
        -1000, -1000, 273, -1000, -1000, -1000, -1000, -1000, 250, -1000,
597
        1191, -1000, -1000, -87, -1000, -1000, -1000, -1000, -1000, -1000,
598
        860, -1000, -1000, -1000, -1000, -1000, 318, -1000, -1000, -1000,
599
        -1000, -1000, -1000, 256, 248, 441, 1494, -1000, -1000, 314,
600
        232, 860, 1393, 338, -1000, -1000, 244, 247, -1000, 24,
601
        -1000, 860, 242, 860, 1393, -1000, -1000, 16, 238, -1000,
602
        860, -1000, -1000, -1000, 238, -1000,
603
}
604

605
var yyPgo = [...]int16{
606
        0, 561, 423, 560, 557, 555, 18, 553, 26, 12,
607
        155, 21, 552, 17, 11, 16, 19, 548, 7, 546,
608
        545, 4, 540, 535, 9, 31, 381, 24, 534, 533,
609
        40, 532, 15, 531, 530, 527, 23, 13, 0, 525,
610
        10, 524, 523, 518, 517, 33, 513, 511, 35, 28,
611
        38, 41, 510, 509, 8, 3, 508, 506, 505, 504,
612
        6, 500, 497, 1, 5, 222, 496, 495, 494, 493,
613
        25, 492, 479, 20, 475, 191, 474, 469, 14, 468,
614
        467, 2, 27, 58, 466,
615
}
616

617
var yyR1 = [...]int8{
618
        0, 1, 2, 2, 84, 84, 3, 3, 3, 4,
619
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
620
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
621
        4, 4, 4, 4, 75, 75, 75, 74, 74, 74,
622
        74, 74, 74, 74, 73, 73, 73, 73, 65, 65,
623
        5, 5, 5, 5, 25, 25, 72, 72, 71, 71,
624
        70, 13, 13, 14, 12, 12, 16, 16, 15, 15,
625
        17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
626
        78, 78, 78, 78, 78, 78, 78, 78, 18, 37,
627
        37, 36, 36, 36, 8, 69, 69, 59, 59, 59,
628
        66, 66, 67, 67, 67, 6, 6, 6, 6, 6,
629
        6, 6, 6, 7, 7, 23, 23, 22, 22, 57,
630
        57, 58, 58, 19, 19, 19, 19, 20, 20, 21,
631
        21, 82, 83, 83, 9, 9, 11, 11, 10, 10,
632
        80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
633
        80, 81, 81, 79, 79, 79, 79, 79, 79, 79,
634
        79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
635
        79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
636
        79, 79, 79, 79, 79, 24, 24, 24, 24, 24,
637
        24, 24, 24, 24, 26, 27, 28, 28, 28, 29,
638
        29, 29, 30, 30, 31, 31, 32, 32, 33, 34,
639
        34, 40, 40, 53, 53, 41, 41, 54, 54, 55,
640
        55, 62, 62, 64, 64, 61, 61, 63, 63, 63,
641
        60, 60, 60, 35, 35, 39, 39, 56, 76, 76,
642
        43, 43, 38, 44, 44, 45, 45, 49, 49, 46,
643
        46, 46, 46, 46, 46, 46, 47, 47, 47, 47,
644
        47, 48, 48, 48, 50, 50, 50, 50, 51, 51,
645
        52, 52, 42, 42, 42, 42, 68, 68, 77, 77,
646
        77, 77, 77, 77,
647
}
648

649
var yyR2 = [...]int8{
650
        0, 1, 2, 3, 0, 1, 1, 1, 1, 2,
651
        1, 1, 1, 6, 3, 3, 3, 9, 6, 3,
652
        8, 9, 7, 5, 6, 6, 8, 6, 6, 7,
653
        7, 3, 8, 8, 2, 1, 3, 1, 1, 1,
654
        1, 1, 1, 1, 0, 1, 1, 1, 0, 3,
655
        6, 5, 7, 8, 2, 1, 0, 4, 1, 3,
656
        3, 1, 3, 3, 1, 3, 0, 1, 1, 3,
657
        1, 1, 1, 1, 1, 6, 1, 1, 1, 1,
658
        1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
659
        3, 1, 1, 3, 6, 0, 2, 0, 3, 3,
660
        0, 1, 0, 1, 2, 1, 4, 2, 2, 3,
661
        2, 2, 4, 13, 3, 0, 1, 0, 1, 1,
662
        1, 2, 4, 1, 2, 4, 4, 2, 3, 1,
663
        3, 1, 1, 1, 1, 3, 1, 3, 0, 3,
664
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
665
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
666
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
667
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
668
        1, 1, 1, 1, 1, 3, 4, 4, 4, 4,
669
        4, 4, 2, 6, 1, 2, 0, 2, 2, 0,
670
        2, 2, 2, 1, 0, 1, 1, 2, 6, 0,
671
        1, 0, 2, 0, 3, 0, 2, 0, 2, 0,
672
        2, 0, 3, 0, 4, 2, 4, 0, 1, 1,
673
        0, 1, 2, 2, 4, 0, 1, 5, 4, 5,
674
        0, 2, 1, 3, 1, 3, 1, 2, 1, 3,
675
        3, 4, 5, 4, 3, 1, 4, 6, 6, 1,
676
        1, 3, 3, 1, 3, 3, 3, 1, 2, 1,
677
        3, 1, 1, 1, 3, 6, 0, 1, 1, 1,
678
        1, 1, 1, 1,
679
}
680

681
var yyChk = [...]int16{
682
        -1000, -1, -2, -3, -4, -5, -6, 48, 50, 51,
683
        4, 6, 5, 34, 43, 44, 52, 53, 56, 57,
684
        -7, 94, 63, -84, 130, 49, 7, 30, 32, 31,
685
        8, 7, 14, 30, 32, 8, 30, 8, -75, 78,
686
        -74, 63, 4, 52, 57, 56, 5, 34, -75, 54,
687
        54, 65, -26, -81, 113, -79, 13, 21, 5, 7,
688
        14, 32, 34, 35, 36, 39, 41, 43, 44, 47,
689
        48, 49, 50, 51, 52, 56, 57, 59, 86, 94,
690
        96, 100, 101, 102, 103, 104, 105, 97, 77, 95,
691
        96, 30, 97, 45, -22, 64, -2, 86, -81, 86,
692
        -82, -81, -65, 86, 32, 113, -81, -27, -28, 16,
693
        17, -81, 33, -82, 113, -82, 113, 33, 47, 123,
694
        33, -26, -26, -26, 58, -23, 78, 113, 46, -57,
695
        126, -58, -38, -44, -45, -49, 84, -46, -48, -47,
696
        -50, 87, -56, -51, 79, 125, -52, 131, -42, -19,
697
        -17, 99, -21, 119, 114, 115, 116, 117, 118, 92,
698
        -18, 106, 107, 91, -83, 113, -81, -80, 98, 26,
699
        23, 28, 22, 29, 27, 55, 24, 84, 84, 131,
700
        33, 84, -65, 9, -29, 19, 18, -30, 20, -38,
701
        -30, -82, 121, 35, 36, 5, 9, 7, -75, 7,
702
        -10, 131, -10, -40, 68, -71, -70, 113, -6, 113,
703
        65, 123, -60, -81, 76, 110, 109, -49, 111, 89,
704
        98, -68, 112, 124, 125, 84, 126, 127, 128, 131,
705
        -39, -38, -51, 87, -38, 93, 131, -20, 122, 131,
706
        131, 121, 131, 87, 87, -37, -36, -8, -35, 40,
707
        -83, 42, 39, 99, -82, 87, 33, 10, -30, -30,
708
        -38, 131, -83, 38, 37, 38, 38, 39, 10, -81,
709
        -81, -25, 55, -6, -9, -83, -25, -64, 6, -38,
710
        -40, 123, 111, -24, -26, 131, 95, 96, 30, 97,
711
        -18, -38, -81, -45, -49, -48, 91, 84, -48, 85,
712
        88, -48, -50, -50, -51, -51, -51, -6, -76, 80,
713
        132, -78, 22, 23, 24, 25, 26, 27, 28, 29,
714
        -77, 100, 101, 102, 103, 104, 105, 122, 116, 126,
715
        -21, -38, -83, -16, -15, -38, -81, -82, 132, 123,
716
        41, -78, -38, 113, 131, -82, 116, -9, -8, -82,
717
        -83, -83, 113, 116, 37, 37, -72, 33, -13, -14,
718
        131, 123, 132, -54, 71, 32, -64, -70, -38, -64,
719
        -27, 55, -6, 15, 131, 131, 131, 131, -60, -60,
720
        91, 109, -48, 131, 132, -43, 80, 82, -38, 65,
721
        116, 132, 132, 76, 132, 123, 131, -36, -11, -83,
722
        131, -59, 133, 131, 42, -9, 131, -73, 11, 12,
723
        13, 132, 37, -73, 8, 8, 59, 123, -16, -83,
724
        -55, 72, -38, 33, -54, -31, -32, -33, -34, 108,
725
        -60, -13, 132, 21, 132, 132, 113, 132, -48, -6,
726
        -15, 94, 83, -38, -38, 81, -38, -78, -38, -37,
727
        -9, -67, 91, 84, 114, 114, -38, 132, -9, -83,
728
        113, 113, 60, -14, 132, -38, -11, -55, -40, -32,
729
        66, 132, -60, 113, -60, -60, 132, -60, 132, 132,
730
        81, -38, 132, 132, 132, 132, -66, 90, 91, 134,
731
        132, 132, 61, -53, 69, -24, 132, -38, -69, 40,
732
        -41, 67, 70, -64, -60, 41, -62, 73, -38, -12,
733
        -21, 33, -54, 70, 123, -38, -55, -61, -38, -21,
734
        123, -63, 74, 75, -38, -63,
735
}
736

737
var yyDef = [...]int16{
738
        0, -2, 1, 4, 6, 7, 8, 10, 11, 12,
739
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
740
        105, 0, 117, 2, 5, 9, 0, 0, 48, 0,
741
        0, 0, 196, 0, 0, 0, 0, 0, 0, 0,
742
        35, 37, 38, 39, 40, 41, 42, 43, 0, 0,
743
        0, 0, 0, 194, 151, 152, 153, 154, 155, 156,
744
        157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
745
        167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
746
        177, 178, 179, 180, 181, 182, 183, 184, 115, 107,
747
        108, 0, 110, 111, 0, 118, 3, 175, 14, 175,
748
        0, 131, 0, 0, 48, 0, 15, 16, 199, 0,
749
        0, 19, 0, 0, 31, 0, 0, 0, 34, 0,
750
        0, 138, 138, 211, 0, 0, 116, 109, 0, 114,
751
        119, 120, 230, 242, 244, 246, 0, 248, -2, 255,
752
        263, 143, 259, 267, 235, 0, 269, 0, 271, 272,
753
        273, 144, 123, 0, 70, 71, 72, 73, 74, 0,
754
        76, 77, 78, 79, 129, 151, 132, 133, 140, 141,
755
        142, 145, 146, 147, 148, 149, 150, 0, 0, 0,
756
        0, 0, 0, 0, 195, 0, 0, 197, 0, 203,
757
        198, 0, 0, 0, 0, 0, 0, 0, 36, 0,
758
        0, 0, 0, 223, 0, 211, 58, 0, 106, 112,
759
        0, 0, 121, 231, 0, 0, 0, 247, 0, 0,
760
        0, 0, 0, 0, 0, 277, 0, 0, 0, 0,
761
        0, 236, 268, 143, 0, 0, 0, 124, 0, 0,
762
        0, 0, 66, 0, 0, 0, 89, 91, 92, 0,
763
        0, 0, 162, 144, 0, 49, 0, 0, 200, 201,
764
        202, 0, 23, 0, 0, 0, 0, 0, 0, 0,
765
        0, 56, 0, 55, 0, 134, 51, 217, 0, 212,
766
        223, 0, 0, 223, 196, 0, 0, 177, 0, 184,
767
        230, 230, 232, 243, 245, 249, 250, 0, 0, 0,
768
        0, 254, 261, 262, 264, 265, 266, 0, 240, 0,
769
        270, 274, 80, 81, 82, 83, 84, 85, 86, 87,
770
        0, 278, 279, 280, 281, 282, 283, 0, 127, 0,
771
        0, 0, 130, 0, 67, 68, 13, 0, 18, 0,
772
        0, 97, 233, 0, 0, 0, 44, 0, 24, 25,
773
        0, 27, 28, 44, 0, 0, 50, 0, 54, 61,
774
        66, 0, 139, 219, 0, 0, 217, 59, 60, -2,
775
        230, 0, 0, 0, 0, 0, 0, 0, 192, 122,
776
        251, 0, 253, 0, 256, 0, 0, 0, 0, 0,
777
        128, 125, 126, 0, 88, 0, 0, 90, 93, 136,
778
        0, 102, 0, 0, 0, 0, 0, 29, 45, 46,
779
        47, 22, 0, 30, 0, 0, 0, 0, 0, 135,
780
        52, 0, 218, 0, 219, 211, 205, -2, 0, 210,
781
        185, 0, 230, 0, 230, 230, 0, 230, 252, 0,
782
        0, 176, 237, 0, 241, 0, 0, 0, 69, 0,
783
        0, 100, 103, 0, 0, 0, 234, 20, 0, 26,
784
        32, 33, 0, 62, 63, 220, 224, 53, 213, 207,
785
        0, 186, 187, 0, 188, 189, 190, 191, 257, 258,
786
        0, 238, 275, 75, 17, 137, 95, 101, 104, 98,
787
        99, 21, 57, 215, 0, 223, 230, 239, 94, 0,
788
        221, 0, 0, 0, 193, 96, 217, 0, 216, 214,
789
        64, 0, 219, 0, 0, 208, 113, 222, 227, 65,
790
        0, 225, 228, 229, 227, 226,
791
}
792

793
var yyTok1 = [...]uint8{
794
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
795
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
796
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
797
        3, 3, 3, 3, 3, 3, 3, 128, 3, 3,
798
        131, 132, 126, 124, 123, 125, 129, 127, 3, 3,
799
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
800
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
801
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
802
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
803
        3, 133, 3, 134,
804
}
805

806
var yyTok2 = [...]uint8{
807
        2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
808
        12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
809
        22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
810
        32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
811
        42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
812
        52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
813
        62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
814
        72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
815
        82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
816
        92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
817
        102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
818
        112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
819
        122, 130,
820
}
821

822
var yyTok3 = [...]int8{
823
        0,
824
}
825

826
var yyErrorMessages = [...]struct {
827
        state int
828
        token int
829
        msg   string
830
}{}
831

832
/*        parser for yacc output        */
833

834
var (
835
        yyDebug        = 0
836
        yyErrorVerbose = false
837
)
838

839
type yyLexer interface {
840
        Lex(lval *yySymType) int
841
        Error(s string)
842
}
843

844
type yyParser interface {
845
        Parse(yyLexer) int
846
        Lookahead() int
847
}
848

849
type yyParserImpl struct {
850
        lval  yySymType
851
        stack [yyInitialStackSize]yySymType
852
        char  int
853
}
854

855
func (p *yyParserImpl) Lookahead() int {
×
856
        return p.char
×
857
}
×
858

859
func yyNewParser() yyParser {
4,379✔
860
        return &yyParserImpl{}
4,379✔
861
}
4,379✔
862

863
const yyFlag = -1000
864

865
func yyTokname(c int) string {
183✔
866
        if c >= 1 && c-1 < len(yyToknames) {
366✔
867
                if yyToknames[c-1] != "" {
366✔
868
                        return yyToknames[c-1]
183✔
869
                }
183✔
870
        }
871
        return __yyfmt__.Sprintf("tok-%v", c)
×
872
}
873

874
func yyStatname(s int) string {
×
875
        if s >= 0 && s < len(yyStatenames) {
×
876
                if yyStatenames[s] != "" {
×
877
                        return yyStatenames[s]
×
878
                }
×
879
        }
880
        return __yyfmt__.Sprintf("state-%v", s)
×
881
}
882

883
func yyErrorMessage(state, lookAhead int) string {
173✔
884
        const TOKSTART = 4
173✔
885

173✔
886
        if !yyErrorVerbose {
177✔
887
                return "syntax error"
4✔
888
        }
4✔
889

890
        for _, e := range yyErrorMessages {
169✔
891
                if e.state == state && e.token == lookAhead {
×
892
                        return "syntax error: " + e.msg
×
893
                }
×
894
        }
895

896
        res := "syntax error: unexpected " + yyTokname(lookAhead)
169✔
897

169✔
898
        // To match Bison, suggest at most four expected tokens.
169✔
899
        expected := make([]int, 0, 4)
169✔
900

169✔
901
        // Look for shiftable tokens.
169✔
902
        base := int(yyPact[state])
169✔
903
        for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
4,900✔
904
                if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
5,525✔
905
                        if len(expected) == cap(expected) {
950✔
906
                                return res
156✔
907
                        }
156✔
908
                        expected = append(expected, tok)
638✔
909
                }
910
        }
911

912
        if yyDef[state] == -2 {
15✔
913
                i := 0
2✔
914
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
915
                        i += 2
×
916
                }
×
917

918
                // Look for tokens that we accept or reduce.
919
                for i += 2; yyExca[i] >= 0; i += 2 {
4✔
920
                        tok := int(yyExca[i])
2✔
921
                        if tok < TOKSTART || yyExca[i+1] == 0 {
4✔
922
                                continue
2✔
923
                        }
924
                        if len(expected) == cap(expected) {
×
925
                                return res
×
926
                        }
×
927
                        expected = append(expected, tok)
×
928
                }
929

930
                // If the default action is to accept or reduce, give up.
931
                if yyExca[i+1] != 0 {
2✔
932
                        return res
×
933
                }
×
934
        }
935

936
        for i, tok := range expected {
27✔
937
                if i == 0 {
25✔
938
                        res += ", expecting "
11✔
939
                } else {
14✔
940
                        res += " or "
3✔
941
                }
3✔
942
                res += yyTokname(tok)
14✔
943
        }
944
        return res
13✔
945
}
946

947
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
69,312✔
948
        token = 0
69,312✔
949
        char = lex.Lex(lval)
69,312✔
950
        if char <= 0 {
73,520✔
951
                token = int(yyTok1[0])
4,208✔
952
                goto out
4,208✔
953
        }
954
        if char < len(yyTok1) {
89,119✔
955
                token = int(yyTok1[char])
24,015✔
956
                goto out
24,015✔
957
        }
958
        if char >= yyPrivate {
82,178✔
959
                if char < yyPrivate+len(yyTok2) {
82,178✔
960
                        token = int(yyTok2[char-yyPrivate])
41,089✔
961
                        goto out
41,089✔
962
                }
963
        }
964
        for i := 0; i < len(yyTok3); i += 2 {
×
965
                token = int(yyTok3[i+0])
×
966
                if token == char {
×
967
                        token = int(yyTok3[i+1])
×
968
                        goto out
×
969
                }
970
        }
971

972
out:
973
        if token == 0 {
69,312✔
974
                token = int(yyTok2[1]) /* unknown char */
×
975
        }
×
976
        if yyDebug >= 3 {
69,312✔
977
                __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
×
978
        }
×
979
        return char, token
69,312✔
980
}
981

982
func yyParse(yylex yyLexer) int {
4,379✔
983
        return yyNewParser().Parse(yylex)
4,379✔
984
}
4,379✔
985

986
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
4,379✔
987
        var yyn int
4,379✔
988
        var yyVAL yySymType
4,379✔
989
        var yyDollar []yySymType
4,379✔
990
        _ = yyDollar // silence set and not used
4,379✔
991
        yyS := yyrcvr.stack[:]
4,379✔
992

4,379✔
993
        Nerrs := 0   /* number of errors */
4,379✔
994
        Errflag := 0 /* error recovery flag */
4,379✔
995
        yystate := 0
4,379✔
996
        yyrcvr.char = -1
4,379✔
997
        yytoken := -1 // yyrcvr.char translated into internal numbering
4,379✔
998
        defer func() {
8,758✔
999
                // Make sure we report no lookahead when not parsing.
4,379✔
1000
                yystate = -1
4,379✔
1001
                yyrcvr.char = -1
4,379✔
1002
                yytoken = -1
4,379✔
1003
        }()
4,379✔
1004
        yyp := -1
4,379✔
1005
        goto yystack
4,379✔
1006

1007
ret0:
1008
        return 0
4,206✔
1009

4,206✔
1010
ret1:
4,206✔
1011
        return 1
173✔
1012

173✔
1013
yystack:
173✔
1014
        /* put a state and value onto the stack */
1015
        if yyDebug >= 4 {
297,468✔
1016
                __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
×
1017
        }
×
1018

1019
        yyp++
297,468✔
1020
        if yyp >= len(yyS) {
297,566✔
1021
                nyys := make([]yySymType, len(yyS)*2)
98✔
1022
                copy(nyys, yyS)
98✔
1023
                yyS = nyys
98✔
1024
        }
98✔
1025
        yyS[yyp] = yyVAL
297,468✔
1026
        yyS[yyp].yys = yystate
297,468✔
1027

297,468✔
1028
yynewstate:
297,468✔
1029
        yyn = int(yyPact[yystate])
297,468✔
1030
        if yyn <= yyFlag {
448,517✔
1031
                goto yydefault /* simple state */
151,049✔
1032
        }
1033
        if yyrcvr.char < 0 {
215,731✔
1034
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
69,312✔
1035
        }
69,312✔
1036
        yyn += yytoken
146,419✔
1037
        if yyn < 0 || yyn >= yyLast {
146,832✔
1038
                goto yydefault
413✔
1039
        }
1040
        yyn = int(yyAct[yyn])
146,006✔
1041
        if int(yyChk[yyn]) == yytoken { /* valid shift */
210,939✔
1042
                yyrcvr.char = -1
64,933✔
1043
                yytoken = -1
64,933✔
1044
                yyVAL = yyrcvr.lval
64,933✔
1045
                yystate = yyn
64,933✔
1046
                if Errflag > 0 {
64,933✔
1047
                        Errflag--
×
1048
                }
×
1049
                goto yystack
64,933✔
1050
        }
1051

1052
yydefault:
1053
        /* default state action */
1054
        yyn = int(yyDef[yystate])
232,535✔
1055
        if yyn == -2 {
247,121✔
1056
                if yyrcvr.char < 0 {
14,586✔
1057
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
1058
                }
×
1059

1060
                /* look through exception table */
1061
                xi := 0
14,586✔
1062
                for {
63,629✔
1063
                        if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
63,629✔
1064
                                break
14,586✔
1065
                        }
1066
                        xi += 2
34,457✔
1067
                }
1068
                for xi += 2; ; xi += 2 {
49,033✔
1069
                        yyn = int(yyExca[xi+0])
34,447✔
1070
                        if yyn < 0 || yyn == yytoken {
49,033✔
1071
                                break
14,586✔
1072
                        }
1073
                }
1074
                yyn = int(yyExca[xi+1])
14,586✔
1075
                if yyn < 0 {
18,792✔
1076
                        goto ret0
4,206✔
1077
                }
1078
        }
1079
        if yyn == 0 {
228,502✔
1080
                /* error ... attempt to resume parsing */
173✔
1081
                switch Errflag {
173✔
1082
                case 0: /* brand new error */
173✔
1083
                        yylex.Error(yyErrorMessage(yystate, yytoken))
173✔
1084
                        Nerrs++
173✔
1085
                        if yyDebug >= 1 {
173✔
1086
                                __yyfmt__.Printf("%s", yyStatname(yystate))
×
1087
                                __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
×
1088
                        }
×
1089
                        fallthrough
173✔
1090

1091
                case 1, 2: /* incompletely recovered error ... try again */
173✔
1092
                        Errflag = 3
173✔
1093

173✔
1094
                        /* find a state where "error" is a legal shift action */
173✔
1095
                        for yyp >= 0 {
815✔
1096
                                yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
642✔
1097
                                if yyn >= 0 && yyn < yyLast {
1,242✔
1098
                                        yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
600✔
1099
                                        if int(yyChk[yystate]) == yyErrCode {
600✔
1100
                                                goto yystack
×
1101
                                        }
1102
                                }
1103

1104
                                /* the current p has no shift on "error", pop stack */
1105
                                if yyDebug >= 2 {
642✔
1106
                                        __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
×
1107
                                }
×
1108
                                yyp--
642✔
1109
                        }
1110
                        /* there is no state on the stack with an error shift ... abort */
1111
                        goto ret1
173✔
1112

1113
                case 3: /* no shift yet; clobber input char */
×
1114
                        if yyDebug >= 2 {
×
1115
                                __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
×
1116
                        }
×
1117
                        if yytoken == yyEofCode {
×
1118
                                goto ret1
×
1119
                        }
1120
                        yyrcvr.char = -1
×
1121
                        yytoken = -1
×
1122
                        goto yynewstate /* try again in the same state */
×
1123
                }
1124
        }
1125

1126
        /* reduction by production yyn */
1127
        if yyDebug >= 2 {
228,156✔
1128
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
1129
        }
×
1130

1131
        yynt := yyn
228,156✔
1132
        yypt := yyp
228,156✔
1133
        _ = yypt // guard against "declared and not used"
228,156✔
1134

228,156✔
1135
        yyp -= int(yyR2[yyn])
228,156✔
1136
        // yyp is now the index of $0. Perform the default action. Iff the
228,156✔
1137
        // reduced production is ε, $1 is possibly out of range.
228,156✔
1138
        if yyp+1 >= len(yyS) {
228,182✔
1139
                nyys := make([]yySymType, len(yyS)*2)
26✔
1140
                copy(nyys, yyS)
26✔
1141
                yyS = nyys
26✔
1142
        }
26✔
1143
        yyVAL = yyS[yyp+1]
228,156✔
1144

228,156✔
1145
        /* consult goto table to find next state */
228,156✔
1146
        yyn = int(yyR1[yyn])
228,156✔
1147
        yyg := int(yyPgo[yyn])
228,156✔
1148
        yyj := yyg + yyS[yyp].yys + 1
228,156✔
1149

228,156✔
1150
        if yyj >= yyLast {
228,156✔
UNCOV
1151
                yystate = int(yyAct[yyg])
×
1152
        } else {
228,156✔
1153
                yystate = int(yyAct[yyj])
228,156✔
1154
                if int(yyChk[yystate]) != -yyn {
418,554✔
1155
                        yystate = int(yyAct[yyg])
190,398✔
1156
                }
190,398✔
1157
        }
1158
        // dummy call; replaced with literal code
1159
        switch yynt {
228,156✔
1160

1161
        case 1:
4,208✔
1162
                yyDollar = yyS[yypt-1 : yypt+1]
4,208✔
1163
                {
8,416✔
1164
                        yyVAL.stmts = yyDollar[1].stmts
4,208✔
1165
                        setResult(yylex, yyDollar[1].stmts)
4,208✔
1166
                }
4,208✔
1167
        case 2:
4,208✔
1168
                yyDollar = yyS[yypt-2 : yypt+1]
4,208✔
1169
                {
8,416✔
1170
                        yyVAL.stmts = []SQLStmt{yyDollar[1].stmt}
4,208✔
1171
                }
4,208✔
1172
        case 3:
103✔
1173
                yyDollar = yyS[yypt-3 : yypt+1]
103✔
1174
                {
206✔
1175
                        yyVAL.stmts = append([]SQLStmt{yyDollar[1].stmt}, yyDollar[3].stmts...)
103✔
1176
                }
103✔
1177
        case 4:
3,830✔
1178
                yyDollar = yyS[yypt-0 : yypt+1]
3,830✔
1179
                {
7,660✔
1180
                }
3,830✔
1181
        case 9:
69✔
1182
                yyDollar = yyS[yypt-2 : yypt+1]
69✔
1183
                {
138✔
1184
                        yyVAL.stmt = &BeginTransactionStmt{}
69✔
1185
                }
69✔
1186
        case 10:
1✔
1187
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1188
                {
2✔
1189
                        yyVAL.stmt = &BeginTransactionStmt{}
1✔
1190
                }
1✔
1191
        case 11:
174✔
1192
                yyDollar = yyS[yypt-1 : yypt+1]
174✔
1193
                {
348✔
1194
                        yyVAL.stmt = &CommitStmt{}
174✔
1195
                }
174✔
1196
        case 12:
6✔
1197
                yyDollar = yyS[yypt-1 : yypt+1]
6✔
1198
                {
12✔
1199
                        yyVAL.stmt = &RollbackStmt{}
6✔
1200
                }
6✔
1201
        case 13:
3✔
1202
                yyDollar = yyS[yypt-6 : yypt+1]
3✔
1203
                {
6✔
1204
                        yyVAL.stmt = &CreateDatabaseStmt{ifNotExists: true, DB: yyDollar[6].str}
3✔
1205
                }
3✔
1206
        case 14:
52✔
1207
                yyDollar = yyS[yypt-3 : yypt+1]
52✔
1208
                {
104✔
1209
                        yyVAL.stmt = &CreateDatabaseStmt{ifNotExists: false, DB: yyDollar[3].str}
52✔
1210
                }
52✔
1211
        case 15:
48✔
1212
                yyDollar = yyS[yypt-3 : yypt+1]
48✔
1213
                {
96✔
1214
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[3].str}
48✔
1215
                }
48✔
1216
        case 16:
9✔
1217
                yyDollar = yyS[yypt-3 : yypt+1]
9✔
1218
                {
18✔
1219
                        yyVAL.stmt = &UseSnapshotStmt{period: yyDollar[3].period}
9✔
1220
                }
9✔
1221
        case 17:
19✔
1222
                yyDollar = yyS[yypt-9 : yypt+1]
19✔
1223
                {
38✔
1224
                        yyVAL.stmt = newCreateTableStmt(yyDollar[6].str, yyDollar[8].tableElems, true)
19✔
1225
                }
19✔
1226
        case 18:
275✔
1227
                yyDollar = yyS[yypt-6 : yypt+1]
275✔
1228
                {
550✔
1229
                        yyVAL.stmt = newCreateTableStmt(yyDollar[3].str, yyDollar[5].tableElems, false)
275✔
1230
                }
275✔
1231
        case 19:
34✔
1232
                yyDollar = yyS[yypt-3 : yypt+1]
34✔
1233
                {
68✔
1234
                        yyVAL.stmt = &DropTableStmt{table: yyDollar[3].str}
34✔
1235
                }
34✔
1236
        case 20:
137✔
1237
                yyDollar = yyS[yypt-8 : yypt+1]
137✔
1238
                {
274✔
1239
                        yyVAL.stmt = &CreateIndexStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[5].str, cols: yyDollar[7].colNames}
137✔
1240
                }
137✔
1241
        case 21:
96✔
1242
                yyDollar = yyS[yypt-9 : yypt+1]
96✔
1243
                {
192✔
1244
                        yyVAL.stmt = &CreateIndexStmt{unique: true, ifNotExists: yyDollar[4].boolean, table: yyDollar[6].str, cols: yyDollar[8].colNames}
96✔
1245
                }
96✔
1246
        case 22:
46✔
1247
                yyDollar = yyS[yypt-7 : yypt+1]
46✔
1248
                {
92✔
1249
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[4].str, cols: yyDollar[6].colNames}
46✔
1250
                }
46✔
1251
        case 23:
75✔
1252
                yyDollar = yyS[yypt-5 : yypt+1]
75✔
1253
                {
150✔
1254
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[3].str, cols: []string{yyDollar[5].str}}
75✔
1255
                }
75✔
1256
        case 24:
48✔
1257
                yyDollar = yyS[yypt-6 : yypt+1]
48✔
1258
                {
96✔
1259
                        yyVAL.stmt = &AddColumnStmt{table: yyDollar[3].str, colSpec: yyDollar[6].colSpec}
48✔
1260
                }
48✔
1261
        case 25:
38✔
1262
                yyDollar = yyS[yypt-6 : yypt+1]
38✔
1263
                {
76✔
1264
                        yyVAL.stmt = &RenameTableStmt{oldName: yyDollar[3].str, newName: yyDollar[6].str}
38✔
1265
                }
38✔
1266
        case 26:
84✔
1267
                yyDollar = yyS[yypt-8 : yypt+1]
84✔
1268
                {
168✔
1269
                        yyVAL.stmt = &RenameColumnStmt{table: yyDollar[3].str, oldName: yyDollar[6].str, newName: yyDollar[8].str}
84✔
1270
                }
84✔
1271
        case 27:
86✔
1272
                yyDollar = yyS[yypt-6 : yypt+1]
86✔
1273
                {
172✔
1274
                        yyVAL.stmt = &DropColumnStmt{table: yyDollar[3].str, colName: yyDollar[6].str}
86✔
1275
                }
86✔
1276
        case 28:
36✔
1277
                yyDollar = yyS[yypt-6 : yypt+1]
36✔
1278
                {
72✔
1279
                        yyVAL.stmt = &DropConstraintStmt{table: yyDollar[3].str, constraintName: yyDollar[6].id}
36✔
1280
                }
36✔
1281
        case 29:
6✔
1282
                yyDollar = yyS[yypt-7 : yypt+1]
6✔
1283
                {
12✔
1284
                        yyVAL.stmt = &CreateUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
6✔
1285
                }
6✔
1286
        case 30:
5✔
1287
                yyDollar = yyS[yypt-7 : yypt+1]
5✔
1288
                {
10✔
1289
                        yyVAL.stmt = &AlterUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
5✔
1290
                }
5✔
1291
        case 31:
3✔
1292
                yyDollar = yyS[yypt-3 : yypt+1]
3✔
1293
                {
6✔
1294
                        yyVAL.stmt = &DropUserStmt{username: yyDollar[3].id}
3✔
1295
                }
3✔
1296
        case 32:
3✔
1297
                yyDollar = yyS[yypt-8 : yypt+1]
3✔
1298
                {
6✔
1299
                        yyVAL.stmt = &AlterPrivilegesStmt{database: yyDollar[5].str, user: yyDollar[8].id, privileges: yyDollar[2].sqlPrivileges, isGrant: true}
3✔
1300
                }
3✔
1301
        case 33:
3✔
1302
                yyDollar = yyS[yypt-8 : yypt+1]
3✔
1303
                {
6✔
1304
                        yyVAL.stmt = &AlterPrivilegesStmt{database: yyDollar[5].str, user: yyDollar[8].id, privileges: yyDollar[2].sqlPrivileges}
3✔
1305
                }
3✔
1306
        case 34:
4✔
1307
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
1308
                {
8✔
1309
                        yyVAL.sqlPrivileges = allPrivileges
4✔
1310
                }
4✔
1311
        case 35:
2✔
1312
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1313
                {
4✔
1314
                        yyVAL.sqlPrivileges = []SQLPrivilege{yyDollar[1].sqlPrivilege}
2✔
1315
                }
2✔
1316
        case 36:
6✔
1317
                yyDollar = yyS[yypt-3 : yypt+1]
6✔
1318
                {
12✔
1319
                        yyVAL.sqlPrivileges = append(yyDollar[3].sqlPrivileges, yyDollar[1].sqlPrivilege)
6✔
1320
                }
6✔
1321
        case 37:
2✔
1322
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1323
                {
4✔
1324
                        yyVAL.sqlPrivilege = SQLPrivilegeSelect
2✔
1325
                }
2✔
NEW
1326
        case 38:
×
1327
                yyDollar = yyS[yypt-1 : yypt+1]
×
1328
                {
×
1329
                        yyVAL.sqlPrivilege = SQLPrivilegeCreate
×
1330
                }
×
1331
        case 39:
2✔
1332
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1333
                {
4✔
1334
                        yyVAL.sqlPrivilege = SQLPrivilegeInsert
2✔
1335
                }
2✔
1336
        case 40:
2✔
1337
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1338
                {
4✔
1339
                        yyVAL.sqlPrivilege = SQLPrivilegeUpdate
2✔
1340
                }
2✔
1341
        case 41:
2✔
1342
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1343
                {
4✔
1344
                        yyVAL.sqlPrivilege = SQLPrivilegeDelete
2✔
1345
                }
2✔
NEW
1346
        case 42:
×
1347
                yyDollar = yyS[yypt-1 : yypt+1]
×
1348
                {
×
1349
                        yyVAL.sqlPrivilege = SQLPrivilegeDrop
×
1350
                }
×
NEW
1351
        case 43:
×
1352
                yyDollar = yyS[yypt-1 : yypt+1]
×
1353
                {
×
1354
                        yyVAL.sqlPrivilege = SQLPrivilegeAlter
×
1355
                }
×
NEW
1356
        case 44:
×
1357
                yyDollar = yyS[yypt-0 : yypt+1]
×
1358
                {
×
1359
                        yyVAL.permission = PermissionReadWrite
×
1360
                }
×
1361
        case 45:
5✔
1362
                yyDollar = yyS[yypt-1 : yypt+1]
5✔
1363
                {
10✔
1364
                        yyVAL.permission = PermissionReadOnly
5✔
1365
                }
5✔
1366
        case 46:
4✔
1367
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
1368
                {
8✔
1369
                        yyVAL.permission = PermissionReadWrite
4✔
1370
                }
4✔
1371
        case 47:
2✔
1372
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1373
                {
4✔
1374
                        yyVAL.permission = PermissionAdmin
2✔
1375
                }
2✔
1376
        case 48:
254✔
1377
                yyDollar = yyS[yypt-0 : yypt+1]
254✔
1378
                {
508✔
1379
                        yyVAL.boolean = false
254✔
1380
                }
254✔
1381
        case 49:
3✔
1382
                yyDollar = yyS[yypt-3 : yypt+1]
3✔
1383
                {
6✔
1384
                        yyVAL.boolean = true
3✔
1385
                }
3✔
1386
        case 50:
1,871✔
1387
                yyDollar = yyS[yypt-6 : yypt+1]
1,871✔
1388
                {
3,742✔
1389
                        yyVAL.stmt = &UpsertIntoStmt{isInsert: true, tableRef: yyDollar[3].tableRef, cols: yyDollar[4].colNames, ds: yyDollar[5].ds, onConflict: yyDollar[6].onConflict}
1,871✔
1390
                }
1,871✔
1391
        case 51:
247✔
1392
                yyDollar = yyS[yypt-5 : yypt+1]
247✔
1393
                {
494✔
1394
                        yyVAL.stmt = &UpsertIntoStmt{tableRef: yyDollar[3].tableRef, cols: yyDollar[4].colNames, ds: yyDollar[5].ds}
247✔
1395
                }
247✔
1396
        case 52:
12✔
1397
                yyDollar = yyS[yypt-7 : yypt+1]
12✔
1398
                {
24✔
1399
                        yyVAL.stmt = &DeleteFromStmt{tableRef: yyDollar[3].tableRef, where: yyDollar[4].exp, indexOn: yyDollar[5].colNames, limit: yyDollar[6].exp, offset: yyDollar[7].exp}
12✔
1400
                }
12✔
1401
        case 53:
24✔
1402
                yyDollar = yyS[yypt-8 : yypt+1]
24✔
1403
                {
48✔
1404
                        yyVAL.stmt = &UpdateStmt{tableRef: yyDollar[2].tableRef, updates: yyDollar[4].updates, where: yyDollar[5].exp, indexOn: yyDollar[6].colNames, limit: yyDollar[7].exp, offset: yyDollar[8].exp}
24✔
1405
                }
24✔
1406
        case 54:
2,115✔
1407
                yyDollar = yyS[yypt-2 : yypt+1]
2,115✔
1408
                {
4,230✔
1409
                        yyVAL.ds = &valuesDataSource{rows: yyDollar[2].rows}
2,115✔
1410
                }
2,115✔
1411
        case 55:
3✔
1412
                yyDollar = yyS[yypt-1 : yypt+1]
3✔
1413
                {
6✔
1414
                        yyVAL.ds = yyDollar[1].stmt.(DataSource)
3✔
1415
                }
3✔
1416
        case 56:
1,868✔
1417
                yyDollar = yyS[yypt-0 : yypt+1]
1,868✔
1418
                {
3,736✔
1419
                        yyVAL.onConflict = nil
1,868✔
1420
                }
1,868✔
1421
        case 57:
3✔
1422
                yyDollar = yyS[yypt-4 : yypt+1]
3✔
1423
                {
6✔
1424
                        yyVAL.onConflict = &OnConflictDo{}
3✔
1425
                }
3✔
1426
        case 58:
24✔
1427
                yyDollar = yyS[yypt-1 : yypt+1]
24✔
1428
                {
48✔
1429
                        yyVAL.updates = []*colUpdate{yyDollar[1].update}
24✔
1430
                }
24✔
1431
        case 59:
2✔
1432
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1433
                {
4✔
1434
                        yyVAL.updates = append(yyDollar[1].updates, yyDollar[3].update)
2✔
1435
                }
2✔
1436
        case 60:
26✔
1437
                yyDollar = yyS[yypt-3 : yypt+1]
26✔
1438
                {
52✔
1439
                        yyVAL.update = &colUpdate{col: yyDollar[1].id, op: yyDollar[2].cmpOp, val: yyDollar[3].exp}
26✔
1440
                }
26✔
1441
        case 61:
2,124✔
1442
                yyDollar = yyS[yypt-1 : yypt+1]
2,124✔
1443
                {
4,248✔
1444
                        yyVAL.rows = []*RowSpec{yyDollar[1].row}
2,124✔
1445
                }
2,124✔
1446
        case 62:
105✔
1447
                yyDollar = yyS[yypt-3 : yypt+1]
105✔
1448
                {
210✔
1449
                        yyVAL.rows = append(yyDollar[1].rows, yyDollar[3].row)
105✔
1450
                }
105✔
1451
        case 63:
2,229✔
1452
                yyDollar = yyS[yypt-3 : yypt+1]
2,229✔
1453
                {
4,458✔
1454
                        yyVAL.row = &RowSpec{Values: yyDollar[2].values}
2,229✔
1455
                }
2,229✔
1456
        case 64:
33✔
1457
                yyDollar = yyS[yypt-1 : yypt+1]
33✔
1458
                {
66✔
1459
                        yyVAL.cols = []*ColSelector{yyDollar[1].col}
33✔
1460
                }
33✔
1461
        case 65:
18✔
1462
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1463
                {
36✔
1464
                        yyVAL.cols = append(yyDollar[1].cols, yyDollar[3].col)
18✔
1465
                }
18✔
1466
        case 66:
130✔
1467
                yyDollar = yyS[yypt-0 : yypt+1]
130✔
1468
                {
260✔
1469
                        yyVAL.values = nil
130✔
1470
                }
130✔
1471
        case 67:
2,275✔
1472
                yyDollar = yyS[yypt-1 : yypt+1]
2,275✔
1473
                {
4,550✔
1474
                        yyVAL.values = yyDollar[1].values
2,275✔
1475
                }
2,275✔
1476
        case 68:
2,296✔
1477
                yyDollar = yyS[yypt-1 : yypt+1]
2,296✔
1478
                {
4,592✔
1479
                        yyVAL.values = []ValueExp{yyDollar[1].exp}
2,296✔
1480
                }
2,296✔
1481
        case 69:
5,387✔
1482
                yyDollar = yyS[yypt-3 : yypt+1]
5,387✔
1483
                {
10,774✔
1484
                        yyVAL.values = append(yyDollar[1].values, yyDollar[3].exp)
5,387✔
1485
                }
5,387✔
1486
        case 70:
937✔
1487
                yyDollar = yyS[yypt-1 : yypt+1]
937✔
1488
                {
1,874✔
1489
                        yyVAL.value = &Integer{val: int64(yyDollar[1].integer)}
937✔
1490
                }
937✔
1491
        case 71:
66✔
1492
                yyDollar = yyS[yypt-1 : yypt+1]
66✔
1493
                {
132✔
1494
                        yyVAL.value = &Float64{val: float64(yyDollar[1].float)}
66✔
1495
                }
66✔
1496
        case 72:
819✔
1497
                yyDollar = yyS[yypt-1 : yypt+1]
819✔
1498
                {
1,638✔
1499
                        yyVAL.value = &Varchar{val: yyDollar[1].str}
819✔
1500
                }
819✔
1501
        case 73:
244✔
1502
                yyDollar = yyS[yypt-1 : yypt+1]
244✔
1503
                {
488✔
1504
                        yyVAL.value = &Bool{val: yyDollar[1].boolean}
244✔
1505
                }
244✔
1506
        case 74:
94✔
1507
                yyDollar = yyS[yypt-1 : yypt+1]
94✔
1508
                {
188✔
1509
                        yyVAL.value = &Blob{val: yyDollar[1].blob}
94✔
1510
                }
94✔
1511
        case 75:
59✔
1512
                yyDollar = yyS[yypt-6 : yypt+1]
59✔
1513
                {
118✔
1514
                        yyVAL.value = &Cast{val: yyDollar[3].exp, t: yyDollar[5].sqlType}
59✔
1515
                }
59✔
1516
        case 76:
163✔
1517
                yyDollar = yyS[yypt-1 : yypt+1]
163✔
1518
                {
326✔
1519
                        yyVAL.value = yyDollar[1].value
163✔
1520
                }
163✔
1521
        case 77:
5,938✔
1522
                yyDollar = yyS[yypt-1 : yypt+1]
5,938✔
1523
                {
11,876✔
1524
                        yyVAL.value = &Param{id: yyDollar[1].id}
5,938✔
1525
                }
5,938✔
1526
        case 78:
175✔
1527
                yyDollar = yyS[yypt-1 : yypt+1]
175✔
1528
                {
350✔
1529
                        yyVAL.value = &Param{id: fmt.Sprintf("param%d", yyDollar[1].pparam), pos: yyDollar[1].pparam}
175✔
1530
                }
175✔
1531
        case 79:
96✔
1532
                yyDollar = yyS[yypt-1 : yypt+1]
96✔
1533
                {
192✔
1534
                        yyVAL.value = &NullValue{t: AnyType}
96✔
1535
                }
96✔
1536
        case 80:
424✔
1537
                yyDollar = yyS[yypt-1 : yypt+1]
424✔
1538
                {
848✔
1539
                        yyVAL.sqlType = IntegerType
424✔
1540
                }
424✔
1541
        case 81:
61✔
1542
                yyDollar = yyS[yypt-1 : yypt+1]
61✔
1543
                {
122✔
1544
                        yyVAL.sqlType = BooleanType
61✔
1545
                }
61✔
1546
        case 82:
154✔
1547
                yyDollar = yyS[yypt-1 : yypt+1]
154✔
1548
                {
308✔
1549
                        yyVAL.sqlType = VarcharType
154✔
1550
                }
154✔
1551
        case 83:
4✔
1552
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
1553
                {
8✔
1554
                        yyVAL.sqlType = UUIDType
4✔
1555
                }
4✔
1556
        case 84:
41✔
1557
                yyDollar = yyS[yypt-1 : yypt+1]
41✔
1558
                {
82✔
1559
                        yyVAL.sqlType = BLOBType
41✔
1560
                }
41✔
1561
        case 85:
82✔
1562
                yyDollar = yyS[yypt-1 : yypt+1]
82✔
1563
                {
164✔
1564
                        yyVAL.sqlType = TimestampType
82✔
1565
                }
82✔
1566
        case 86:
27✔
1567
                yyDollar = yyS[yypt-1 : yypt+1]
27✔
1568
                {
54✔
1569
                        yyVAL.sqlType = Float64Type
27✔
1570
                }
27✔
1571
        case 87:
10✔
1572
                yyDollar = yyS[yypt-1 : yypt+1]
10✔
1573
                {
20✔
1574
                        yyVAL.sqlType = JSONType
10✔
1575
                }
10✔
1576
        case 88:
169✔
1577
                yyDollar = yyS[yypt-4 : yypt+1]
169✔
1578
                {
338✔
1579
                        yyVAL.value = &FnCall{fn: yyDollar[1].id, params: yyDollar[3].values}
169✔
1580
                }
169✔
1581
        case 89:
294✔
1582
                yyDollar = yyS[yypt-1 : yypt+1]
294✔
1583
                {
588✔
1584
                        yyVAL.tableElems = []TableElem{yyDollar[1].tableElem}
294✔
1585
                }
294✔
1586
        case 90:
600✔
1587
                yyDollar = yyS[yypt-3 : yypt+1]
600✔
1588
                {
1,200✔
1589
                        yyVAL.tableElems = append(yyDollar[1].tableElems, yyDollar[3].tableElem)
600✔
1590
                }
600✔
1591
        case 91:
670✔
1592
                yyDollar = yyS[yypt-1 : yypt+1]
670✔
1593
                {
1,340✔
1594
                        yyVAL.tableElem = yyDollar[1].colSpec
670✔
1595
                }
670✔
1596
        case 92:
10✔
1597
                yyDollar = yyS[yypt-1 : yypt+1]
10✔
1598
                {
20✔
1599
                        yyVAL.tableElem = yyDollar[1].check
10✔
1600
                }
10✔
1601
        case 93:
214✔
1602
                yyDollar = yyS[yypt-3 : yypt+1]
214✔
1603
                {
428✔
1604
                        yyVAL.tableElem = PrimaryKeyConstraint(yyDollar[3].colNames)
214✔
1605
                }
214✔
1606
        case 94:
718✔
1607
                yyDollar = yyS[yypt-6 : yypt+1]
718✔
1608
                {
1,436✔
1609
                        yyVAL.colSpec = &ColSpec{
718✔
1610
                                colName:       yyDollar[1].str,
718✔
1611
                                colType:       yyDollar[2].sqlType,
718✔
1612
                                maxLen:        int(yyDollar[3].integer),
718✔
1613
                                notNull:       yyDollar[4].boolean || yyDollar[6].boolean,
718✔
1614
                                autoIncrement: yyDollar[5].boolean,
718✔
1615
                                primaryKey:    yyDollar[6].boolean,
718✔
1616
                        }
718✔
1617
                }
718✔
1618
        case 95:
680✔
1619
                yyDollar = yyS[yypt-0 : yypt+1]
680✔
1620
                {
1,360✔
1621
                        yyVAL.boolean = false
680✔
1622
                }
680✔
1623
        case 96:
38✔
1624
                yyDollar = yyS[yypt-2 : yypt+1]
38✔
1625
                {
76✔
1626
                        yyVAL.boolean = true
38✔
1627
                }
38✔
1628
        case 97:
655✔
1629
                yyDollar = yyS[yypt-0 : yypt+1]
655✔
1630
                {
1,310✔
1631
                        yyVAL.integer = 0
655✔
1632
                }
655✔
1633
        case 98:
59✔
1634
                yyDollar = yyS[yypt-3 : yypt+1]
59✔
1635
                {
118✔
1636
                        yyVAL.integer = yyDollar[2].integer
59✔
1637
                }
59✔
1638
        case 99:
4✔
1639
                yyDollar = yyS[yypt-3 : yypt+1]
4✔
1640
                {
8✔
1641
                        yyVAL.integer = yyDollar[2].integer
4✔
1642
                }
4✔
1643
        case 100:
634✔
1644
                yyDollar = yyS[yypt-0 : yypt+1]
634✔
1645
                {
1,268✔
1646
                        yyVAL.boolean = false
634✔
1647
                }
634✔
1648
        case 101:
84✔
1649
                yyDollar = yyS[yypt-1 : yypt+1]
84✔
1650
                {
168✔
1651
                        yyVAL.boolean = true
84✔
1652
                }
84✔
1653
        case 102:
676✔
1654
                yyDollar = yyS[yypt-0 : yypt+1]
676✔
1655
                {
1,352✔
1656
                        yyVAL.boolean = false
676✔
1657
                }
676✔
1658
        case 103:
33✔
1659
                yyDollar = yyS[yypt-1 : yypt+1]
33✔
1660
                {
66✔
1661
                        yyVAL.boolean = false
33✔
1662
                }
33✔
1663
        case 104:
9✔
1664
                yyDollar = yyS[yypt-2 : yypt+1]
9✔
1665
                {
18✔
1666
                        yyVAL.boolean = true
9✔
1667
                }
9✔
1668
        case 105:
808✔
1669
                yyDollar = yyS[yypt-1 : yypt+1]
808✔
1670
                {
1,616✔
1671
                        yyVAL.stmt = yyDollar[1].stmt
808✔
1672
                }
808✔
1673
        case 106:
11✔
1674
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1675
                {
22✔
1676
                        yyVAL.stmt = &UnionStmt{
11✔
1677
                                distinct: yyDollar[3].distinct,
11✔
1678
                                left:     yyDollar[1].stmt.(DataSource),
11✔
1679
                                right:    yyDollar[4].stmt.(DataSource),
11✔
1680
                        }
11✔
1681
                }
11✔
1682
        case 107:
1✔
1683
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1684
                {
2✔
1685
                        yyVAL.stmt = &SelectStmt{
1✔
1686
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}},
1✔
1687
                        }
1✔
1688
                }
1✔
1689
        case 108:
1✔
1690
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1691
                {
2✔
1692
                        yyVAL.stmt = &SelectStmt{
1✔
1693
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}},
1✔
1694
                        }
1✔
1695
                }
1✔
NEW
1696
        case 109:
×
1697
                yyDollar = yyS[yypt-3 : yypt+1]
×
1698
                {
×
1699
                        yyVAL.stmt = &SelectStmt{
×
1700
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}},
×
1701
                        }
×
1702
                }
×
1703
        case 110:
6✔
1704
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1705
                {
12✔
1706
                        yyVAL.stmt = &SelectStmt{
6✔
1707
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}},
6✔
1708
                        }
6✔
1709
                }
6✔
1710
        case 111:
1✔
1711
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1712
                {
2✔
1713
                        yyVAL.stmt = &SelectStmt{
1✔
1714
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "grants"}},
1✔
1715
                        }
1✔
1716
                }
1✔
1717
        case 112:
1✔
1718
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1719
                {
2✔
1720
                        yyVAL.stmt = &SelectStmt{
1✔
1721
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "grants", params: []ValueExp{&Varchar{val: yyDollar[4].id}}}},
1✔
1722
                        }
1✔
1723
                }
1✔
1724
        case 113:
815✔
1725
                yyDollar = yyS[yypt-13 : yypt+1]
815✔
1726
                {
1,630✔
1727
                        yyVAL.stmt = &SelectStmt{
815✔
1728
                                distinct: yyDollar[2].distinct,
815✔
1729
                                targets:  yyDollar[3].targets,
815✔
1730
                                ds:       yyDollar[5].ds,
815✔
1731
                                indexOn:  yyDollar[6].colNames,
815✔
1732
                                joins:    yyDollar[7].joins,
815✔
1733
                                where:    yyDollar[8].exp,
815✔
1734
                                groupBy:  yyDollar[9].cols,
815✔
1735
                                having:   yyDollar[10].exp,
815✔
1736
                                orderBy:  yyDollar[11].ordexps,
815✔
1737
                                limit:    yyDollar[12].exp,
815✔
1738
                                offset:   yyDollar[13].exp,
815✔
1739
                        }
815✔
1740
                }
815✔
1741
        case 114:
5✔
1742
                yyDollar = yyS[yypt-3 : yypt+1]
5✔
1743
                {
10✔
1744
                        yyVAL.stmt = &SelectStmt{
5✔
1745
                                distinct: yyDollar[2].distinct,
5✔
1746
                                targets:  yyDollar[3].targets,
5✔
1747
                                ds:       &valuesDataSource{rows: []*RowSpec{{}}},
5✔
1748
                        }
5✔
1749
                }
5✔
1750
        case 115:
11✔
1751
                yyDollar = yyS[yypt-0 : yypt+1]
11✔
1752
                {
22✔
1753
                        yyVAL.distinct = true
11✔
1754
                }
11✔
1755
        case 116:
1✔
1756
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1757
                {
2✔
1758
                        yyVAL.distinct = false
1✔
1759
                }
1✔
1760
        case 117:
813✔
1761
                yyDollar = yyS[yypt-0 : yypt+1]
813✔
1762
                {
1,626✔
1763
                        yyVAL.distinct = false
813✔
1764
                }
813✔
1765
        case 118:
8✔
1766
                yyDollar = yyS[yypt-1 : yypt+1]
8✔
1767
                {
16✔
1768
                        yyVAL.distinct = true
8✔
1769
                }
8✔
1770
        case 119:
384✔
1771
                yyDollar = yyS[yypt-1 : yypt+1]
384✔
1772
                {
768✔
1773
                        yyVAL.targets = nil
384✔
1774
                }
384✔
1775
        case 120:
437✔
1776
                yyDollar = yyS[yypt-1 : yypt+1]
437✔
1777
                {
874✔
1778
                        yyVAL.targets = yyDollar[1].targets
437✔
1779
                }
437✔
1780
        case 121:
437✔
1781
                yyDollar = yyS[yypt-2 : yypt+1]
437✔
1782
                {
874✔
1783
                        yyVAL.targets = []TargetEntry{{Exp: yyDollar[1].exp, As: yyDollar[2].id}}
437✔
1784
                }
437✔
1785
        case 122:
478✔
1786
                yyDollar = yyS[yypt-4 : yypt+1]
478✔
1787
                {
956✔
1788
                        yyVAL.targets = append(yyDollar[1].targets, TargetEntry{Exp: yyDollar[3].exp, As: yyDollar[4].id})
478✔
1789
                }
478✔
1790
        case 123:
1,569✔
1791
                yyDollar = yyS[yypt-1 : yypt+1]
1,569✔
1792
                {
3,138✔
1793
                        yyVAL.sel = yyDollar[1].col
1,569✔
1794
                }
1,569✔
1795
        case 124:
39✔
1796
                yyDollar = yyS[yypt-2 : yypt+1]
39✔
1797
                {
78✔
1798
                        yyVAL.sel = &JSONSelector{ColSelector: yyDollar[1].col, fields: yyDollar[2].jsonFields}
39✔
1799
                }
39✔
1800
        case 125:
66✔
1801
                yyDollar = yyS[yypt-4 : yypt+1]
66✔
1802
                {
132✔
1803
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, col: "*"}
66✔
1804
                }
66✔
1805
        case 126:
67✔
1806
                yyDollar = yyS[yypt-4 : yypt+1]
67✔
1807
                {
134✔
1808
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, table: yyDollar[3].col.table, col: yyDollar[3].col.col}
67✔
1809
                }
67✔
1810
        case 127:
39✔
1811
                yyDollar = yyS[yypt-2 : yypt+1]
39✔
1812
                {
78✔
1813
                        yyVAL.jsonFields = []string{yyDollar[2].str}
39✔
1814
                }
39✔
1815
        case 128:
19✔
1816
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
1817
                {
38✔
1818
                        yyVAL.jsonFields = append(yyVAL.jsonFields, yyDollar[3].str)
19✔
1819
                }
19✔
1820
        case 129:
1,578✔
1821
                yyDollar = yyS[yypt-1 : yypt+1]
1,578✔
1822
                {
3,156✔
1823
                        yyVAL.col = &ColSelector{col: yyDollar[1].str}
1,578✔
1824
                }
1,578✔
1825
        case 130:
148✔
1826
                yyDollar = yyS[yypt-3 : yypt+1]
148✔
1827
                {
296✔
1828
                        yyVAL.col = &ColSelector{table: yyDollar[1].str, col: yyDollar[3].str}
148✔
1829
                }
148✔
1830
        case 133:
196✔
1831
                yyDollar = yyS[yypt-1 : yypt+1]
196✔
1832
                {
392✔
1833
                        yyVAL.str = yyDollar[1].keyword
196✔
1834
                }
196✔
1835
        case 134:
2,482✔
1836
                yyDollar = yyS[yypt-1 : yypt+1]
2,482✔
1837
                {
4,964✔
1838
                        yyVAL.colNames = []string{yyDollar[1].str}
2,482✔
1839
                }
2,482✔
1840
        case 135:
5,313✔
1841
                yyDollar = yyS[yypt-3 : yypt+1]
5,313✔
1842
                {
10,626✔
1843
                        yyVAL.colNames = append(yyDollar[1].colNames, yyDollar[3].str)
5,313✔
1844
                }
5,313✔
1845
        case 136:
172✔
1846
                yyDollar = yyS[yypt-1 : yypt+1]
172✔
1847
                {
344✔
1848
                        yyVAL.colNames = []string{yyDollar[1].str}
172✔
1849
                }
172✔
1850
        case 137:
72✔
1851
                yyDollar = yyS[yypt-3 : yypt+1]
72✔
1852
                {
144✔
1853
                        yyVAL.colNames = yyDollar[2].colNames
72✔
1854
                }
72✔
1855
        case 138:
1✔
1856
                yyDollar = yyS[yypt-0 : yypt+1]
1✔
1857
                {
2✔
1858
                        yyVAL.colNames = nil
1✔
1859
                }
1✔
1860
        case 139:
2,131✔
1861
                yyDollar = yyS[yypt-3 : yypt+1]
2,131✔
1862
                {
4,262✔
1863
                        yyVAL.colNames = yyDollar[2].colNames
2,131✔
1864
                }
2,131✔
1865
        case 151:
13,705✔
1866
                yyDollar = yyS[yypt-1 : yypt+1]
13,705✔
1867
                {
27,410✔
1868
                        yyVAL.str = yyDollar[1].id
13,705✔
1869
                }
13,705✔
1870
        case 152:
1,189✔
1871
                yyDollar = yyS[yypt-1 : yypt+1]
1,189✔
1872
                {
2,378✔
1873
                        yyVAL.str = string(yyDollar[1].keyword)
1,189✔
1874
                }
1,189✔
1875
        case 185:
802✔
1876
                yyDollar = yyS[yypt-3 : yypt+1]
802✔
1877
                {
1,604✔
1878
                        yyDollar[1].tableRef.period = yyDollar[2].period
802✔
1879
                        yyDollar[1].tableRef.as = yyDollar[3].id
802✔
1880
                        yyVAL.ds = yyDollar[1].tableRef
802✔
1881
                }
802✔
1882
        case 186:
9✔
1883
                yyDollar = yyS[yypt-4 : yypt+1]
9✔
1884
                {
18✔
1885
                        yyVAL.ds = &valuesDataSource{inferTypes: true, rows: yyDollar[3].rows}
9✔
1886
                }
9✔
1887
        case 187:
11✔
1888
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1889
                {
22✔
1890
                        yyDollar[2].stmt.(*SelectStmt).as = yyDollar[4].id
11✔
1891
                        yyVAL.ds = yyDollar[2].stmt.(DataSource)
11✔
1892
                }
11✔
1893
        case 188:
4✔
1894
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1895
                {
8✔
1896
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}, as: yyDollar[4].id}
4✔
1897
                }
4✔
1898
        case 189:
4✔
1899
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1900
                {
8✔
1901
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}, as: yyDollar[4].id}
4✔
1902
                }
4✔
NEW
1903
        case 190:
×
1904
                yyDollar = yyS[yypt-4 : yypt+1]
×
1905
                {
×
1906
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}}
×
1907
                }
×
1908
        case 191:
1✔
1909
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1910
                {
2✔
1911
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}, as: yyDollar[4].id}
1✔
1912
                }
1✔
1913
        case 192:
6✔
1914
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1915
                {
12✔
1916
                        yyVAL.ds = &FnDataSourceStmt{fnCall: yyDollar[1].value.(*FnCall), as: yyDollar[2].id}
6✔
1917
                }
6✔
1918
        case 193:
2✔
1919
                yyDollar = yyS[yypt-6 : yypt+1]
2✔
1920
                {
4✔
1921
                        yyVAL.ds = &tableRef{table: yyDollar[4].id, history: true, as: yyDollar[6].id}
2✔
1922
                }
2✔
1923
        case 194:
2,972✔
1924
                yyDollar = yyS[yypt-1 : yypt+1]
2,972✔
1925
                {
5,944✔
1926
                        yyVAL.tableRef = &tableRef{table: yyDollar[1].str}
2,972✔
1927
                }
2,972✔
1928
        case 195:
811✔
1929
                yyDollar = yyS[yypt-2 : yypt+1]
811✔
1930
                {
1,622✔
1931
                        yyVAL.period = period{start: yyDollar[1].openPeriod, end: yyDollar[2].openPeriod}
811✔
1932
                }
811✔
1933
        case 196:
742✔
1934
                yyDollar = yyS[yypt-0 : yypt+1]
742✔
1935
                {
1,484✔
1936
                        yyVAL.openPeriod = nil
742✔
1937
                }
742✔
1938
        case 197:
44✔
1939
                yyDollar = yyS[yypt-2 : yypt+1]
44✔
1940
                {
88✔
1941
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
44✔
1942
                }
44✔
1943
        case 198:
25✔
1944
                yyDollar = yyS[yypt-2 : yypt+1]
25✔
1945
                {
50✔
1946
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
25✔
1947
                }
25✔
1948
        case 199:
767✔
1949
                yyDollar = yyS[yypt-0 : yypt+1]
767✔
1950
                {
1,534✔
1951
                        yyVAL.openPeriod = nil
767✔
1952
                }
767✔
1953
        case 200:
33✔
1954
                yyDollar = yyS[yypt-2 : yypt+1]
33✔
1955
                {
66✔
1956
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
33✔
1957
                }
33✔
1958
        case 201:
11✔
1959
                yyDollar = yyS[yypt-2 : yypt+1]
11✔
1960
                {
22✔
1961
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
11✔
1962
                }
11✔
1963
        case 202:
56✔
1964
                yyDollar = yyS[yypt-2 : yypt+1]
56✔
1965
                {
112✔
1966
                        yyVAL.periodInstant = periodInstant{instantType: txInstant, exp: yyDollar[2].exp}
56✔
1967
                }
56✔
1968
        case 203:
57✔
1969
                yyDollar = yyS[yypt-1 : yypt+1]
57✔
1970
                {
114✔
1971
                        yyVAL.periodInstant = periodInstant{instantType: timeInstant, exp: yyDollar[1].exp}
57✔
1972
                }
57✔
1973
        case 204:
798✔
1974
                yyDollar = yyS[yypt-0 : yypt+1]
798✔
1975
                {
1,596✔
1976
                        yyVAL.joins = nil
798✔
1977
                }
798✔
1978
        case 205:
17✔
1979
                yyDollar = yyS[yypt-1 : yypt+1]
17✔
1980
                {
34✔
1981
                        yyVAL.joins = yyDollar[1].joins
17✔
1982
                }
17✔
1983
        case 206:
17✔
1984
                yyDollar = yyS[yypt-1 : yypt+1]
17✔
1985
                {
34✔
1986
                        yyVAL.joins = []*JoinSpec{yyDollar[1].join}
17✔
1987
                }
17✔
1988
        case 207:
7✔
1989
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1990
                {
14✔
1991
                        yyVAL.joins = append([]*JoinSpec{yyDollar[1].join}, yyDollar[2].joins...)
7✔
1992
                }
7✔
1993
        case 208:
24✔
1994
                yyDollar = yyS[yypt-6 : yypt+1]
24✔
1995
                {
48✔
1996
                        yyVAL.join = &JoinSpec{joinType: yyDollar[1].joinType, ds: yyDollar[3].ds, indexOn: yyDollar[4].colNames, cond: yyDollar[6].exp}
24✔
1997
                }
24✔
1998
        case 209:
3✔
1999
                yyDollar = yyS[yypt-0 : yypt+1]
3✔
2000
                {
6✔
2001
                        yyVAL.joinType = InnerJoin
3✔
2002
                }
3✔
2003
        case 210:
21✔
2004
                yyDollar = yyS[yypt-1 : yypt+1]
21✔
2005
                {
42✔
2006
                        yyVAL.joinType = yyDollar[1].joinType
21✔
2007
                }
21✔
2008
        case 211:
416✔
2009
                yyDollar = yyS[yypt-0 : yypt+1]
416✔
2010
                {
832✔
2011
                        yyVAL.exp = nil
416✔
2012
                }
416✔
2013
        case 212:
435✔
2014
                yyDollar = yyS[yypt-2 : yypt+1]
435✔
2015
                {
870✔
2016
                        yyVAL.exp = yyDollar[2].exp
435✔
2017
                }
435✔
2018
        case 213:
782✔
2019
                yyDollar = yyS[yypt-0 : yypt+1]
782✔
2020
                {
1,564✔
2021
                        yyVAL.cols = nil
782✔
2022
                }
782✔
2023
        case 214:
33✔
2024
                yyDollar = yyS[yypt-3 : yypt+1]
33✔
2025
                {
66✔
2026
                        yyVAL.cols = yyDollar[3].cols
33✔
2027
                }
33✔
2028
        case 215:
808✔
2029
                yyDollar = yyS[yypt-0 : yypt+1]
808✔
2030
                {
1,616✔
2031
                        yyVAL.exp = nil
808✔
2032
                }
808✔
2033
        case 216:
7✔
2034
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
2035
                {
14✔
2036
                        yyVAL.exp = yyDollar[2].exp
7✔
2037
                }
7✔
2038
        case 217:
811✔
2039
                yyDollar = yyS[yypt-0 : yypt+1]
811✔
2040
                {
1,622✔
2041
                        yyVAL.exp = nil
811✔
2042
                }
811✔
2043
        case 218:
40✔
2044
                yyDollar = yyS[yypt-2 : yypt+1]
40✔
2045
                {
80✔
2046
                        yyVAL.exp = yyDollar[2].exp
40✔
2047
                }
40✔
2048
        case 219:
847✔
2049
                yyDollar = yyS[yypt-0 : yypt+1]
847✔
2050
                {
1,694✔
2051
                        yyVAL.exp = nil
847✔
2052
                }
847✔
2053
        case 220:
4✔
2054
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
2055
                {
8✔
2056
                        yyVAL.exp = yyDollar[2].exp
4✔
2057
                }
4✔
2058
        case 221:
655✔
2059
                yyDollar = yyS[yypt-0 : yypt+1]
655✔
2060
                {
1,310✔
2061
                        yyVAL.ordexps = nil
655✔
2062
                }
655✔
2063
        case 222:
160✔
2064
                yyDollar = yyS[yypt-3 : yypt+1]
160✔
2065
                {
320✔
2066
                        yyVAL.ordexps = yyDollar[3].ordexps
160✔
2067
                }
160✔
2068
        case 223:
845✔
2069
                yyDollar = yyS[yypt-0 : yypt+1]
845✔
2070
                {
1,690✔
2071
                        yyVAL.colNames = nil
845✔
2072
                }
845✔
2073
        case 224:
30✔
2074
                yyDollar = yyS[yypt-4 : yypt+1]
30✔
2075
                {
60✔
2076
                        yyVAL.colNames = yyDollar[4].colNames
30✔
2077
                }
30✔
2078
        case 225:
160✔
2079
                yyDollar = yyS[yypt-2 : yypt+1]
160✔
2080
                {
320✔
2081
                        yyVAL.ordexps = []*OrdExp{{exp: yyDollar[1].exp, descOrder: yyDollar[2].opt_ord}}
160✔
2082
                }
160✔
2083
        case 226:
39✔
2084
                yyDollar = yyS[yypt-4 : yypt+1]
39✔
2085
                {
78✔
2086
                        yyVAL.ordexps = append(yyDollar[1].ordexps, &OrdExp{exp: yyDollar[3].exp, descOrder: yyDollar[4].opt_ord})
39✔
2087
                }
39✔
2088
        case 227:
61✔
2089
                yyDollar = yyS[yypt-0 : yypt+1]
61✔
2090
                {
122✔
2091
                        yyVAL.opt_ord = false
61✔
2092
                }
61✔
2093
        case 228:
43✔
2094
                yyDollar = yyS[yypt-1 : yypt+1]
43✔
2095
                {
86✔
2096
                        yyVAL.opt_ord = false
43✔
2097
                }
43✔
2098
        case 229:
95✔
2099
                yyDollar = yyS[yypt-1 : yypt+1]
95✔
2100
                {
190✔
2101
                        yyVAL.opt_ord = true
95✔
2102
                }
95✔
2103
        case 230:
1,640✔
2104
                yyDollar = yyS[yypt-0 : yypt+1]
1,640✔
2105
                {
3,280✔
2106
                        yyVAL.id = ""
1,640✔
2107
                }
1,640✔
2108
        case 231:
27✔
2109
                yyDollar = yyS[yypt-1 : yypt+1]
27✔
2110
                {
54✔
2111
                        yyVAL.id = yyDollar[1].str
27✔
2112
                }
27✔
2113
        case 232:
78✔
2114
                yyDollar = yyS[yypt-2 : yypt+1]
78✔
2115
                {
156✔
2116
                        yyVAL.id = yyDollar[2].str
78✔
2117
                }
78✔
2118
        case 233:
7✔
2119
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
2120
                {
14✔
2121
                        yyVAL.check = CheckConstraint{exp: yyDollar[2].exp}
7✔
2122
                }
7✔
2123
        case 234:
3✔
2124
                yyDollar = yyS[yypt-4 : yypt+1]
3✔
2125
                {
6✔
2126
                        yyVAL.check = CheckConstraint{name: yyDollar[2].id, exp: yyDollar[4].exp}
3✔
2127
                }
3✔
2128
        case 235:
20✔
2129
                yyDollar = yyS[yypt-0 : yypt+1]
20✔
2130
                {
40✔
2131
                        yyVAL.exp = nil
20✔
2132
                }
20✔
2133
        case 236:
5✔
2134
                yyDollar = yyS[yypt-1 : yypt+1]
5✔
2135
                {
10✔
2136
                        yyVAL.exp = yyDollar[1].exp
5✔
2137
                }
5✔
2138
        case 237:
25✔
2139
                yyDollar = yyS[yypt-5 : yypt+1]
25✔
2140
                {
50✔
2141
                        yyVAL.exp = &CaseWhenExp{
25✔
2142
                                exp:      yyDollar[2].exp,
25✔
2143
                                whenThen: yyDollar[3].whenThenClauses,
25✔
2144
                                elseExp:  yyDollar[4].exp,
25✔
2145
                        }
25✔
2146
                }
25✔
2147
        case 238:
25✔
2148
                yyDollar = yyS[yypt-4 : yypt+1]
25✔
2149
                {
50✔
2150
                        yyVAL.whenThenClauses = []whenThenClause{{when: yyDollar[2].exp, then: yyDollar[4].exp}}
25✔
2151
                }
25✔
2152
        case 239:
6✔
2153
                yyDollar = yyS[yypt-5 : yypt+1]
6✔
2154
                {
12✔
2155
                        yyVAL.whenThenClauses = append(yyDollar[1].whenThenClauses, whenThenClause{when: yyDollar[3].exp, then: yyDollar[5].exp})
6✔
2156
                }
6✔
2157
        case 240:
6✔
2158
                yyDollar = yyS[yypt-0 : yypt+1]
6✔
2159
                {
12✔
2160
                        yyVAL.exp = nil
6✔
2161
                }
6✔
2162
        case 241:
19✔
2163
                yyDollar = yyS[yypt-2 : yypt+1]
19✔
2164
                {
38✔
2165
                        yyVAL.exp = yyDollar[2].exp
19✔
2166
                }
19✔
2167
        case 242:
9,865✔
2168
                yyDollar = yyS[yypt-1 : yypt+1]
9,865✔
2169
                {
19,730✔
2170
                        yyVAL.exp = yyDollar[1].exp
9,865✔
2171
                }
9,865✔
2172
        case 243:
52✔
2173
                yyDollar = yyS[yypt-3 : yypt+1]
52✔
2174
                {
104✔
2175
                        yyVAL.exp = &BinBoolExp{left: yyDollar[1].exp, op: Or, right: yyDollar[3].exp}
52✔
2176
                }
52✔
2177
        case 245:
127✔
2178
                yyDollar = yyS[yypt-3 : yypt+1]
127✔
2179
                {
254✔
2180
                        yyVAL.exp = &BinBoolExp{left: yyDollar[1].exp, op: And, right: yyDollar[3].exp}
127✔
2181
                }
127✔
2182
        case 247:
25✔
2183
                yyDollar = yyS[yypt-2 : yypt+1]
25✔
2184
                {
50✔
2185
                        yyVAL.exp = &NotBoolExp{exp: yyDollar[2].exp}
25✔
2186
                }
25✔
2187
        case 249:
446✔
2188
                yyDollar = yyS[yypt-3 : yypt+1]
446✔
2189
                {
892✔
2190
                        yyVAL.exp = &CmpBoolExp{left: yyDollar[1].exp, op: yyDollar[2].cmpOp, right: yyDollar[3].exp}
446✔
2191
                }
446✔
2192
        case 250:
3✔
2193
                yyDollar = yyS[yypt-3 : yypt+1]
3✔
2194
                {
6✔
2195
                        yyVAL.exp = &CmpBoolExp{left: yyDollar[1].exp, op: EQ, right: &NullValue{t: AnyType}}
3✔
2196
                }
3✔
2197
        case 251:
2✔
2198
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
2199
                {
4✔
2200
                        yyVAL.exp = &CmpBoolExp{left: yyDollar[1].exp, op: NE, right: &NullValue{t: AnyType}}
2✔
2201
                }
2✔
2202
        case 252:
2✔
2203
                yyDollar = yyS[yypt-5 : yypt+1]
2✔
2204
                {
4✔
2205
                        yyVAL.exp = &BinBoolExp{
2✔
2206
                                left: &CmpBoolExp{
2✔
2207
                                        left:  yyDollar[1].exp,
2✔
2208
                                        op:    GE,
2✔
2209
                                        right: yyDollar[3].exp,
2✔
2210
                                },
2✔
2211
                                op: And,
2✔
2212
                                right: &CmpBoolExp{
2✔
2213
                                        left:  yyDollar[1].exp,
2✔
2214
                                        op:    LE,
2✔
2215
                                        right: yyDollar[5].exp,
2✔
2216
                                },
2✔
2217
                        }
2✔
2218
                }
2✔
2219
        case 253:
33✔
2220
                yyDollar = yyS[yypt-4 : yypt+1]
33✔
2221
                {
66✔
2222
                        yyVAL.exp = &LikeBoolExp{val: yyDollar[1].exp, notLike: yyDollar[2].boolean, pattern: yyDollar[4].exp}
33✔
2223
                }
33✔
2224
        case 254:
1✔
2225
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
2226
                {
2✔
2227
                        yyVAL.exp = &LikeBoolExp{val: yyDollar[1].exp, notLike: true, pattern: yyDollar[3].exp}
1✔
2228
                }
1✔
2229
        case 256:
2✔
2230
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
2231
                {
4✔
2232
                        yyVAL.exp = &ExistsBoolExp{q: (yyDollar[3].stmt).(DataSource)}
2✔
2233
                }
2✔
2234
        case 257:
1✔
2235
                yyDollar = yyS[yypt-6 : yypt+1]
1✔
2236
                {
2✔
2237
                        yyVAL.exp = &InSubQueryExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, q: yyDollar[5].stmt.(*SelectStmt)}
1✔
2238
                }
1✔
2239
        case 258:
14✔
2240
                yyDollar = yyS[yypt-6 : yypt+1]
14✔
2241
                {
28✔
2242
                        yyVAL.exp = &InListExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, values: yyDollar[5].values}
14✔
2243
                }
14✔
2244
        case 259:
25✔
2245
                yyDollar = yyS[yypt-1 : yypt+1]
25✔
2246
                {
50✔
2247
                        yyVAL.exp = yyDollar[1].exp
25✔
2248
                }
25✔
2249
        case 261:
33✔
2250
                yyDollar = yyS[yypt-3 : yypt+1]
33✔
2251
                {
66✔
2252
                        yyVAL.exp = &NumExp{left: yyDollar[1].exp, op: ADDOP, right: yyDollar[3].exp}
33✔
2253
                }
33✔
2254
        case 262:
19✔
2255
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
2256
                {
38✔
2257
                        yyVAL.exp = &NumExp{left: yyDollar[1].exp, op: SUBSOP, right: yyDollar[3].exp}
19✔
2258
                }
19✔
2259
        case 264:
19✔
2260
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
2261
                {
38✔
2262
                        yyVAL.exp = &NumExp{left: yyDollar[1].exp, op: MULTOP, right: yyDollar[3].exp}
19✔
2263
                }
19✔
2264
        case 265:
18✔
2265
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
2266
                {
36✔
2267
                        yyVAL.exp = &NumExp{left: yyDollar[1].exp, op: DIVOP, right: yyDollar[3].exp}
18✔
2268
                }
18✔
2269
        case 266:
6✔
2270
                yyDollar = yyS[yypt-3 : yypt+1]
6✔
2271
                {
12✔
2272
                        yyVAL.exp = &NumExp{left: yyDollar[1].exp, op: MODOP, right: yyDollar[3].exp}
6✔
2273
                }
6✔
2274
        case 268:
11✔
2275
                yyDollar = yyS[yypt-2 : yypt+1]
11✔
2276
                {
22✔
2277
                        i, isInt := yyDollar[2].exp.(*Integer)
11✔
2278
                        if isInt {
16✔
2279
                                i.val = -i.val
5✔
2280
                                yyVAL.exp = i
5✔
2281
                        } else {
11✔
2282
                                yyVAL.exp = &NumExp{left: &Integer{val: 0}, op: SUBSOP, right: yyDollar[2].exp}
6✔
2283
                        }
6✔
2284
                }
2285
        case 270:
240✔
2286
                yyDollar = yyS[yypt-3 : yypt+1]
240✔
2287
                {
480✔
2288
                        yyVAL.exp = yyDollar[2].exp
240✔
2289
                }
240✔
2290
        case 272:
1,741✔
2291
                yyDollar = yyS[yypt-1 : yypt+1]
1,741✔
2292
                {
3,482✔
2293
                        yyVAL.exp = yyDollar[1].sel
1,741✔
2294
                }
1,741✔
2295
        case 273:
8,591✔
2296
                yyDollar = yyS[yypt-1 : yypt+1]
8,591✔
2297
                {
17,182✔
2298
                        yyVAL.exp = yyDollar[1].value
8,591✔
2299
                }
8,591✔
2300
        case 274:
26✔
2301
                yyDollar = yyS[yypt-3 : yypt+1]
26✔
2302
                {
52✔
2303
                        yyVAL.exp = &Cast{val: yyDollar[1].exp, t: yyDollar[3].sqlType}
26✔
2304
                }
26✔
2305
        case 275:
24✔
2306
                yyDollar = yyS[yypt-6 : yypt+1]
24✔
2307
                {
48✔
2308
                        yyVAL.exp = &ExtractFromTimestampExp{Field: yyDollar[3].timestampField, Exp: yyDollar[5].exp}
24✔
2309
                }
24✔
2310
        case 276:
45✔
2311
                yyDollar = yyS[yypt-0 : yypt+1]
45✔
2312
                {
90✔
2313
                        yyVAL.boolean = false
45✔
2314
                }
45✔
2315
        case 277:
3✔
2316
                yyDollar = yyS[yypt-1 : yypt+1]
3✔
2317
                {
6✔
2318
                        yyVAL.boolean = true
3✔
2319
                }
3✔
2320
        case 278:
4✔
2321
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
2322
                {
8✔
2323
                        yyVAL.timestampField = TimestampFieldTypeYear
4✔
2324
                }
4✔
2325
        case 279:
4✔
2326
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
2327
                {
8✔
2328
                        yyVAL.timestampField = TimestampFieldTypeMonth
4✔
2329
                }
4✔
2330
        case 280:
4✔
2331
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
2332
                {
8✔
2333
                        yyVAL.timestampField = TimestampFieldTypeDay
4✔
2334
                }
4✔
2335
        case 281:
4✔
2336
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
2337
                {
8✔
2338
                        yyVAL.timestampField = TimestampFieldTypeHour
4✔
2339
                }
4✔
2340
        case 282:
4✔
2341
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
2342
                {
8✔
2343
                        yyVAL.timestampField = TimestampFieldTypeMinute
4✔
2344
                }
4✔
2345
        case 283:
4✔
2346
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
2347
                {
8✔
2348
                        yyVAL.timestampField = TimestampFieldTypeSecond
4✔
2349
                }
4✔
2350
        }
2351
        goto yystack /* stack new state and value */
228,156✔
2352
}
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