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

codenotary / immudb / 6562442758

18 Oct 2023 02:33PM UTC coverage: 89.595% (-0.003%) from 89.598%
6562442758

push

gh-ci

jeroiraz
feat(embedded/sql): table renaming

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

175 of 175 new or added lines in 3 files covered. (100.0%)

33546 of 37442 relevant lines covered (89.59%)

145176.5 hits per line

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

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

4
import __yyfmt__ "fmt"
5

6
import "fmt"
7

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

12
type yySymType struct {
13
        yys           int
14
        stmts         []SQLStmt
15
        stmt          SQLStmt
16
        datasource    DataSource
17
        colsSpec      []*ColSpec
18
        colSpec       *ColSpec
19
        cols          []*ColSelector
20
        rows          []*RowSpec
21
        row           *RowSpec
22
        values        []ValueExp
23
        value         ValueExp
24
        id            string
25
        integer       uint64
26
        float         float64
27
        str           string
28
        boolean       bool
29
        blob          []byte
30
        sqlType       SQLValueType
31
        aggFn         AggregateFn
32
        ids           []string
33
        col           *ColSelector
34
        sel           Selector
35
        sels          []Selector
36
        distinct      bool
37
        ds            DataSource
38
        tableRef      *tableRef
39
        period        period
40
        openPeriod    *openPeriod
41
        periodInstant periodInstant
42
        joins         []*JoinSpec
43
        join          *JoinSpec
44
        joinType      JoinType
45
        exp           ValueExp
46
        binExp        ValueExp
47
        err           error
48
        ordcols       []*OrdCol
49
        opt_ord       bool
50
        logicOp       LogicOperator
51
        cmpOp         CmpOperator
52
        pparam        int
53
        update        *colUpdate
54
        updates       []*colUpdate
55
        onConflict    *OnConflictDo
56
}
57

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

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

235
var yyStatenames = [...]string{}
236

237
const yyEofCode = 1
238
const yyErrCode = 2
239
const yyInitialStackSize = 16
240

241
var yyExca = [...]int16{
242
        -1, 1,
243
        1, -1,
244
        -2, 0,
245
        -1, 80,
246
        59, 146,
247
        62, 146,
248
        -2, 134,
249
        -1, 205,
250
        45, 110,
251
        -2, 105,
252
        -1, 236,
253
        45, 110,
254
        -2, 107,
255
}
256

257
const yyPrivate = 57344
258

259
const yyLast = 405
260

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

305
var yyPact = [...]int16{
306
        328, -1000, -1000, 6, -1000, -1000, -1000, 267, -1000, -1000,
307
        350, 180, 329, 312, 264, 263, 239, 141, 208, 241,
308
        -1000, 328, -1000, 182, 182, 182, 305, -1000, 149, 361,
309
        148, 161, 146, 141, 141, 141, 255, -1000, 197, 64,
310
        -1000, -1000, 140, 185, 137, 294, 182, -1000, -1000, 338,
311
        35, 35, -1000, 136, 66, 331, 7, 4, 231, 120,
312
        244, -1000, 238, -1000, 53, 119, -1000, -3, 65, -1000,
313
        143, -4, 135, 293, -1000, 35, 35, -1000, 262, 175,
314
        168, -1000, 262, 262, -5, -1000, -1000, 262, -1000, -1000,
315
        -1000, -1000, -1000, -8, -1000, -1000, -1000, -1000, -12, -1000,
316
        -9, 134, 284, 282, 278, 112, 112, 349, 262, 69,
317
        -1000, 151, -1000, -23, 80, -1000, -1000, 132, 33, 127,
318
        -1000, 125, -10, 126, -1000, -1000, 175, 262, 262, 262,
319
        262, 262, 262, 198, 196, 102, -1000, 54, 59, 244,
320
        86, 262, 262, 112, -1000, 125, 124, 123, 122, -22,
321
        51, -1000, -52, 220, 300, 175, 349, 120, 262, 349,
322
        361, 276, 119, -15, 119, -1000, -34, -35, -1000, 44,
323
        -1000, 94, 112, -16, 59, 59, 177, 177, 54, 5,
324
        -1000, 165, 262, -17, -1000, -38, -1000, 131, -43, 24,
325
        175, -53, -1000, -1000, 277, -1000, 260, 118, 259, 217,
326
        262, 292, 220, -1000, 175, 155, 119, -45, 330, -1000,
327
        -1000, -1000, -1000, 139, -67, -54, 112, -1000, 54, -14,
328
        -1000, 88, -1000, 262, -1000, 117, -18, -1000, -18, -1000,
329
        262, 175, -32, 217, 231, -1000, 155, 236, -1000, -1000,
330
        119, 116, 273, -1000, 183, 79, 76, -1000, -56, -46,
331
        -57, -48, 175, -1000, 78, -1000, 262, 22, 175, -1000,
332
        -1000, 112, -1000, 226, -1000, -23, -1000, -49, -32, 169,
333
        -1000, 164, -71, -51, -1000, -1000, -1000, -1000, -1000, -18,
334
        251, -55, -59, 234, 223, 349, 119, -58, -1000, -1000,
335
        -1000, -1000, -1000, -1000, 249, -1000, -1000, 215, 262, 109,
336
        291, -1000, -1000, 247, 220, 222, 175, 19, -1000, 262,
337
        -1000, 217, 109, 109, 175, -1000, 16, 212, -1000, 109,
338
        -1000, -1000, -1000, 212, -1000,
339
}
340

341
var yyPgo = [...]int16{
342
        0, 404, 321, 403, 402, 401, 16, 400, 399, 18,
343
        11, 8, 398, 397, 15, 7, 17, 12, 396, 9,
344
        20, 395, 394, 2, 393, 392, 10, 344, 19, 391,
345
        390, 175, 389, 13, 388, 387, 0, 14, 386, 385,
346
        384, 383, 3, 5, 382, 4, 381, 377, 1, 6,
347
        279, 376, 375, 374, 21, 373, 366, 363,
348
}
349

350
var yyR1 = [...]int8{
351
        0, 1, 2, 2, 57, 57, 3, 3, 3, 4,
352
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
353
        4, 4, 4, 4, 4, 4, 4, 50, 50, 11,
354
        11, 5, 5, 5, 5, 56, 56, 55, 55, 54,
355
        12, 12, 14, 14, 15, 10, 10, 13, 13, 17,
356
        17, 16, 16, 18, 18, 18, 18, 18, 18, 18,
357
        18, 18, 18, 19, 8, 8, 9, 44, 44, 44,
358
        51, 51, 52, 52, 52, 6, 6, 7, 25, 25,
359
        24, 24, 21, 21, 22, 22, 20, 20, 20, 23,
360
        23, 26, 26, 26, 26, 27, 28, 29, 29, 29,
361
        30, 30, 30, 31, 31, 32, 32, 33, 33, 34,
362
        35, 35, 37, 37, 41, 41, 38, 38, 42, 42,
363
        43, 43, 47, 47, 49, 49, 46, 46, 48, 48,
364
        48, 45, 45, 45, 36, 36, 36, 36, 36, 36,
365
        36, 36, 39, 39, 39, 39, 53, 53, 40, 40,
366
        40, 40, 40, 40, 40, 40,
367
}
368

369
var yyR2 = [...]int8{
370
        0, 1, 2, 3, 0, 1, 1, 1, 1, 2,
371
        1, 1, 1, 4, 2, 3, 3, 11, 3, 8,
372
        9, 7, 5, 6, 6, 8, 6, 0, 3, 1,
373
        3, 9, 8, 7, 8, 0, 4, 1, 3, 3,
374
        0, 1, 1, 3, 3, 1, 3, 1, 3, 0,
375
        1, 1, 3, 1, 1, 1, 1, 1, 6, 1,
376
        1, 1, 1, 4, 1, 3, 5, 0, 3, 3,
377
        0, 1, 0, 1, 2, 1, 4, 13, 0, 1,
378
        0, 1, 1, 1, 2, 4, 1, 4, 4, 1,
379
        3, 3, 4, 2, 6, 1, 2, 0, 2, 2,
380
        0, 2, 2, 2, 1, 0, 1, 1, 2, 6,
381
        0, 1, 0, 2, 0, 3, 0, 2, 0, 2,
382
        0, 2, 0, 3, 0, 4, 2, 4, 0, 1,
383
        1, 0, 1, 2, 1, 1, 2, 2, 4, 4,
384
        6, 6, 1, 1, 3, 3, 0, 1, 3, 3,
385
        3, 3, 3, 3, 3, 4,
386
}
387

