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

codenotary / immudb / 18243888765

04 Oct 2025 11:45AM UTC coverage: 89.221% (-0.02%) from 89.241%
18243888765

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

357 of 402 new or added lines in 3 files covered. (88.81%)

1 existing line in 1 file now uncovered.

37909 of 42489 relevant lines covered (89.22%)

149222.03 hits per line

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

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

4
import __yyfmt__ "fmt"
5

6
import "fmt"
7

8
func setResult(l yyLexer, stmts []SQLStmt) {
3,438✔
9
        l.(*lexer).result = stmts
3,438✔
10
}
3,438✔
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
        ids             []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, 137,
336
        85, 263,
337
        88, 263,
338
        -2, 247,
339
        -1, 347,
340
        66, 196,
341
        -2, 191,
342
        -1, 406,
343
        66, 196,
344
        -2, 193,
345
}
346

347
const yyPrivate = 57344
348

349
const yyLast = 1414
350

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

496
var yyPact = [...]int16{
497
        276, -1000, -1000, -6, -1000, -1000, -1000, 318, -1000, -1000,
498
        445, 170, 433, 449, 380, 380, 310, 306, 285, 1224,
499
        241, 226, 288, -1000, 276, -1000, 206, 1300, 206, 379,
500
        132, -1000, 129, 450, 128, 148, 121, 119, 118, 373,
501
        325, 12, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 372,
502
        1224, 1224, 1224, 300, -1000, -1000, -1000, -1000, -1000, -1000,
503
        -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
504
        -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
505
        -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 239, -1000,
506
        -1000, 114, -1000, 327, 732, -1000, -1000, 111, 212, 211,
507
        -11, -1000, 371, 206, 451, -1000, -1000, 436, 617, 617,
508
        -1000, 110, 25, -1000, 403, 421, 466, -1000, 380, 465,
509
        -12, -13, 273, 85, 196, -1000, -1000, 109, 284, -1000,
510
        11, 1148, 137, 143, -1000, 847, -1000, 101, -1000, -5,
511
        -14, -1000, -1000, 847, 57, -1000, 847, 169, -1000, -1000,
512
        -16, 17, -19, -1000, -1000, -1000, -1000, -1000, -20, -1000,
513
        -1000, -1000, -1000, 21, -21, -1000, -1000, 188, 187, 155,
514
        108, 367, 415, -1000, 617, 617, -1000, 847, -1000, -1000,
515
        -28, 107, 349, 356, 341, 409, 106, -1000, 105, 78,
516
        78, 468, 847, 60, -1000, 135, -1000, -1000, 962, 847,
517
        -1000, -1000, 1224, 847, 847, -1000, 57, 207, 57, 209,
518
        57, 57, 57, -1000, 57, 57, 57, 196, 232, -1000,
519
        -1000, -49, 422, 200, 15, 50, 1047, 847, 1224, 847,
520
        -1000, 1224, -63, -1000, -1000, -1000, 336, 422, 847, 104,
521
        -29, 103, 49, -1000, -1000, -1000, 78, -1000, 102, 95,
522
        91, 89, 88, 36, 358, 354, -50, 10, -1000, -64,
523
        265, 378, -1000, 468, 85, 847, 468, 450, 252, -32,
524
        -34, -37, -43, 1148, 1148, -1000, 143, -1000, 2, -1000,
525
        173, 16, 57, -44, 2, -5, -5, -1000, -1000, -1000,
526
        -51, 231, 847, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
527
        -1000, -1000, -1000, 283, -1000, -1000, -1000, -1000, -1000, -1000,
528
        34, -1000, -52, -53, 249, -1000, -55, 9, -1000, -45,
529
        -1000, 155, -41, -93, -1000, 333, 78, -46, 457, -74,
530
        -1000, -1000, 352, -1000, -1000, 457, 463, 434, 222, 83,
531
        222, 263, 847, 366, 265, -1000, -1000, 145, 1148, -47,
532
        -56, 391, -57, -58, 79, -59, -1000, -1000, -1000, 57,
533
        2, 502, -1000, 223, 847, 847, 233, 847, -1000, -1000,
534
        -1000, 422, -1000, 847, 155, -1000, -1000, -1000, 78, 179,
535
        54, 53, 847, -78, 78, -1000, -1000, -1000, -1000, -1000,
536
        76, -1000, 74, 73, 365, -47, -1000, -1000, -1000, -1000,
537
        847, -1000, -41, 263, 273, -1000, 145, 278, -1000, -1000,
538
        -79, -1000, 847, 1148, 67, 1148, 1148, -65, 1148, 2,
539
        -66, -80, 226, -1000, 227, -1000, 847, -67, -69, -1000,
540
        -81, -82, 183, -1000, 123, -97, -71, -1000, -1000, -84,
541
        -1000, -1000, -1000, -1000, 298, 8, -1000, -1000, -1000, 271,
542
        -1000, 962, -47, -1000, -85, -1000, -86, -1000, -1000, -1000,
543
        -1000, -1000, -1000, 847, -1000, -1000, -1000, -1000, -1000, 338,
544
        -1000, -1000, -1000, -1000, -1000, 295, 275, 268, 468, -1000,
545
        -1000, 1148, -1000, -1000, 335, 293, 261, 847, 1224, 363,
546
        -1000, -1000, -1000, 265, 267, -1000, 7, -1000, 847, 263,
547
        847, 1224, -1000, -1000, 6, 256, -1000, 847, -1000, -1000,
548
        -1000, 256, -1000,
549
}
550

