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

codenotary / immudb / 6458421232

09 Oct 2023 03:04PM UTC coverage: 89.499% (+0.2%) from 89.257%
6458421232

push

gh-ci

jeroiraz
test(embedded/tbtree): nodeRef coverage

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

33451 of 37376 relevant lines covered (89.5%)

144180.49 hits per line

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

93.22
/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,695✔
9
        l.(*lexer).result = stmts
1,695✔
10
}
1,695✔
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, 79,
246
        59, 144,
247
        62, 144,
248
        -2, 132,
249
        -1, 200,
250
        45, 108,
251
        -2, 103,
252
        -1, 231,
253
        45, 108,
254
        -2, 105,
255
}
256

257
const yyPrivate = 57344
258

259
const yyLast = 400
260

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

304
var yyPact = [...]int16{
305
        323, -1000, -1000, 8, -1000, -1000, -1000, 262, -1000, -1000,
306
        345, 143, 324, 307, 259, 258, 234, 151, 201, 236,
307
        -1000, 323, -1000, 194, 194, 194, 300, -1000, 156, 356,
308
        155, 289, 152, 151, 151, 151, 250, -1000, 199, 32,
309
        -1000, -1000, 149, 197, 148, 288, 194, -1000, -1000, 333,
310
        23, 23, -1000, 147, 326, 5, 4, 226, 129, 239,
311
        -1000, 233, -1000, 62, 138, -1000, 3, 64, -1000, 190,
312
        0, 145, 287, -1000, 23, 23, -1000, 257, 86, 179,
313
        -1000, 257, 257, -4, -1000, -1000, 257, -1000, -1000, -1000,
314
        -1000, -1000, -5, -1000, -1000, -1000, -1000, -19, -1000, -10,
315
        277, 276, 273, 124, 124, 344, 257, 59, -1000, 158,
316
        -1000, -29, 105, -1000, -1000, 144, 31, 140, -1000, 132,
317
        -13, 139, -1000, -1000, 86, 257, 257, 257, 257, 257,
318
        257, 183, 191, 118, -1000, 123, 48, 239, 52, 257,
319
        257, 124, 132, 131, 130, -35, 61, -1000, -50, 212,
320
        295, 86, 344, 129, 257, 344, 356, 271, 138, -15,
321
        138, -1000, -38, -39, -1000, 49, -1000, 90, 124, -17,
322
        48, 48, 184, 184, 123, 103, -1000, 173, 257, -18,
323
        -1000, -40, -1000, 97, -42, 42, 86, -53, -1000, 272,
324
        -1000, 255, 127, 254, 210, 257, 286, 212, -1000, 86,
325
        163, 138, -43, 325, -1000, -1000, -1000, -1000, 141, -67,
326
        -55, 124, -1000, 123, -11, -1000, 82, -1000, 257, -1000,
327
        126, -20, -1000, -20, -1000, 257, 86, -31, 210, 226,
328
        -1000, 163, 231, -1000, -1000, 138, 125, 268, -1000, 177,
329
        73, 72, -1000, -56, -45, -57, -46, 86, -1000, 94,
330
        -1000, 257, 37, 86, -1000, -1000, 124, -1000, 221, -1000,
331
        -29, -1000, -48, -31, 185, -1000, 171, -71, -51, -1000,
332
        -1000, -1000, -1000, -1000, -20, 246, -52, -59, 229, 216,
333
        344, 138, -62, -1000, -1000, -1000, -1000, -1000, -1000, 244,
334
        -1000, -1000, 208, 257, 121, 284, -1000, -1000, 242, 212,
335
        214, 86, 27, -1000, 257, -1000, 210, 121, 121, 86,
336
        -1000, 26, 205, -1000, 121, -1000, -1000, -1000, 205, -1000,
337
}
338

339
var yyPgo = [...]int16{
340
        0, 399, 316, 398, 397, 396, 16, 395, 394, 18,
341
        11, 8, 393, 392, 15, 7, 17, 12, 391, 9,
342
        20, 390, 389, 2, 388, 387, 10, 339, 19, 386,
343
        385, 191, 384, 13, 383, 382, 0, 14, 381, 380,
344
        379, 378, 3, 5, 377, 4, 376, 372, 1, 6,
345
        274, 371, 370, 369, 21, 368, 361, 358,
346
}
347

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

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

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

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

456
var yyTok1 = [...]int8{
457
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
458
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
459
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
460
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
461
        90, 91, 86, 84, 83, 85, 88, 87, 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
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
466
        3, 92, 3, 93,
467
}
468

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

481
var yyTok3 = [...]int8{
482
        0,
483
}
484

485
var yyErrorMessages = [...]struct {
486
        state int
487
        token int
488
        msg   string
489
}{}
490

491
/*        parser for yacc output        */
492

493
var (
494
        yyDebug        = 0
495
        yyErrorVerbose = false
496
)
497

498
type yyLexer interface {
499
        Lex(lval *yySymType) int
500
        Error(s string)
501
}
502

503
type yyParser interface {
504
        Parse(yyLexer) int
505
        Lookahead() int
506
}
507

508
type yyParserImpl struct {
509
        lval  yySymType
510
        stack [yyInitialStackSize]yySymType
511
        char  int
512
}
513

514
func (p *yyParserImpl) Lookahead() int {
×
515
        return p.char
×
516
}
×
517