388
var yyChk = [...]int16{
389
        -1000, -1, -2, -3, -4, -5, -6, 28, 30, 31,
390
        4, 6, 5, 21, 32, 33, 36, 37, -7, 42,
391
        -57, 89, 29, 7, 17, 19, 18, 73, 7, 8,
392
        17, 19, 17, 34, 34, 44, -27, 73, 56, -24,
393
        43, -2, -50, 60, -50, -50, 19, 73, -28, -29,
394
        10, 11, 73, 20, 73, 73, -27, -27, -27, 38,
395
        -25, 57, -21, 86, -22, -20, -23, 80, 73, 73,
396
        58, 73, 20, -50, -30, 13, 12, -31, 14, -36,
397
        -39, -40, 58, 85, 61, -20, -18, 90, 75, 76,
398
        77, 78, 79, 66, -19, 68, 69, 65, 73, -31,
399
        73, 82, 22, 23, 5, 90, 90, -37, 47, -55,
400
        -54, 73, -6, 44, 83, -45, 73, 55, 90, 82,
401
        61, 90, 73, 20, -31, -31, -36, 84, 85, 87,
402
        86, 71, 72, 63, -53, 67, 58, -36, -36, 90,
403
        -36, 90, 90, 90, 73, 25, 24, 25, 25, -12,
404
        -10, 73, -10, -49, 6, -36, -37, 83, 72, -26,
405
        -27, 90, -19, 73, -20, 73, 86, -23, 73, -8,
406
        -9, 73, 90, 73, -36, -36, -36, -36, -36, -36,
407
        65, 58, 59, 62, 74, -6, 91, -36, -17, -16,
408
        -36, -10, -9, 73, 73, 73, 91, 83, 91, -42,
409
        50, 19, -49, -54, -36, -49, -28, -6, 9, -45,
410
        -45, 91, 91, 83, 74, -10, 90, 65, -36, 90,
411
        91, 55, 91, 83, 91, 24, 35, 73, 35, -43,
412
        51, -36, 20, -42, -32, -33, -34, -35, 70, -45,
413
        91, 15, 26, -9, -44, 92, 90, 91, -10, -6,
414
        -16, 74, -36, 73, -14, -15, 90, -14, -36, -11,
415
        73, 90, -43, -37, -33, 45, -45, 73, 27, -52,
416
        65, 58, 75, 75, 91, 91, 91, 91, -56, 83,
417
        20, -17, -10, -41, 48, -26, 91, -11, -51, 64,
418
        65, 93, 91, -15, 39, 91, 91, -38, 46, 49,
419
        -49, -45, 91, 40, -47, 52, -36, -13, -23, 20,
420
        41, -42, 49, 83, -36, -43, -46, -23, -23, 83,
421
        -48, 53, 54, -23, -48,
422
}
423

424
var yyDef = [...]int16{
425
        0, -2, 1, 4, 6, 7, 8, 10, 11, 12,
426
        0, 0, 0, 0, 0, 0, 0, 0, 75, 80,
427
        2, 5, 9, 27, 27, 27, 0, 14, 0, 97,
428
        0, 0, 0, 0, 0, 0, 0, 95, 78, 0,
429
        81, 3, 0, 0, 0, 0, 27, 15, 16, 100,
430
        0, 0, 18, 0, 0, 0, 0, 0, 112, 0,
431
        0, 79, 0, 82, 83, 131, 86, 0, 89, 13,
432
        0, 0, 0, 0, 96, 0, 0, 98, 0, 104,
433
        -2, 135, 0, 0, 0, 142, 143, 0, 53, 54,
434
        55, 56, 57, 0, 59, 60, 61, 62, 89, 99,
435
        0, 0, 0, 0, 0, 40, 0, 124, 0, 112,
436
        37, 0, 76, 0, 0, 84, 132, 0, 0, 0,
437
        28, 0, 0, 0, 101, 102, 103, 0, 0, 0,
438
        0, 0, 0, 0, 0, 0, 147, 136, 137, 0,
439
        0, 0, 49, 0, 22, 0, 0, 0, 0, 0,
440
        41, 45, 0, 118, 0, 113, 124, 0, 0, 124,
441
        97, 0, 131, 95, 131, 133, 0, 0, 90, 0,
442
        64, 0, 0, 0, 148, 149, 150, 151, 152, 153,
443
        154, 0, 0, 0, 145, 0, 144, 0, 0, 50,
444
        51, 0, 23, 24, 0, 26, 0, 0, 0, 120,
445
        0, 0, 118, 38, 39, -2, 131, 0, 0, 93,
446
        85, 87, 88, 0, 67, 0, 0, 155, 138, 0,
447
        139, 0, 63, 0, 21, 0, 0, 46, 0, 33,
448
        0, 119, 0, 120, 112, 106, -2, 0, 111, 91,
449
        131, 0, 0, 65, 72, 0, 0, 19, 0, 0,
450
        0, 0, 52, 25, 35, 42, 49, 32, 121, 125,
451
        29, 0, 34, 114, 108, 0, 92, 0, 0, 70,
452
        73, 0, 0, 0, 20, 140, 141, 58, 31, 0,
453
        0, 0, 0, 116, 0, 124, 131, 0, 66, 71,
454
        74, 68, 69, 43, 0, 44, 30, 122, 0, 0,
455
        0, 94, 17, 0, 118, 0, 117, 115, 47, 0,
456
        36, 120, 0, 0, 109, 77, 123, 128, 48, 0,
457
        126, 129, 130, 128, 127,
458
}
459

460
var yyTok1 = [...]int8{
461
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
462
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
463
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
464
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
465
        90, 91, 86, 84, 83, 85, 88, 87, 3, 3,
466
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
467
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
468
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
469
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
470
        3, 92, 3, 93,
471
}
472

473
var yyTok2 = [...]int8{
474
        2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
475
        12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
476
        22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
477
        32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
478
        42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
479
        52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
480
        62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
481
        72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
482
        82, 89,
483
}
484

485
var yyTok3 = [...]int8{
486
        0,
487
}
488

489
var yyErrorMessages = [...]struct {
490
        state int
491
        token int
492
        msg   string
493
}{}
494

495
/*        parser for yacc output        */
496

497
var (
498
        yyDebug        = 0
499
        yyErrorVerbose = false
500
)
501

502
type yyLexer interface {
503
        Lex(lval *yySymType) int
504
        Error(s string)
505
}
506

507
type yyParser interface {
508
        Parse(yyLexer) int
509
        Lookahead() int
510
}
511

512
type yyParserImpl struct {
513
        lval  yySymType
514
        stack [yyInitialStackSize]yySymType
515
        char  int
516
}
517

518
func (p *yyParserImpl) Lookahead() int {
×
519
        return p.char
×
520
}
×
521

522
func yyNewParser() yyParser {
1,737✔
523
        return &yyParserImpl{}
1,737✔
524
}
1,737✔
525

526
const yyFlag = -1000
527

528
func yyTokname(c int) string {
62✔
529
        if c >= 1 && c-1 < len(yyToknames) {
124✔
530
                if yyToknames[c-1] != "" {
124✔
531
                        return yyToknames[c-1]
62✔
532
                }
62✔
533
        }
534
        return __yyfmt__.Sprintf("tok-%v", c)
×
535
}
536

537
func yyStatname(s int) string {
×
538
        if s >= 0 && s < len(yyStatenames) {
×
539
                if yyStatenames[s] != "" {
×
540
                        return yyStatenames[s]
×
541
                }
×
542
        }
543
        return __yyfmt__.Sprintf("state-%v", s)
×
544
}
545