551
var yyPgo = [...]int16{
552
        0, 547, 415, 544, 542, 540, 30, 539, 27, 18,
553
        14, 535, 533, 13, 8, 19, 9, 532, 7, 531,
554
        530, 2, 529, 528, 10, 22, 382, 21, 527, 526,
555
        35, 525, 17, 524, 522, 521, 25, 15, 0, 520,
556
        11, 519, 518, 517, 514, 36, 512, 511, 26, 33,
557
        31, 34, 510, 506, 6, 3, 505, 502, 498, 497,
558
        12, 496, 495, 1, 5, 255, 493, 492, 490, 489,
559
        23, 487, 485, 20, 483, 138, 482, 481, 16, 480,
560
        4, 28, 29, 478,
561
}
562

563
var yyR1 = [...]int8{
564
        0, 1, 2, 2, 83, 83, 3, 3, 3, 4,
565
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
566
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
567
        4, 4, 4, 4, 75, 75, 75, 74, 74, 74,
568
        74, 74, 74, 74, 73, 73, 73, 73, 65, 65,
569
        10, 10, 5, 5, 5, 5, 25, 25, 72, 72,
570
        71, 71, 70, 11, 11, 13, 13, 14, 9, 9,
571
        12, 12, 16, 16, 15, 15, 17, 17, 17, 17,
572
        17, 17, 17, 17, 17, 17, 78, 78, 78, 78,
573
        78, 78, 78, 78, 18, 37, 37, 36, 36, 36,
574
        8, 69, 69, 59, 59, 59, 66, 66, 67, 67,
575
        67, 6, 6, 6, 6, 6, 6, 6, 6, 7,
576
        7, 23, 23, 22, 22, 57, 57, 58, 58, 19,
577
        19, 19, 19, 20, 20, 21, 21, 81, 82, 80,
578
        80, 79, 79, 79, 79, 79, 79, 79, 79, 79,
579
        79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
580
        79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
581
        79, 79, 24, 24, 24, 24, 24, 24, 24, 24,
582
        24, 26, 27, 28, 28, 28, 29, 29, 29, 30,
583
        30, 31, 31, 32, 32, 33, 34, 34, 40, 40,
584
        53, 53, 41, 41, 54, 54, 55, 55, 62, 62,
585
        64, 64, 61, 61, 63, 63, 63, 60, 60, 60,
586
        35, 35, 39, 39, 56, 76, 76, 43, 43, 38,
587
        44, 44, 45, 45, 49, 49, 46, 46, 46, 46,
588
        46, 46, 46, 47, 47, 47, 47, 47, 48, 48,
589
        48, 50, 50, 50, 50, 51, 51, 52, 52, 42,
590
        42, 42, 42, 68, 68, 77, 77, 77, 77, 77,
591
        77,
592
}
593