518
func yyNewParser() yyParser {
1,732✔
519
        return &yyParserImpl{}
1,732✔
520
}
1,732✔
521

522
const yyFlag = -1000
523

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

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

542
func yyErrorMessage(state, lookAhead int) string {
39✔
543
        const TOKSTART = 4
39✔
544

39✔
545
        if !yyErrorVerbose {
42✔
546
                return "syntax error"
3✔
547
        }
3✔
548

549
        for _, e := range yyErrorMessages {
36✔
550
                if e.state == state && e.token == lookAhead {
×
551
                        return "syntax error: " + e.msg
×
552
                }
×
553
        }
554

555
        res := "syntax error: unexpected " + yyTokname(lookAhead)
36✔
556

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

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

571
        if yyDef[state] == -2 {
22✔
572
                i := 0
2✔
573
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
574
                        i += 2
×
575
                }
×
576

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

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

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

606
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
24,270✔
607
        token = 0
24,270✔
608
        char = lex.Lex(lval)
24,270✔
609
        if char <= 0 {
25,965✔
610
                token = int(yyTok1[0])
1,695✔
611
                goto out
1,695✔
612
        }
613
        if char < len(yyTok1) {
29,955✔
614
                token = int(yyTok1[char])
7,380✔
615
                goto out
7,380✔
616
        }
617
        if char >= yyPrivate {
30,390✔
618
                if char < yyPrivate+len(yyTok2) {
30,390✔
619
                        token = int(yyTok2[char-yyPrivate])
15,195✔
620
                        goto out
15,195✔
621
                }
622
        }
623
        for i := 0; i < len(yyTok3); i += 2 {
×
624
                token = int(yyTok3[i+0])
×
625
                if token == char {
×
626
                        token = int(yyTok3[i+1])
×
627
                        goto out
×
628
                }
629
        }
630

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

641
func yyParse(yylex yyLexer) int {
1,732✔
642
        return yyNewParser().Parse(yylex)
1,732✔
643
}
1,732✔
644

645
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
1,732✔
646
        var yyn int
1,732✔
647
        var yyVAL yySymType
1,732✔
648
        var yyDollar []yySymType
1,732✔
649
        _ = yyDollar // silence set and not used
1,732✔
650
        yyS := yyrcvr.stack[:]
1,732✔
651

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

666
ret0:
667
        return 0
1,693✔
668

1,693✔
669
ret1:
1,693✔
670
        return 1
39✔
671

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

678
        yyp++
64,334✔
679
        if yyp >= len(yyS) {
64,374✔
680
                nyys := make([]yySymType, len(yyS)*2)
40✔
681
                copy(nyys, yyS)
40✔
682
                yyS = nyys
40✔
683
        }
40✔
684
        yyS[yyp] = yyVAL
64,334✔
685
        yyS[yyp].yys = yystate
64,334✔
686

64,334✔
687
yynewstate:
64,334✔
688
        yyn = int(yyPact[yystate])
64,334✔
689
        if yyn <= yyFlag {
87,213✔
690
                goto yydefault /* simple state */
22,879✔
691
        }
692
        if yyrcvr.char < 0 {
65,725✔
693
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
24,270✔
694
        }
24,270✔
695
        yyn += yytoken
41,455✔
696
        if yyn < 0 || yyn >= yyLast {
42,051✔
697
                goto yydefault
596✔
698
        }
699
        yyn = int(yyAct[yyn])
40,859✔
700
        if int(yyChk[yyn]) == yytoken { /* valid shift */
63,397✔
701
                yyrcvr.char = -1
22,538✔
702
                yytoken = -1
22,538✔
703
                yyVAL = yyrcvr.lval
22,538✔
704
                yystate = yyn
22,538✔
705
                if Errflag > 0 {
22,538✔
706
                        Errflag--
×
707
                }
×
708
                goto yystack
22,538✔
709
        }
710

711
yydefault:
712
        /* default state action */
713
        yyn = int(yyDef[yystate])
41,796✔
714
        if yyn == -2 {
46,571✔
715
                if yyrcvr.char < 0 {
4,775✔
716
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
717
                }
×
718

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

750
                case 1, 2: /* incompletely recovered error ... try again */
39✔
751
                        Errflag = 3
39✔
752

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

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

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

785
        /* reduction by production yyn */
786
        if yyDebug >= 2 {
40,064✔
787
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
788
        }
×
789

790
        yynt := yyn
40,064✔
791
        yypt := yyp
40,064✔
792
        _ = yypt // guard against "declared and not used"
40,064✔
793

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

40,064✔
804
        /* consult goto table to find next state */
40,064✔
805
        yyn = int(yyR1[yyn])
40,064✔
806
        yyg := int(yyPgo[yyn])
40,064✔
807
        yyj := yyg + yyS[yyp].yys + 1
40,064✔
808

40,064✔
809
        if yyj >= yyLast {
55,355✔
810
                yystate = int(yyAct[yyg])
15,291✔
811
        } else {
40,064✔
812
                yystate = int(yyAct[yyj])
24,773✔
813
                if int(yyChk[yystate]) != -yyn {
38,796✔
814
                        yystate = int(yyAct[yyg])
14,023✔
815
                }
14,023✔
816
        }
817
        // dummy call; replaced with literal code
818
        switch yynt {
40,064✔
819

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