546
func yyErrorMessage(state, lookAhead int) string {
39✔
547
        const TOKSTART = 4
39✔
548

39✔
549
        if !yyErrorVerbose {
42✔
550
                return "syntax error"
3✔
551
        }
3✔
552

553
        for _, e := range yyErrorMessages {
36✔
554
                if e.state == state && e.token == lookAhead {
×
555
                        return "syntax error: " + e.msg
×
556
                }
×
557
        }
558

559
        res := "syntax error: unexpected " + yyTokname(lookAhead)
36✔
560

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

36✔
564
        // Look for shiftable tokens.
36✔
565
        base := int(yyPact[state])
36✔
566
        for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
2,516✔
567
                if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
2,586✔
568
                        if len(expected) == cap(expected) {
122✔
569
                                return res
16✔
570
                        }
16✔
571
                        expected = append(expected, tok)
90✔
572
                }
573
        }
574

575
        if yyDef[state] == -2 {
22✔
576
                i := 0
2✔
577
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
578
                        i += 2
×
579
                }
×
580

581
                // Look for tokens that we accept or reduce.
582
                for i += 2; yyExca[i] >= 0; i += 2 {
4✔
583
                        tok := int(yyExca[i])
2✔
584
                        if tok < TOKSTART || yyExca[i+1] == 0 {
4✔
585
                                continue
2✔
586
                        }
587
                        if len(expected) == cap(expected) {
×
588
                                return res
×
589
                        }
×
590
                        expected = append(expected, tok)
×
591
                }
592

593
                // If the default action is to accept or reduce, give up.
594
                if yyExca[i+1] != 0 {
2✔
595
                        return res
×
596
                }
×
597
        }
598

599
        for i, tok := range expected {
46✔
600
                if i == 0 {
44✔
601
                        res += ", expecting "
18✔
602
                } else {
26✔
603
                        res += " or "
8✔
604
                }
8✔
605
                res += yyTokname(tok)
26✔
606
        }
607
        return res
20✔
608
}
609

610
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
24,305✔
611
        token = 0
24,305✔
612
        char = lex.Lex(lval)
24,305✔
613
        if char <= 0 {
26,005✔
614
                token = int(yyTok1[0])
1,700✔
615
                goto out
1,700✔
616
        }
617
        if char < len(yyTok1) {
29,985✔
618
                token = int(yyTok1[char])
7,380✔
619
                goto out
7,380✔
620
        }
621
        if char >= yyPrivate {
30,450✔
622
                if char < yyPrivate+len(yyTok2) {
30,450✔
623
                        token = int(yyTok2[char-yyPrivate])
15,225✔
624
                        goto out
15,225✔
625
                }
626
        }
627
        for i := 0; i < len(yyTok3); i += 2 {
×
628
                token = int(yyTok3[i+0])
×
629
                if token == char {
×
630
                        token = int(yyTok3[i+1])
×
631
                        goto out
×
632
                }
633
        }
634

635
out:
636
        if token == 0 {
24,305✔
637
                token = int(yyTok2[1]) /* unknown char */
×
638
        }
×
639
        if yyDebug >= 3 {
24,305✔
640
                __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
×
641
        }
×
642
        return char, token
24,305✔
643
}
644

645
func yyParse(yylex yyLexer) int {
1,737✔
646
        return yyNewParser().Parse(yylex)
1,737✔
647
}
1,737✔
648

649
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
1,737✔
650
        var yyn int
1,737✔
651
        var yyVAL yySymType
1,737✔
652
        var yyDollar []yySymType
1,737✔
653
        _ = yyDollar // silence set and not used
1,737✔
654
        yyS := yyrcvr.stack[:]
1,737✔
655

1,737✔
656
        Nerrs := 0   /* number of errors */
1,737✔
657
        Errflag := 0 /* error recovery flag */
1,737✔
658
        yystate := 0
1,737✔
659
        yyrcvr.char = -1
1,737✔
660
        yytoken := -1 // yyrcvr.char translated into internal numbering
1,737✔
661
        defer func() {
3,474✔
662
                // Make sure we report no lookahead when not parsing.
1,737✔
663
                yystate = -1
1,737✔
664
                yyrcvr.char = -1
1,737✔
665
                yytoken = -1
1,737✔
666
        }()
1,737✔
667
        yyp := -1
1,737✔
668
        goto yystack
1,737✔
669

670
ret0:
671
        return 0
1,698✔
672

1,698✔
673
ret1:
1,698✔
674
        return 1
39✔
675

39✔
676
yystack:
39✔
677
        /* put a state and value onto the stack */
678
        if yyDebug >= 4 {
64,394✔
679
                __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
×
680
        }
×
681

682
        yyp++
64,394✔
683
        if yyp >= len(yyS) {
64,434✔
684
                nyys := make([]yySymType, len(yyS)*2)
40✔
685
                copy(nyys, yyS)
40✔
686
                yyS = nyys
40✔
687
        }
40✔
688
        yyS[yyp] = yyVAL
64,394✔
689
        yyS[yyp].yys = yystate
64,394✔
690

64,394✔
691
yynewstate:
64,394✔
692
        yyn = int(yyPact[yystate])
64,394✔
693
        if yyn <= yyFlag {
87,298✔
694
                goto yydefault /* simple state */
22,904✔
695
        }
696
        if yyrcvr.char < 0 {
65,795✔
697
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
24,305✔
698
        }
24,305✔
699
        yyn += yytoken
41,490✔
700
        if yyn < 0 || yyn >= yyLast {
42,087✔
701
                goto yydefault
597✔
702
        }
703
        yyn = int(yyAct[yyn])
40,893✔
704
        if int(yyChk[yyn]) == yytoken { /* valid shift */
63,461✔
705
                yyrcvr.char = -1
22,568✔
706
                yytoken = -1
22,568✔
707
                yyVAL = yyrcvr.lval
22,568✔
708
                yystate = yyn
22,568✔
709
                if Errflag > 0 {
22,568✔
710
                        Errflag--
×
711
                }
×
712
                goto yystack
22,568✔
713
        }
714

715
yydefault:
716
        /* default state action */
717
        yyn = int(yyDef[yystate])
41,826✔
718
        if yyn == -2 {
46,606✔
719
                if yyrcvr.char < 0 {
4,780✔
720
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
721
                }
×
722

723
                /* look through exception table */
724
                xi := 0
4,780✔
725
                for {
20,627✔
726
                        if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
20,627✔
727
                                break
4,780✔
728
                        }
729
                        xi += 2
11,067✔
730
                }
731
                for xi += 2; ; xi += 2 {
15,247✔
732
                        yyn = int(yyExca[xi+0])
10,467✔
733
                        if yyn < 0 || yyn == yytoken {
15,247✔
734
                                break
4,780✔
735
                        }
736
                }
737
                yyn = int(yyExca[xi+1])
4,780✔
738
                if yyn < 0 {
6,478✔
739
                        goto ret0
1,698✔
740
                }
741
        }
742
        if yyn == 0 {
40,167✔
743
                /* error ... attempt to resume parsing */
39✔
744
                switch Errflag {
39✔
745
                case 0: /* brand new error */
39✔
746
                        yylex.Error(yyErrorMessage(yystate, yytoken))
39✔
747
                        Nerrs++
39✔
748
                        if yyDebug >= 1 {
39✔
749
                                __yyfmt__.Printf("%s", yyStatname(yystate))
×
750
                                __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
×
751
                        }
×
752
                        fallthrough
39✔
753

754
                case 1, 2: /* incompletely recovered error ... try again */
39✔
755
                        Errflag = 3
39✔
756

39✔
757
                        /* find a state where "error" is a legal shift action */
39✔
758
                        for yyp >= 0 {
248✔
759
                                yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
209✔
760
                                if yyn >= 0 && yyn < yyLast {
379✔
761
                                        yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
170✔
762
                                        if int(yyChk[yystate]) == yyErrCode {
170✔
763
                                                goto yystack
×
764
                                        }
765
                                }
766

767
                                /* the current p has no shift on "error", pop stack */
768
                                if yyDebug >= 2 {
209✔
769
                                        __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
×
770
                                }
×
771
                                yyp--
209✔
772
                        }
773
                        /* there is no state on the stack with an error shift ... abort */
774
                        goto ret1
39✔
775

776
                case 3: /* no shift yet; clobber input char */
×
777
                        if yyDebug >= 2 {
×
778
                                __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
×
779
                        }
×
780
                        if yytoken == yyEofCode {
×
781
                                goto ret1
×
782
                        }
783
                        yyrcvr.char = -1
×
784
                        yytoken = -1
×
785
                        goto yynewstate /* try again in the same state */
×
786
                }
787
        }