594
var yyR2 = [...]int8{
595
        0, 1, 2, 3, 0, 1, 1, 1, 1, 2,
596
        1, 1, 1, 4, 2, 3, 3, 9, 6, 3,
597
        8, 9, 7, 5, 6, 6, 8, 6, 6, 7,
598
        7, 3, 8, 8, 2, 1, 3, 1, 1, 1,
599
        1, 1, 1, 1, 0, 1, 1, 1, 0, 3,
600
        1, 3, 8, 7, 7, 8, 2, 1, 0, 4,
601
        1, 3, 3, 0, 1, 1, 3, 3, 1, 3,
602
        1, 3, 0, 1, 1, 3, 1, 1, 1, 1,
603
        1, 6, 1, 1, 1, 1, 1, 1, 1, 1,
604
        1, 1, 1, 1, 4, 1, 3, 1, 1, 3,
605
        6, 0, 2, 0, 3, 3, 0, 1, 0, 1,
606
        2, 1, 4, 2, 2, 3, 2, 2, 4, 13,
607
        3, 0, 1, 0, 1, 1, 1, 2, 4, 1,
608
        2, 4, 4, 2, 3, 1, 3, 1, 1, 1,
609
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
610
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
611
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
612
        1, 1, 3, 4, 4, 4, 4, 4, 4, 2,
613
        6, 1, 2, 0, 2, 2, 0, 2, 2, 2,
614
        1, 0, 1, 1, 2, 6, 0, 1, 0, 2,
615
        0, 3, 0, 2, 0, 2, 0, 2, 0, 3,
616
        0, 4, 2, 4, 0, 1, 1, 0, 1, 2,
617
        2, 4, 0, 1, 5, 4, 5, 0, 2, 1,
618
        3, 1, 3, 1, 2, 1, 3, 3, 4, 5,
619
        4, 3, 1, 4, 6, 6, 1, 1, 3, 3,
620
        1, 3, 3, 3, 1, 2, 1, 3, 1, 1,
621
        1, 3, 6, 0, 1, 1, 1, 1, 1, 1,
622
        1,
623
}
624

625
var yyChk = [...]int16{
626
        -1000, -1, -2, -3, -4, -5, -6, 48, 50, 51,
627
        4, 6, 5, 34, 43, 44, 52, 53, 56, 57,
628
        -7, 94, 63, -83, 130, 49, 7, 30, 32, 31,
629
        8, 113, 7, 14, 30, 32, 8, 30, 8, -75,
630
        78, -74, 63, 4, 52, 57, 56, 5, 34, -75,
631
        54, 54, 65, -26, -80, 113, -79, 13, 21, 5,
632
        7, 14, 32, 34, 35, 36, 39, 41, 43, 44,
633
        47, 48, 49, 50, 51, 52, 56, 57, 59, 86,
634
        94, 96, 100, 101, 102, 103, 104, 105, 77, 95,
635
        96, 30, 97, 45, -22, 64, -2, -65, 86, 86,
636
        -81, -80, -65, 32, 113, 113, -27, -28, 16, 17,
637
        113, 33, 113, 113, 113, 113, 33, 47, 123, 33,
638
        -26, -26, -26, 58, -23, 78, 113, 46, -57, 126,
639
        -58, -38, -44, -45, -49, 84, -46, -48, -47, -50,
640
        87, -56, -51, 79, 125, -52, 131, -42, -19, -17,
641
        99, -21, 119, 114, 115, 116, 117, 118, 92, -18,
642
        106, 107, 91, -82, 113, -80, 113, 84, 84, 131,
643
        33, -65, 9, -29, 19, 18, -30, 20, -38, -30,
644
        113, 121, 35, 36, 5, 9, 7, -75, 7, 131,
645
        131, -40, 68, -71, -70, 113, -6, 113, 65, 123,
646
        -60, -80, 76, 110, 109, -49, 111, 89, 98, -68,
647
        112, 124, 125, 84, 126, 127, 128, 131, -39, -38,
648
        -51, -38, 93, 131, -20, 122, 131, 131, 121, 131,
649
        87, 87, -37, -36, -8, -35, 40, 113, 42, 39,
650
        113, 33, 10, -30, -30, -38, 131, 113, 38, 37,
651
        38, 38, 39, 10, 113, 113, -11, -9, 113, -9,
652
        -64, 6, -38, -40, 123, 111, -24, -26, 131, 95,
653
        96, 30, 97, -18, -38, -80, -45, -49, -48, 91,
654
        84, -48, 85, 88, -48, -50, -50, -51, -51, -51,
655
        -6, -76, 80, 132, -78, 22, 23, 24, 25, 26,
656
        27, 28, 29, -77, 100, 101, 102, 103, 104, 105,
657
        122, 116, 126, -21, -38, -82, -16, -15, -38, -81,
658
        132, 123, 41, -78, -38, 113, 131, 113, 116, -9,
659
        -8, 113, 113, 113, 113, 116, 37, 37, 132, 123,
660
        132, -54, 71, 32, -64, -70, -38, -64, -27, 55,
661
        -6, 15, 131, 131, 131, 131, -60, -60, 91, 109,
662
        -48, 131, 132, -43, 80, 82, -38, 65, 116, 132,
663
        132, 76, 132, 123, 131, -36, -10, 113, 131, -59,
664
        133, 131, 42, -9, 131, -73, 11, 12, 13, 132,
665
        37, -73, 8, 8, -25, 55, -6, 113, -25, -55,
666
        72, -38, 33, -54, -31, -32, -33, -34, 108, -60,
667
        -13, -14, 131, 132, 21, 132, 132, 113, 132, -48,
668
        -6, -15, 94, 83, -38, -38, 81, -38, -78, -38,
669
        -37, -9, -67, 91, 84, 114, 114, -38, 132, -9,
670
        113, 113, 113, -72, 33, -13, -38, -10, -55, -40,
671
        -32, 66, 123, 132, -16, -60, 113, -60, -60, 132,
672
        -60, 132, 132, 81, -38, 132, 132, 132, 132, -66,
673
        90, 91, 134, 132, 132, 59, -53, 69, -24, -14,
674
        132, 132, -38, -69, 40, 60, -41, 67, 70, -64,
675
        -60, 41, 61, -62, 73, -38, -12, -21, 33, -54,
676
        70, 123, -38, -55, -61, -38, -21, 123, -63, 74,
677
        75, -38, -63,
678
}
679