788

789
        /* reduction by production yyn */
790
        if yyDebug >= 2 {
40,089✔
791
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
792
        }
×
793

794
        yynt := yyn
40,089✔
795
        yypt := yyp
40,089✔
796
        _ = yypt // guard against "declared and not used"
40,089✔
797

40,089✔
798
        yyp -= int(yyR2[yyn])
40,089✔
799
        // yyp is now the index of $0. Perform the default action. Iff the
40,089✔
800
        // reduced production is ε, $1 is possibly out of range.
40,089✔
801
        if yyp+1 >= len(yyS) {
40,108✔
802
                nyys := make([]yySymType, len(yyS)*2)
19✔
803
                copy(nyys, yyS)
19✔
804
                yyS = nyys
19✔
805
        }
19✔
806
        yyVAL = yyS[yyp+1]
40,089✔
807

40,089✔
808
        /* consult goto table to find next state */
40,089✔
809
        yyn = int(yyR1[yyn])
40,089✔
810
        yyg := int(yyPgo[yyn])
40,089✔
811
        yyj := yyg + yyS[yyp].yys + 1
40,089✔
812

40,089✔
813
        if yyj >= yyLast {
55,385✔
814
                yystate = int(yyAct[yyg])
15,296✔
815
        } else {
40,089✔
816
                yystate = int(yyAct[yyj])
24,793✔
817
                if int(yyChk[yystate]) != -yyn {
38,836✔
818
                        yystate = int(yyAct[yyg])
14,043✔
819
                }
14,043✔
820
        }
821
        // dummy call; replaced with literal code
822
        switch yynt {
40,089✔
823

824
        case 1:
1,700✔
825
                yyDollar = yyS[yypt-1 : yypt+1]
1,700✔
826
                {
3,400✔
827
                        yyVAL.stmts = yyDollar[1].stmts
1,700✔
828
                        setResult(yylex, yyDollar[1].stmts)
1,700✔
829
                }
1,700✔
830
        case 2:
1,700✔
831
                yyDollar = yyS[yypt-2 : yypt+1]
1,700✔
832
                {
3,400✔
833
                        yyVAL.stmts = []SQLStmt{yyDollar[1].stmt}
1,700✔
834
                }
1,700✔
835
        case 3:
84✔
836
                yyDollar = yyS[yypt-3 : yypt+1]
84✔
837
                {
168✔
838
                        yyVAL.stmts = append([]SQLStmt{yyDollar[1].stmt}, yyDollar[3].stmts...)
84✔
839
                }
84✔
840
        case 4:
1,407✔
841
                yyDollar = yyS[yypt-0 : yypt+1]
1,407✔
842
                {
2,814✔
843
                }
1,407✔
844
        case 9:
62✔
845
                yyDollar = yyS[yypt-2 : yypt+1]
62✔
846
                {
124✔
847
                        yyVAL.stmt = &BeginTransactionStmt{}
62✔
848
                }
62✔
849
        case 10:
1✔
850
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
851
                {
2✔
852
                        yyVAL.stmt = &BeginTransactionStmt{}
1✔
853
                }
1✔
854
        case 11:
170✔
855
                yyDollar = yyS[yypt-1 : yypt+1]
170✔
856
                {
340✔
857
                        yyVAL.stmt = &CommitStmt{}
170✔
858
                }
170✔
859
        case 12:
3✔
860
                yyDollar = yyS[yypt-1 : yypt+1]
3✔
861
                {
6✔
862
                        yyVAL.stmt = &RollbackStmt{}
3✔
863
                }
3✔
864
        case 13:
22✔
865
                yyDollar = yyS[yypt-4 : yypt+1]
22✔
866
                {
44✔
867
                        yyVAL.stmt = &CreateDatabaseStmt{ifNotExists: yyDollar[3].boolean, DB: yyDollar[4].id}
22✔
868
                }
22✔
869
        case 14:
3✔
870
                yyDollar = yyS[yypt-2 : yypt+1]
3✔
871
                {
6✔
872
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[2].id}
3✔
873
                }
3✔
874
        case 15:
14✔
875
                yyDollar = yyS[yypt-3 : yypt+1]
14✔
876
                {
28✔
877
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[3].id}
14✔
878
                }
14✔
879
        case 16:
9✔
880
                yyDollar = yyS[yypt-3 : yypt+1]
9✔
881
                {
18✔
882
                        yyVAL.stmt = &UseSnapshotStmt{period: yyDollar[3].period}
9✔
883
                }
9✔
884
        case 17:
186✔
885
                yyDollar = yyS[yypt-11 : yypt+1]
186✔
886
                {
372✔
887
                        yyVAL.stmt = &CreateTableStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[4].id, colsSpec: yyDollar[6].colsSpec, pkColNames: yyDollar[10].ids}
186✔
888
                }
186✔
889
        case 18:
1✔
890
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
891
                {
2✔
892
                        yyVAL.stmt = &DropTableStmt{table: yyDollar[3].id}
1✔
893
                }
1✔
894
        case 19:
55✔
895
                yyDollar = yyS[yypt-8 : yypt+1]
55✔
896
                {
110✔
897
                        yyVAL.stmt = &CreateIndexStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[5].id, cols: yyDollar[7].ids}
55✔
898
                }
55✔
899
        case 20:
21✔
900
                yyDollar = yyS[yypt-9 : yypt+1]
21✔
901
                {
42✔
902
                        yyVAL.stmt = &CreateIndexStmt{unique: true, ifNotExists: yyDollar[4].boolean, table: yyDollar[6].id, cols: yyDollar[8].ids}
21✔
903
                }
21✔
904
        case 21:
2✔
905
                yyDollar = yyS[yypt-7 : yypt+1]
2✔
906
                {
4✔
907
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[4].id, cols: yyDollar[6].ids}
2✔
908
                }
2✔
909
        case 22:
×
910
                yyDollar = yyS[yypt-5 : yypt+1]
×
911
                {
×
912
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[3].id, cols: []string{yyDollar[5].id}}
×
913
                }
×
914
        case 23:
16✔
915
                yyDollar = yyS[yypt-6 : yypt+1]
16✔
916
                {
32✔
917
                        yyVAL.stmt = &AddColumnStmt{table: yyDollar[3].id, colSpec: yyDollar[6].colSpec}
16✔
918
                }
16✔
919
        case 24:
5✔
920
                yyDollar = yyS[yypt-6 : yypt+1]
5✔
921
                {
10✔
922
                        yyVAL.stmt = &RenameTableStmt{oldName: yyDollar[3].id, newName: yyDollar[6].id}
5✔
923
                }
5✔
924
        case 25:
9✔
925
                yyDollar = yyS[yypt-8 : yypt+1]
9✔
926
                {
18✔
927
                        yyVAL.stmt = &RenameColumnStmt{table: yyDollar[3].id, oldName: yyDollar[6].id, newName: yyDollar[8].id}
9✔
928
                }
9✔
929
        case 26:
8✔
930
                yyDollar = yyS[yypt-6 : yypt+1]
8✔
931
                {
16✔
932
                        yyVAL.stmt = &DropColumnStmt{table: yyDollar[3].id, colName: yyDollar[6].id}
8✔
933
                }
8✔
934
        case 27:
264✔
935
                yyDollar = yyS[yypt-0 : yypt+1]
264✔
936
                {
528✔
937
                        yyVAL.boolean = false
264✔
938
                }
264✔
939
        case 28:
24✔
940
                yyDollar = yyS[yypt-3 : yypt+1]