680
var yyDef = [...]int16{
681
        0, -2, 1, 4, 6, 7, 8, 10, 11, 12,
682
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
683
        111, 0, 123, 2, 5, 9, 48, 0, 48, 0,
684
        0, 14, 0, 183, 0, 0, 0, 0, 0, 0,
685
        0, 35, 37, 38, 39, 40, 41, 42, 43, 0,
686
        0, 0, 0, 0, 181, 139, 140, 141, 142, 143,
687
        144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
688
        154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
689
        164, 165, 166, 167, 168, 169, 170, 171, 121, 113,
690
        114, 0, 116, 117, 0, 124, 3, 0, 0, 163,
691
        0, 137, 0, 48, 0, 15, 16, 186, 0, 0,
692
        19, 0, 0, 31, 0, 0, 0, 34, 0, 0,
693
        0, 0, 198, 0, 0, 122, 115, 0, 120, 125,
694
        126, 217, 229, 231, 233, 0, 235, -2, 242, 250,
695
        0, 246, 254, 222, 0, 256, 0, 258, 259, 260,
696
        0, 129, 0, 76, 77, 78, 79, 80, 0, 82,
697
        83, 84, 85, 135, 139, 138, 13, 0, 0, 0,
698
        0, 0, 0, 182, 0, 0, 184, 0, 190, 185,
699
        0, 0, 0, 0, 0, 0, 0, 36, 0, 63,
700
        0, 210, 0, 198, 60, 0, 112, 118, 0, 0,
701
        127, 218, 0, 0, 0, 234, 0, 0, 0, 0,
702
        0, 0, 0, 264, 0, 0, 0, 0, 0, 223,
703
        255, 0, 0, 0, 130, 0, 0, 0, 0, 72,
704
        49, 0, 0, 95, 97, 98, 0, 0, 0, 0,
705
        0, 0, 0, 187, 188, 189, 0, 23, 0, 0,
706
        0, 0, 0, 0, 0, 0, 0, 64, 68, 0,
707
        204, 0, 199, 210, 0, 0, 210, 183, 0, 0,
708
        165, 0, 0, 217, 217, 219, 230, 232, 236, 237,
709
        0, 0, 0, 0, 241, 248, 249, 251, 252, 253,
710
        0, 227, 0, 257, 261, 86, 87, 88, 89, 90,
711
        91, 92, 93, 0, 265, 266, 267, 268, 269, 270,
712
        0, 133, 0, 0, 0, 136, 0, 73, 74, 0,
713
        18, 0, 0, 103, 220, 0, 0, 0, 44, 0,
714
        24, 25, 0, 27, 28, 44, 0, 0, 0, 0,
715
        0, 206, 0, 0, 204, 61, 62, -2, 217, 0,
716
        0, 0, 0, 0, 0, 0, 179, 128, 238, 0,
717
        240, 0, 243, 0, 0, 0, 0, 0, 134, 131,
718
        132, 0, 94, 0, 0, 96, 99, 50, 0, 108,
719
        0, 0, 0, 0, 0, 29, 45, 46, 47, 22,
720
        0, 30, 0, 0, 58, 0, 57, 69, 53, 54,
721
        0, 205, 0, 206, 198, 192, -2, 0, 197, 172,
722
        0, 65, 72, 217, 0, 217, 217, 0, 217, 239,
723
        0, 0, 164, 224, 0, 228, 0, 0, 0, 75,
724
        0, 0, 106, 109, 0, 0, 0, 221, 20, 0,
725
        26, 32, 33, 52, 0, 56, 207, 211, 55, 200,
726
        194, 0, 0, 173, 0, 174, 0, 175, 176, 177,
727
        178, 244, 245, 0, 225, 262, 81, 17, 51, 101,
728
        107, 110, 104, 105, 21, 0, 202, 0, 210, 66,
729
        67, 217, 226, 100, 0, 0, 208, 0, 0, 0,
730
        180, 102, 59, 204, 0, 203, 201, 70, 0, 206,
731
        0, 0, 195, 119, 209, 214, 71, 0, 212, 215,
732
        216, 214, 213,
733
}
734

735
var yyTok1 = [...]uint8{
736
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
737
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
738
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
739
        3, 3, 3, 3, 3, 3, 3, 128, 3, 3,
740
        131, 132, 126, 124, 123, 125, 129, 127, 3, 3,
741
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
742
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
743
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
744
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
745
        3, 133, 3, 134,
746
}
747

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

764
var yyTok3 = [...]int8{
765
        0,
766
}
767

768
var yyErrorMessages = [...]struct {
769
        state int
770
        token int
771
        msg   string
772
}{}
773

774
/*        parser for yacc output        */
775

776
var (
777
        yyDebug        = 0
778
        yyErrorVerbose = false
779
)
780

781
type yyLexer interface {
782
        Lex(lval *yySymType) int
783
        Error(s string)
784
}
785

786
type yyParser interface {
787
        Parse(yyLexer) int
788
        Lookahead() int
789
}
790

791
type yyParserImpl struct {
792
        lval  yySymType
793
        stack [yyInitialStackSize]yySymType
794
        char  int
795
}
796

797
func (p *yyParserImpl) Lookahead() int {
×
798
        return p.char
×
799
}
×
800

801
func yyNewParser() yyParser {
3,476✔
802
        return &yyParserImpl{}
3,476✔
803
}
3,476✔
804

805
const yyFlag = -1000
806

807
func yyTokname(c int) string {
57✔
808
        if c >= 1 && c-1 < len(yyToknames) {
114✔
809
                if yyToknames[c-1] != "" {
114✔
810
                        return yyToknames[c-1]
57✔
811
                }
57✔
812
        }
813
        return __yyfmt__.Sprintf("tok-%v", c)
×
814
}
815

816
func yyStatname(s int) string {
×
817
        if s >= 0 && s < len(yyStatenames) {
×
818
                if yyStatenames[s] != "" {
×
819
                        return yyStatenames[s]
×
820
                }
×
821
        }
822
        return __yyfmt__.Sprintf("state-%v", s)
×
823
}
824

825
func yyErrorMessage(state, lookAhead int) string {
40✔
826
        const TOKSTART = 4
40✔
827

40✔
828
        if !yyErrorVerbose {
44✔
829
                return "syntax error"
4✔
830
        }
4✔
831

832
        for _, e := range yyErrorMessages {
36✔
833
                if e.state == state && e.token == lookAhead {
×
834
                        return "syntax error: " + e.msg
×
835
                }
×
836
        }
837

838
        res := "syntax error: unexpected " + yyTokname(lookAhead)
36✔
839

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

36✔
843
        // Look for shiftable tokens.
36✔
844
        base := int(yyPact[state])
36✔
845
        for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
2,825✔
846
                if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
2,905✔
847
                        if len(expected) == cap(expected) {
135✔
848
                                return res
19✔
849
                        }
19✔
850
                        expected = append(expected, tok)
97✔
851
                }
852
        }
853

854
        if yyDef[state] == -2 {
19✔
855
                i := 0
2✔
856
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
857
                        i += 2
×
858
                }
×
859

860
                // Look for tokens that we accept or reduce.
861
                for i += 2; yyExca[i] >= 0; i += 2 {
4✔
862
                        tok := int(yyExca[i])
2✔
863
                        if tok < TOKSTART || yyExca[i+1] == 0 {
4✔
864
                                continue
2✔
865
                        }
866
                        if len(expected) == cap(expected) {
×
867
                                return res
×
868
                        }
×
869
                        expected = append(expected, tok)
×
870
                }
871

872
                // If the default action is to accept or reduce, give up.
873
                if yyExca[i+1] != 0 {
2✔
874
                        return res
×
875
                }
×
876
        }
877

878
        for i, tok := range expected {
38✔
879
                if i == 0 {
36✔
880
                        res += ", expecting "
15✔
881
                } else {
21✔
882
                        res += " or "
6✔
883
                }
6✔
884
                res += yyTokname(tok)
21✔
885
        }
886
        return res
17✔
887
}
888

889
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
62,646✔
890
        token = 0
62,646✔
891
        char = lex.Lex(lval)
62,646✔
892
        if char <= 0 {
66,084✔
893
                token = int(yyTok1[0])
3,438✔
894
                goto out
3,438✔
895
        }
896
        if char < len(yyTok1) {
82,257✔
897
                token = int(yyTok1[char])
23,049✔
898
                goto out
23,049✔
899
        }
900
        if char >= yyPrivate {
72,318✔
901
                if char < yyPrivate+len(yyTok2) {
72,318✔
902
                        token = int(yyTok2[char-yyPrivate])
36,159✔
903
                        goto out
36,159✔
904
                }
905
        }