24✔
941
                {
48✔
942
                        yyVAL.boolean = true
24✔
943
                }
24✔
944
        case 29:
152✔
945
                yyDollar = yyS[yypt-1 : yypt+1]
152✔
946
                {
304✔
947
                        yyVAL.ids = []string{yyDollar[1].id}
152✔
948
                }
152✔
949
        case 30:
59✔
950
                yyDollar = yyS[yypt-3 : yypt+1]
59✔
951
                {
118✔
952
                        yyVAL.ids = yyDollar[2].ids
59✔
953
                }
59✔
954
        case 31:
542✔
955
                yyDollar = yyS[yypt-9 : yypt+1]
542✔
956
                {
1,084✔
957
                        yyVAL.stmt = &UpsertIntoStmt{isInsert: true, tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows, onConflict: yyDollar[9].onConflict}
542✔
958
                }
542✔
959
        case 32:
203✔
960
                yyDollar = yyS[yypt-8 : yypt+1]
203✔
961
                {
406✔
962
                        yyVAL.stmt = &UpsertIntoStmt{tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows}
203✔
963
                }
203✔
964
        case 33:
11✔
965
                yyDollar = yyS[yypt-7 : yypt+1]
11✔
966
                {
22✔
967
                        yyVAL.stmt = &DeleteFromStmt{tableRef: yyDollar[3].tableRef, where: yyDollar[4].exp, indexOn: yyDollar[5].ids, limit: yyDollar[6].exp, offset: yyDollar[7].exp}
11✔
968
                }
11✔
969
        case 34:
19✔
970
                yyDollar = yyS[yypt-8 : yypt+1]
19✔
971
                {
38✔
972
                        yyVAL.stmt = &UpdateStmt{tableRef: yyDollar[2].tableRef, updates: yyDollar[4].updates, where: yyDollar[5].exp, indexOn: yyDollar[6].ids, limit: yyDollar[7].exp, offset: yyDollar[8].exp}
19✔
973
                }
19✔
974
        case 35:
539✔
975
                yyDollar = yyS[yypt-0 : yypt+1]
539✔
976
                {
1,078✔
977
                        yyVAL.onConflict = nil
539✔
978
                }
539✔
979
        case 36:
3✔
980
                yyDollar = yyS[yypt-4 : yypt+1]
3✔
981
                {
6✔
982
                        yyVAL.onConflict = &OnConflictDo{}
3✔
983
                }
3✔
984
        case 37:
19✔
985
                yyDollar = yyS[yypt-1 : yypt+1]
19✔
986
                {
38✔
987
                        yyVAL.updates = []*colUpdate{yyDollar[1].update}
19✔
988
                }
19✔
989
        case 38:
×
990
                yyDollar = yyS[yypt-3 : yypt+1]
×
991
                {
×
992
                        yyVAL.updates = append(yyDollar[1].updates, yyDollar[3].update)
×
993
                }
×
994
        case 39:
19✔
995
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
996
                {
38✔
997
                        yyVAL.update = &colUpdate{col: yyDollar[1].id, op: yyDollar[2].cmpOp, val: yyDollar[3].exp}
19✔
998
                }
19✔
999
        case 40:
1✔
1000
                yyDollar = yyS[yypt-0 : yypt+1]
1✔
1001
                {
2✔
1002
                        yyVAL.ids = nil
1✔
1003
                }
1✔
1004
        case 41:
547✔
1005
                yyDollar = yyS[yypt-1 : yypt+1]
547✔
1006
                {
1,094✔
1007
                        yyVAL.ids = yyDollar[1].ids
547✔
1008
                }
547✔
1009
        case 42:
745✔
1010
                yyDollar = yyS[yypt-1 : yypt+1]
745✔
1011
                {
1,490✔
1012
                        yyVAL.rows = []*RowSpec{yyDollar[1].row}
745✔
1013
                }
745✔
1014
        case 43:
66✔
1015
                yyDollar = yyS[yypt-3 : yypt+1]
66✔
1016
                {
132✔
1017
                        yyVAL.rows = append(yyDollar[1].rows, yyDollar[3].row)
66✔
1018
                }
66✔
1019
        case 44:
811✔
1020
                yyDollar = yyS[yypt-3 : yypt+1]
811✔
1021
                {
1,622✔
1022
                        yyVAL.row = &RowSpec{Values: yyDollar[2].values}
811✔
1023
                }
811✔
1024
        case 45:
895✔
1025
                yyDollar = yyS[yypt-1 : yypt+1]
895✔
1026
                {
1,790✔
1027
                        yyVAL.ids = []string{yyDollar[1].id}
895✔
1028
                }
895✔
1029
        case 46:
858✔
1030
                yyDollar = yyS[yypt-3 : yypt+1]
858✔
1031
                {
1,716✔
1032
                        yyVAL.ids = append(yyDollar[1].ids, yyDollar[3].id)
858✔
1033
                }
858✔
1034
        case 47:
10✔
1035
                yyDollar = yyS[yypt-1 : yypt+1]
10✔
1036
                {
20✔
1037
                        yyVAL.cols = []*ColSelector{yyDollar[1].col}
10✔
1038
                }
10✔
1039
        case 48:
×
1040
                yyDollar = yyS[yypt-3 : yypt+1]
×
1041
                {
×
1042
                        yyVAL.cols = append(yyDollar[1].cols, yyDollar[3].col)
×
1043
                }
×
1044
        case 49:
103✔
1045
                yyDollar = yyS[yypt-0 : yypt+1]
103✔
1046
                {
206✔
1047
                        yyVAL.values = nil
103✔
1048
                }
103✔
1049
        case 50:
821✔
1050
                yyDollar = yyS[yypt-1 : yypt+1]
821✔
1051
                {
1,642✔
1052
                        yyVAL.values = yyDollar[1].values
821✔
1053
                }
821✔
1054
        case 51:
840✔
1055
                yyDollar = yyS[yypt-1 : yypt+1]
840✔
1056
                {
1,680✔
1057
                        yyVAL.values = []ValueExp{yyDollar[1].exp}
840✔
1058
                }
840✔
1059
        case 52:
896✔
1060
                yyDollar = yyS[yypt-3 : yypt+1]
896✔
1061
                {
1,792✔
1062
                        yyVAL.values = append(yyDollar[1].values, yyDollar[3].exp)
896✔
1063
                }
896✔
1064
        case 53:
637✔
1065
                yyDollar = yyS[yypt-1 : yypt+1]
637✔
1066
                {
1,274✔
1067
                        yyVAL.value = &Integer{val: int64(yyDollar[1].integer)}
637✔
1068
                }
637✔
1069
        case 54:
25✔
1070
                yyDollar = yyS[yypt-1 : yypt+1]
25✔
1071
                {
50✔
1072
                        yyVAL.value = &Float64{val: float64(yyDollar[1].float)}
25✔
1073
                }
25✔
1074
        case 55:
365✔
1075
                yyDollar = yyS[yypt-1 : yypt+1]
365✔
1076
                {
730✔
1077
                        yyVAL.value = &Varchar{val: yyDollar[1].str}
365✔
1078
                }
365✔
1079
        case 56:
184✔
1080
                yyDollar = yyS[yypt-1 : yypt+1]
184✔
1081
                {
368✔
1082
                        yyVAL.value = &Bool{val: yyDollar[1].boolean}
184✔
1083
                }
184✔
1084
        case 57:
93✔
1085
                yyDollar = yyS[yypt-1 : yypt+1]
93✔
1086
                {
186✔
1087
                        yyVAL.value = &Blob{val: yyDollar[1].blob}
93✔
1088
                }
93✔
1089
        case 58:
57✔
1090
                yyDollar = yyS[yypt-6 : yypt+1]
57✔
1091
                {
114✔
1092
                        yyVAL.value = &Cast{val: yyDollar[3].exp, t: yyDollar[5].sqlType}
57✔
1093
                }
57✔
1094
        case 59:
92✔
1095
                yyDollar = yyS[yypt-1 : yypt+1]