906
        for i := 0; i < len(yyTok3); i += 2 {
×
907
                token = int(yyTok3[i+0])
×
908
                if token == char {
×
909
                        token = int(yyTok3[i+1])
×
910
                        goto out
×
911
                }
912
        }
913

914
out:
915
        if token == 0 {
62,646✔
916
                token = int(yyTok2[1]) /* unknown char */
×
917
        }
×
918
        if yyDebug >= 3 {
62,646✔
919
                __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
×
920
        }
×
921
        return char, token
62,646✔
922
}
923

924
func yyParse(yylex yyLexer) int {
3,476✔
925
        return yyNewParser().Parse(yylex)
3,476✔
926
}
3,476✔
927

928
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
3,476✔
929
        var yyn int
3,476✔
930
        var yyVAL yySymType
3,476✔
931
        var yyDollar []yySymType
3,476✔
932
        _ = yyDollar // silence set and not used
3,476✔
933
        yyS := yyrcvr.stack[:]
3,476✔
934

3,476✔
935
        Nerrs := 0   /* number of errors */
3,476✔
936
        Errflag := 0 /* error recovery flag */
3,476✔
937
        yystate := 0
3,476✔
938
        yyrcvr.char = -1
3,476✔
939
        yytoken := -1 // yyrcvr.char translated into internal numbering
3,476✔
940
        defer func() {
6,952✔
941
                // Make sure we report no lookahead when not parsing.
3,476✔
942
                yystate = -1
3,476✔
943
                yyrcvr.char = -1
3,476✔
944
                yytoken = -1
3,476✔
945
        }()
3,476✔
946
        yyp := -1
3,476✔
947
        goto yystack
3,476✔
948

949
ret0:
950
        return 0
3,436✔
951

3,436✔
952
ret1:
3,436✔
953
        return 1
40✔
954

40✔
955
yystack:
40✔
956
        /* put a state and value onto the stack */
957
        if yyDebug >= 4 {
262,789✔
958
                __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
×
959
        }
×
960

961
        yyp++
262,789✔
962
        if yyp >= len(yyS) {
262,891✔
963
                nyys := make([]yySymType, len(yyS)*2)
102✔
964
                copy(nyys, yyS)
102✔
965
                yyS = nyys
102✔
966
        }
102✔
967
        yyS[yyp] = yyVAL
262,789✔
968
        yyS[yyp].yys = yystate
262,789✔
969

262,789✔
970
yynewstate:
262,789✔
971
        yyn = int(yyPact[yystate])
262,789✔
972
        if yyn <= yyFlag {
385,156✔
973
                goto yydefault /* simple state */
122,367✔
974
        }
975
        if yyrcvr.char < 0 {
203,068✔
976
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
62,646✔
977
        }
62,646✔
978
        yyn += yytoken
140,422✔
979
        if yyn < 0 || yyn >= yyLast {
144,541✔
980
                goto yydefault
4,119✔
981
        }
982
        yyn = int(yyAct[yyn])
136,303✔
983
        if int(yyChk[yyn]) == yytoken { /* valid shift */
195,473✔
984
                yyrcvr.char = -1
59,170✔
985
                yytoken = -1
59,170✔
986
                yyVAL = yyrcvr.lval
59,170✔
987
                yystate = yyn
59,170✔
988
                if Errflag > 0 {
59,170✔
989
                        Errflag--
×
990
                }
×
991
                goto yystack
59,170✔
992
        }
993

994
yydefault:
995
        /* default state action */
996
        yyn = int(yyDef[yystate])
203,619✔
997
        if yyn == -2 {
217,349✔
998
                if yyrcvr.char < 0 {
13,730✔
999
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
1000
                }
×
1001

1002
                /* look through exception table */
1003
                xi := 0
13,730✔
1004
                for {
61,659✔
1005
                        if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
61,659✔
1006
                                break
13,730✔
1007
                        }
1008
                        xi += 2
34,199✔
1009
                }