92✔
1096
                {
184✔
1097
                        yyVAL.value = yyDollar[1].value
92✔
1098
                }
92✔
1099
        case 60:
580✔
1100
                yyDollar = yyS[yypt-1 : yypt+1]
580✔
1101
                {
1,160✔
1102
                        yyVAL.value = &Param{id: yyDollar[1].id}
580✔
1103
                }
580✔
1104
        case 61:
173✔
1105
                yyDollar = yyS[yypt-1 : yypt+1]
173✔
1106
                {
346✔
1107
                        yyVAL.value = &Param{id: fmt.Sprintf("param%d", yyDollar[1].pparam), pos: yyDollar[1].pparam}
173✔
1108
                }
173✔
1109
        case 62:
54✔
1110
                yyDollar = yyS[yypt-1 : yypt+1]
54✔
1111
                {
108✔
1112
                        yyVAL.value = &NullValue{t: AnyType}
54✔
1113
                }
54✔
1114
        case 63:
106✔
1115
                yyDollar = yyS[yypt-4 : yypt+1]
106✔
1116
                {
212✔
1117
                        yyVAL.value = &FnCall{fn: yyDollar[1].id, params: yyDollar[3].values}
106✔
1118
                }
106✔
1119
        case 64:
186✔
1120
                yyDollar = yyS[yypt-1 : yypt+1]
186✔
1121
                {
372✔
1122
                        yyVAL.colsSpec = []*ColSpec{yyDollar[1].colSpec}
186✔
1123
                }
186✔
1124
        case 65:
325✔
1125
                yyDollar = yyS[yypt-3 : yypt+1]
325✔
1126
                {
650✔
1127
                        yyVAL.colsSpec = append(yyDollar[1].colsSpec, yyDollar[3].colSpec)
325✔
1128
                }
325✔
1129
        case 66:
527✔
1130
                yyDollar = yyS[yypt-5 : yypt+1]
527✔
1131
                {
1,054✔
1132
                        yyVAL.colSpec = &ColSpec{colName: yyDollar[1].id, colType: yyDollar[2].sqlType, maxLen: int(yyDollar[3].integer), notNull: yyDollar[4].boolean, autoIncrement: yyDollar[5].boolean}
527✔
1133
                }
527✔
1134
        case 67:
474✔
1135
                yyDollar = yyS[yypt-0 : yypt+1]
474✔
1136
                {
948✔
1137
                        yyVAL.integer = 0
474✔
1138
                }
474✔
1139
        case 68:
52✔
1140
                yyDollar = yyS[yypt-3 : yypt+1]
52✔
1141
                {
104✔
1142
                        yyVAL.integer = yyDollar[2].integer
52✔
1143
                }
52✔
1144
        case 69:
1✔
1145
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
1146
                {
2✔
1147
                        yyVAL.integer = yyDollar[2].integer
1✔
1148
                }
1✔
1149
        case 70:
454✔
1150
                yyDollar = yyS[yypt-0 : yypt+1]
454✔
1151
                {
908✔
1152
                        yyVAL.boolean = false
454✔
1153
                }
454✔
1154
        case 71:
73✔
1155
                yyDollar = yyS[yypt-1 : yypt+1]
73✔
1156
                {
146✔
1157
                        yyVAL.boolean = true
73✔
1158
                }
73✔
1159
        case 72:
519✔
1160
                yyDollar = yyS[yypt-0 : yypt+1]
519✔
1161
                {
1,038✔
1162
                        yyVAL.boolean = false
519✔
1163
                }
519✔
1164
        case 73:
1✔
1165
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1166
                {
2✔
1167
                        yyVAL.boolean = false
1✔
1168
                }
1✔
1169
        case 74:
7✔
1170
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1171
                {
14✔
1172
                        yyVAL.boolean = true
7✔
1173
                }
7✔
1174
        case 75:
434✔
1175
                yyDollar = yyS[yypt-1 : yypt+1]
434✔
1176
                {
868✔
1177
                        yyVAL.stmt = yyDollar[1].stmt
434✔
1178
                }
434✔
1179
        case 76:
11✔
1180
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1181
                {
22✔
1182
                        yyVAL.stmt = &UnionStmt{
11✔
1183
                                distinct: yyDollar[3].distinct,
11✔
1184
                                left:     yyDollar[1].stmt.(DataSource),
11✔
1185
                                right:    yyDollar[4].stmt.(DataSource),
11✔
1186
                        }
11✔
1187
                }
11✔
1188
        case 77:
446✔
1189
                yyDollar = yyS[yypt-13 : yypt+1]
446✔
1190
                {
892✔
1191
                        yyVAL.stmt = &SelectStmt{
446✔
1192
                                distinct:  yyDollar[2].distinct,
446✔
1193
                                selectors: yyDollar[3].sels,
446✔
1194
                                ds:        yyDollar[5].ds,
446✔
1195
                                indexOn:   yyDollar[6].ids,
446✔
1196
                                joins:     yyDollar[7].joins,
446✔
1197
                                where:     yyDollar[8].exp,
446✔
1198
                                groupBy:   yyDollar[9].cols,
446✔
1199
                                having:    yyDollar[10].exp,
446✔
1200
                                orderBy:   yyDollar[11].ordcols,
446✔
1201
                                limit:     yyDollar[12].exp,
446✔
1202
                                offset:    yyDollar[13].exp,
446✔
1203
                        }
446✔
1204
                }
446✔
1205
        case 78:
11✔
1206
                yyDollar = yyS[yypt-0 : yypt+1]
11✔
1207
                {
22✔
1208
                        yyVAL.distinct = true
11✔
1209
                }
11✔
1210
        case 79:
1✔
1211
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1212
                {
2✔
1213
                        yyVAL.distinct = false
1✔
1214
                }
1✔
1215
        case 80:
438✔
1216
                yyDollar = yyS[yypt-0 : yypt+1]
438✔
1217
                {
876✔
1218
                        yyVAL.distinct = false
438✔
1219
                }
438✔
1220
        case 81:
8✔
1221
                yyDollar = yyS[yypt-1 : yypt+1]
8✔
1222
                {
16✔
1223
                        yyVAL.distinct = true
8✔
1224
                }
8✔
1225
        case 82:
113✔
1226
                yyDollar = yyS[yypt-1 : yypt+1]
113✔
1227
                {
226✔
1228
                        yyVAL.sels = nil
113✔
1229
                }
113✔
1230
        case 83:
333✔
1231
                yyDollar = yyS[yypt-1 : yypt+1]
333✔
1232
                {
666✔
1233
                        yyVAL.sels = yyDollar[1].sels
333✔
1234
                }
333✔
1235
        case 84:
333✔
1236
                yyDollar = yyS[yypt-2 : yypt+1]
333✔
1237
                {
666✔
1238
                        yyDollar[1].sel.setAlias(yyDollar[2].id)
333✔
1239
                        yyVAL.sels = []Selector{yyDollar[1].sel}
333✔
1240
                }
333✔
1241
        case 85:
364✔
1242
                yyDollar = yyS[yypt-4 : yypt+1]
364✔
1243
                {
728✔
1244
                        yyDollar[3].sel.setAlias(yyDollar[4].id)
364✔
1245
                        yyVAL.sels = append(yyDollar[1].sels, yyDollar[3].sel)
364✔
1246
                }
364✔
1247
        case 86:
967✔
1248
                yyDollar = yyS[yypt-1 : yypt+1]
967✔
1249
                {
1,934✔
1250
                        yyVAL.sel = yyDollar[1].col
967✔
1251
                }
967✔
1252
        case 87:
36✔
1253
                yyDollar = yyS[yypt-4 : yypt+1]
36✔
1254
                {
72✔
1255
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, col: "*"}
36✔
1256
                }
36✔
1257
        case 88:
50✔
1258
                yyDollar = yyS[yypt-4 : yypt+1]
50✔
1259
                {
100✔
1260
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, table: yyDollar[3].col.table, col: yyDollar[3].col.col}
50✔
1261
                }
50✔
1262
        case 89:
1,038✔
1263
                yyDollar = yyS[yypt-1 : yypt+1]