1010
                for xi += 2; ; xi += 2 {
47,149✔
1011
                        yyn = int(yyExca[xi+0])
33,419✔
1012
                        if yyn < 0 || yyn == yytoken {
47,149✔
1013
                                break
13,730✔
1014
                        }
1015
                }
1016
                yyn = int(yyExca[xi+1])
13,730✔
1017
                if yyn < 0 {
17,166✔
1018
                        goto ret0
3,436✔
1019
                }
1020
        }
1021
        if yyn == 0 {
200,223✔
1022
                /* error ... attempt to resume parsing */
40✔
1023
                switch Errflag {
40✔
1024
                case 0: /* brand new error */
40✔
1025
                        yylex.Error(yyErrorMessage(yystate, yytoken))
40✔
1026
                        Nerrs++
40✔
1027
                        if yyDebug >= 1 {
40✔
1028
                                __yyfmt__.Printf("%s", yyStatname(yystate))
×
1029
                                __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
×
1030
                        }
×
1031
                        fallthrough
40✔
1032

1033
                case 1, 2: /* incompletely recovered error ... try again */
40✔
1034
                        Errflag = 3
40✔
1035

40✔
1036
                        /* find a state where "error" is a legal shift action */
40✔
1037
                        for yyp >= 0 {
254✔
1038
                                yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
214✔
1039
                                if yyn >= 0 && yyn < yyLast {
373✔
1040
                                        yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
159✔
1041
                                        if int(yyChk[yystate]) == yyErrCode {
159✔
1042
                                                goto yystack
×
1043
                                        }
1044
                                }
1045

1046
                                /* the current p has no shift on "error", pop stack */
1047
                                if yyDebug >= 2 {
214✔
1048
                                        __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
×
1049
                                }
×
1050
                                yyp--
214✔
1051
                        }
1052
                        /* there is no state on the stack with an error shift ... abort */
1053
                        goto ret1
40✔
1054

1055
                case 3: /* no shift yet; clobber input char */
×
1056
                        if yyDebug >= 2 {
×
1057
                                __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
×
1058
                        }
×
1059
                        if yytoken == yyEofCode {
×
1060
                                goto ret1
×
1061
                        }
1062
                        yyrcvr.char = -1
×
1063
                        yytoken = -1
×
1064
                        goto yynewstate /* try again in the same state */
×
1065
                }
1066
        }
1067

1068
        /* reduction by production yyn */
1069
        if yyDebug >= 2 {
200,143✔
1070
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
1071
        }
×
1072

1073
        yynt := yyn
200,143✔
1074
        yypt := yyp
200,143✔
1075
        _ = yypt // guard against "declared and not used"
200,143✔
1076

200,143✔
1077
        yyp -= int(yyR2[yyn])
200,143✔
1078
        // yyp is now the index of $0. Perform the default action. Iff the
200,143✔
1079
        // reduced production is ε, $1 is possibly out of range.
200,143✔
1080
        if yyp+1 >= len(yyS) {
200,169✔
1081
                nyys := make([]yySymType, len(yyS)*2)
26✔
1082
                copy(nyys, yyS)
26✔
1083
                yyS = nyys
26✔
1084
        }
26✔
1085
        yyVAL = yyS[yyp+1]
200,143✔
1086

200,143✔
1087
        /* consult goto table to find next state */
200,143✔
1088
        yyn = int(yyR1[yyn])
200,143✔
1089
        yyg := int(yyPgo[yyn])
200,143✔
1090
        yyj := yyg + yyS[yyp].yys + 1
200,143✔
1091

200,143✔
1092
        if yyj >= yyLast {
200,143✔
UNCOV
1093
                yystate = int(yyAct[yyg])
×
1094
        } else {
200,143✔
1095
                yystate = int(yyAct[yyj])
200,143✔
1096
                if int(yyChk[yystate]) != -yyn {
371,468✔
1097
                        yystate = int(yyAct[yyg])
171,325✔
1098
                }
171,325✔
1099
        }
1100
        // dummy call; replaced with literal code
1101
        switch yynt {
200,143✔
1102

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