1,038✔
1264
                {
2,076✔
1265
                        yyVAL.col = &ColSelector{col: yyDollar[1].id}
1,038✔
1266
                }
1,038✔
1267
        case 90:
93✔
1268
                yyDollar = yyS[yypt-3 : yypt+1]
93✔
1269
                {
186✔
1270
                        yyVAL.col = &ColSelector{table: yyDollar[1].id, col: yyDollar[3].id}
93✔
1271
                }
93✔
1272
        case 91:
437✔
1273
                yyDollar = yyS[yypt-3 : yypt+1]
437✔
1274
                {
874✔
1275
                        yyDollar[1].tableRef.period = yyDollar[2].period
437✔
1276
                        yyDollar[1].tableRef.as = yyDollar[3].id
437✔
1277
                        yyVAL.ds = yyDollar[1].tableRef
437✔
1278
                }
437✔
1279
        case 92:
11✔
1280
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1281
                {
22✔
1282
                        yyDollar[2].stmt.(*SelectStmt).as = yyDollar[4].id
11✔
1283
                        yyVAL.ds = yyDollar[2].stmt.(DataSource)
11✔
1284
                }
11✔
1285
        case 93:
14✔
1286
                yyDollar = yyS[yypt-2 : yypt+1]
14✔
1287
                {
28✔
1288
                        yyVAL.ds = &FnDataSourceStmt{fnCall: yyDollar[1].value.(*FnCall), as: yyDollar[2].id}
14✔
1289
                }
14✔
1290
        case 94:
2✔
1291
                yyDollar = yyS[yypt-6 : yypt+1]
2✔
1292
                {
4✔
1293
                        yyVAL.ds = &tableRef{table: yyDollar[4].id, history: true, as: yyDollar[6].id}
2✔
1294
                }
2✔
1295
        case 95:
1,227✔
1296
                yyDollar = yyS[yypt-1 : yypt+1]
1,227✔
1297
                {
2,454✔
1298
                        yyVAL.tableRef = &tableRef{table: yyDollar[1].id}
1,227✔
1299
                }
1,227✔
1300
        case 96:
446✔
1301
                yyDollar = yyS[yypt-2 : yypt+1]
446✔
1302
                {
892✔
1303
                        yyVAL.period = period{start: yyDollar[1].openPeriod, end: yyDollar[2].openPeriod}
446✔
1304
                }
446✔
1305
        case 97:
377✔
1306
                yyDollar = yyS[yypt-0 : yypt+1]
377✔
1307
                {
754✔
1308
                        yyVAL.openPeriod = nil
377✔
1309
                }
377✔
1310
        case 98:
44✔
1311
                yyDollar = yyS[yypt-2 : yypt+1]
44✔
1312
                {
88✔
1313
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
44✔
1314
                }
44✔
1315
        case 99:
25✔
1316
                yyDollar = yyS[yypt-2 : yypt+1]
25✔
1317
                {
50✔
1318
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
25✔
1319
                }
25✔
1320
        case 100:
402✔
1321
                yyDollar = yyS[yypt-0 : yypt+1]
402✔
1322
                {
804✔
1323
                        yyVAL.openPeriod = nil
402✔
1324
                }
402✔
1325
        case 101:
33✔
1326
                yyDollar = yyS[yypt-2 : yypt+1]
33✔
1327
                {
66✔
1328
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
33✔
1329
                }
33✔
1330
        case 102:
11✔
1331
                yyDollar = yyS[yypt-2 : yypt+1]
11✔
1332
                {
22✔
1333
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
11✔
1334
                }
11✔
1335
        case 103:
56✔
1336
                yyDollar = yyS[yypt-2 : yypt+1]
56✔
1337
                {
112✔
1338
                        yyVAL.periodInstant = periodInstant{instantType: txInstant, exp: yyDollar[2].exp}
56✔
1339
                }
56✔
1340
        case 104:
57✔
1341
                yyDollar = yyS[yypt-1 : yypt+1]
57✔
1342
                {
114✔
1343
                        yyVAL.periodInstant = periodInstant{instantType: timeInstant, exp: yyDollar[1].exp}
57✔
1344
                }
57✔
1345
        case 105:
433✔
1346
                yyDollar = yyS[yypt-0 : yypt+1]
433✔
1347
                {
866✔
1348
                        yyVAL.joins = nil
433✔
1349
                }
433✔
1350
        case 106:
13✔
1351
                yyDollar = yyS[yypt-1 : yypt+1]
13✔
1352
                {
26✔
1353
                        yyVAL.joins = yyDollar[1].joins
13✔
1354
                }
13✔
1355
        case 107:
13✔
1356
                yyDollar = yyS[yypt-1 : yypt+1]
13✔
1357
                {
26✔
1358
                        yyVAL.joins = []*JoinSpec{yyDollar[1].join}
13✔
1359
                }
13✔
1360
        case 108:
5✔
1361
                yyDollar = yyS[yypt-2 : yypt+1]
5✔
1362
                {
10✔
1363
                        yyVAL.joins = append([]*JoinSpec{yyDollar[1].join}, yyDollar[2].joins...)
5✔
1364
                }
5✔
1365
        case 109:
18✔
1366
                yyDollar = yyS[yypt-6 : yypt+1]
18✔
1367
                {
36✔
1368
                        yyVAL.join = &JoinSpec{joinType: yyDollar[1].joinType, ds: yyDollar[3].ds, indexOn: yyDollar[4].ids, cond: yyDollar[6].exp}
18✔
1369
                }
18✔
1370
        case 110:
1✔
1371
                yyDollar = yyS[yypt-0 : yypt+1]
1✔
1372
                {
2✔
1373
                        yyVAL.joinType = InnerJoin
1✔
1374
                }
1✔
1375
        case 111:
17✔
1376
                yyDollar = yyS[yypt-1 : yypt+1]
17✔
1377
                {
34✔
1378
                        yyVAL.joinType = yyDollar[1].joinType
17✔
1379
                }
17✔
1380
        case 112:
280✔
1381
                yyDollar = yyS[yypt-0 : yypt+1]
280✔
1382
                {
560✔
1383
                        yyVAL.exp = nil
280✔
1384
                }
280✔
1385
        case 113:
196✔
1386
                yyDollar = yyS[yypt-2 : yypt+1]
196✔
1387
                {
392✔
1388
                        yyVAL.exp = yyDollar[2].exp
196✔
1389
                }
196✔
1390
        case 114:
436✔
1391
                yyDollar = yyS[yypt-0 : yypt+1]
436✔
1392
                {
872✔
1393
                        yyVAL.cols = nil
436✔
1394
                }
436✔
1395
        case 115:
10✔
1396
                yyDollar = yyS[yypt-3 : yypt+1]
10✔
1397
                {
20✔
1398
                        yyVAL.cols = yyDollar[3].cols
10✔
1399
                }
10✔
1400
        case 116:
439✔
1401
                yyDollar = yyS[yypt-0 : yypt+1]
439✔
1402
                {
878✔
1403
                        yyVAL.exp = nil
439✔
1404
                }
439✔
1405
        case 117:
7✔
1406
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1407
                {
14✔
1408
                        yyVAL.exp = yyDollar[2].exp
7✔
1409
                }
7✔
1410
        case 118:
439✔
1411
                yyDollar = yyS[yypt-0 : yypt+1]
439✔
1412
                {
878✔
1413
                        yyVAL.exp = nil
439✔
1414
                }
439✔
1415
        case 119:
37✔
1416
                yyDollar = yyS[yypt-2 : yypt+1]
37✔
1417
                {
74✔
1418
                        yyVAL.exp = yyDollar[2].exp
37✔
1419
                }
37✔
1420
        case 120:
472✔
1421
                yyDollar = yyS[yypt-0 : yypt+1]
472✔
1422
                {
944✔
1423
                        yyVAL.exp = nil
472✔
1424
                }
472✔
1425
        case 121:
4✔
1426
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
1427
                {
8✔
1428
                        yyVAL.exp = yyDollar[2].exp
4✔
1429
                }
4✔
1430
        case 122:
344✔
1431
                yyDollar = yyS[yypt-0 : yypt+1]
344✔
1432
                {
688✔
1433
                        yyVAL.ordcols = nil
344✔
1434
                }
344✔
1435
        case 123:
102✔
1436
                yyDollar = yyS[yypt-3 : yypt+1]
102✔
1437
                {
204✔
1438
                        yyVAL.ordcols = yyDollar[3].ordcols
102✔
1439
                }
102✔
1440
        case 124:
469✔
1441
                yyDollar = yyS[yypt-0 : yypt+1]
469✔
1442
                {
938✔
1443
                        yyVAL.ids = nil
469✔
1444
                }
469✔
1445
        case 125:
25✔
1446
                yyDollar = yyS[yypt-4 : yypt+1]
25✔
1447
                {
50✔
1448
                        yyVAL.ids = yyDollar[4].ids
25✔
1449
                }
25✔
1450
        case 126:
102✔
1451
                yyDollar = yyS[yypt-2 : yypt+1]
102✔
1452
                {
204✔
1453
                        yyVAL.ordcols = []*OrdCol{{sel: yyDollar[1].col, descOrder: yyDollar[2].opt_ord}}
102✔
1454
                }
102✔
1455
        case 127:
2✔
1456
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
1457
                {
4✔
1458
                        yyVAL.ordcols = append(yyDollar[1].ordcols, &OrdCol{sel: yyDollar[3].col, descOrder: yyDollar[4].opt_ord})
2✔
1459
                }
2✔
1460
        case 128:
41✔
1461
                yyDollar = yyS[yypt-0 : yypt+1]
41✔
1462
                {
82✔
1463
                        yyVAL.opt_ord = false
41✔
1464
                }
41✔
1465
        case 129:
12✔
1466
                yyDollar = yyS[yypt-1 : yypt+1]
12✔
1467
                {
24✔
1468
                        yyVAL.opt_ord = false
12✔
1469
                }
12✔
1470
        case 130:
51✔
1471
                yyDollar = yyS[yypt-1 : yypt+1]
51✔
1472
                {
102✔
1473
                        yyVAL.opt_ord = true
51✔
1474
                }
51✔
1475
        case 131:
1,101✔
1476
                yyDollar = yyS[yypt-0 : yypt+1]
1,101✔
1477
                {
2,202✔
1478
                        yyVAL.id = ""
1,101✔
1479
                }
1,101✔
1480
        case 132:
20✔
1481
                yyDollar = yyS[yypt-1 : yypt+1]
20✔
1482
                {
40✔
1483
                        yyVAL.id = yyDollar[1].id
20✔
1484
                }
20✔
1485
        case 133:
40✔
1486
                yyDollar = yyS[yypt-2 : yypt+1]
40✔
1487
                {
80✔
1488
                        yyVAL.id = yyDollar[2].id
40✔
1489
                }
40✔
1490
        case 134:
2,614✔
1491
                yyDollar = yyS[yypt-1 : yypt+1]
2,614✔
1492
                {
5,228✔
1493
                        yyVAL.exp = yyDollar[1].exp
2,614✔
1494
                }
2,614✔
1495
        case 135:
424✔
1496
                yyDollar = yyS[yypt-1 : yypt+1]
424✔
1497
                {
848✔
1498
                        yyVAL.exp = yyDollar[1].binExp
424✔
1499
                }
424✔
1500
        case 136:
13✔
1501
                yyDollar = yyS[yypt-2 : yypt+1]
13✔
1502
                {
26✔
1503
                        yyVAL.exp = &NotBoolExp{exp: yyDollar[2].exp}
13✔
1504
                }
13✔
1505
        case 137:
3✔
1506
                yyDollar = yyS[yypt-2 : yypt+1]
3✔
1507
                {
6✔
1508
                        yyVAL.exp = &NumExp{left: &Integer{val: 0}, op: SUBSOP, right: yyDollar[2].exp}
3✔
1509
                }
3✔
1510
        case 138:
8✔
1511
                yyDollar = yyS[yypt-4 : yypt+1]
8✔
1512
                {
16✔
1513
                        yyVAL.exp = &LikeBoolExp{val: yyDollar[1].exp, notLike: yyDollar[2].boolean, pattern: yyDollar[4].exp}
8✔
1514
                }
8✔
1515
        case 139:
1✔
1516
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1517
                {
2✔
1518
                        yyVAL.exp = &ExistsBoolExp{q: (yyDollar[3].stmt).(DataSource)}
1✔
1519
                }
1✔
1520
        case 140:
×
1521
                yyDollar = yyS[yypt-6 : yypt+1]
×
1522
                {
×
1523
                        yyVAL.exp = &InSubQueryExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, q: yyDollar[5].stmt.(*SelectStmt)}
×
1524
                }
×
1525
        case 141:
12✔
1526
                yyDollar = yyS[yypt-6 : yypt+1]
12✔
1527
                {
24✔
1528
                        yyVAL.exp = &InListExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, values: yyDollar[5].values}
12✔
1529
                }
12✔
1530
        case 142:
356✔
1531
                yyDollar = yyS[yypt-1 : yypt+1]
356✔
1532
                {
712✔
1533
                        yyVAL.exp = yyDollar[1].sel
356✔
1534
                }
356✔
1535
        case 143:
2,260✔
1536
                yyDollar = yyS[yypt-1 : yypt+1]
2,260✔
1537
                {
4,520✔
1538
                        yyVAL.exp = yyDollar[1].value
2,260✔
1539
                }
2,260✔
1540
        case 144:
18✔
1541
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1542
                {
36✔
1543
                        yyVAL.exp = yyDollar[2].exp
18✔
1544
                }
18✔
1545
        case 145:
2✔
1546
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1547
                {
4✔
1548
                        yyVAL.exp = &Cast{val: yyDollar[1].exp, t: yyDollar[3].sqlType}
2✔
1549
                }
2✔
1550
        case 146:
19✔
1551
                yyDollar = yyS[yypt-0 : yypt+1]
19✔
1552
                {
38✔
1553
                        yyVAL.boolean = false
19✔
1554
                }
19✔
1555
        case 147:
1✔
1556
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1557
                {
2✔
1558
                        yyVAL.boolean = true
1✔
1559
                }
1✔
1560
        case 148:
9✔
1561
                yyDollar = yyS[yypt-3 : yypt+1]
9✔
1562
                {
18✔
1563
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: ADDOP, right: yyDollar[3].exp}
9✔
1564
                }
9✔
1565
        case 149:
13✔
1566
                yyDollar = yyS[yypt-3 : yypt+1]
13✔
1567
                {
26✔
1568
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: SUBSOP, right: yyDollar[3].exp}
13✔
1569
                }
13✔
1570
        case 150:
4✔
1571
                yyDollar = yyS[yypt-3 : yypt+1]
4✔
1572
                {
8✔
1573
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: DIVOP, right: yyDollar[3].exp}
4✔
1574
                }
4✔
1575
        case 151:
2✔
1576
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1577
                {
4✔
1578
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: MULTOP, right: yyDollar[3].exp}
2✔
1579
                }
2✔
1580
        case 152:
116✔
1581
                yyDollar = yyS[yypt-3 : yypt+1]
116✔
1582
                {
232✔
1583
                        yyVAL.binExp = &BinBoolExp{left: yyDollar[1].exp, op: yyDollar[2].logicOp, right: yyDollar[3].exp}
116✔
1584
                }
116✔
1585
        case 153:
278✔
1586
                yyDollar = yyS[yypt-3 : yypt+1]
278✔
1587
                {
556✔
1588
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: yyDollar[2].cmpOp, right: yyDollar[3].exp}
278✔
1589
                }
278✔
1590
        case 154:
1✔
1591
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
1592
                {
2✔
1593
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: EQ, right: &NullValue{t: AnyType}}
1✔
1594
                }
1✔
1595
        case 155:
1✔
1596
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1597
                {
2✔
1598
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: NE, right: &NullValue{t: AnyType}}
1✔
1599
                }
1✔
1600
        }
1601
        goto yystack /* stack new state and value */
40,089✔
1602
}
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