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

codenotary / immudb / 12258730221

10 Dec 2024 02:47PM UTC coverage: 89.138% (-0.1%) from 89.266%
12258730221

Pull #2036

gh-ci

ostafen
chore(embedded/sql): Add support for core pg_catalog tables (pg_class, pg_namespace, pg_roles)

Signed-off-by: Stefano Scafiti <stefano.scafiti96@gmail.com>
Pull Request #2036: chore(embedded/sql): Add support for core pg_catalog tables (pg_class…

101 of 183 new or added lines in 13 files covered. (55.19%)

1 existing line in 1 file now uncovered.

37586 of 42166 relevant lines covered (89.14%)

150871.1 hits per line

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

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

4
import __yyfmt__ "fmt"
5

6
import "fmt"
7

8
func setResult(l yyLexer, stmts []SQLStmt) {
3,405✔
9
        l.(*lexer).result = stmts
3,405✔
10
}
3,405✔
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
        targets         []TargetEntry
36
        jsonFields      []string
37
        distinct        bool
38
        ds              DataSource
39
        tableRef        *tableRef
40
        period          period
41
        openPeriod      *openPeriod
42
        periodInstant   periodInstant
43
        joins           []*JoinSpec
44
        join            *JoinSpec
45
        joinType        JoinType
46
        checks          []CheckConstraint
47
        exp             ValueExp
48
        binExp          ValueExp
49
        err             error
50
        ordexps         []*OrdExp
51
        opt_ord         bool
52
        logicOp         LogicOperator
53
        cmpOp           CmpOperator
54
        pparam          int
55
        update          *colUpdate
56
        updates         []*colUpdate
57
        onConflict      *OnConflictDo
58
        permission      Permission
59
        sqlPrivilege    SQLPrivilege
60
        sqlPrivileges   []SQLPrivilege
61
        whenThenClauses []whenThenClause
62
}
63

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

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

294
var yyStatenames = [...]string{}
295

296
const yyEofCode = 1
297
const yyErrCode = 2
298
const yyInitialStackSize = 16
299

300
var yyExca = [...]int16{
301
        -1, 1,
302
        1, -1,
303
        -2, 0,
304
        -1, 97,
305
        78, 194,
306
        81, 194,
307
        -2, 175,
308
        -1, 272,
309
        59, 146,
310
        -2, 141,
311
        -1, 322,
312
        59, 146,
313
        -2, 143,
314
}
315

316
const yyPrivate = 57344
317

318
const yyLast = 613
319

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

385
var yyPact = [...]int16{
386
        507, -1000, -1000, 29, -1000, -1000, -1000, 373, -1000, -1000,
387
        514, 198, 547, 522, 515, 515, 366, 365, 340, 202,
388
        291, 328, 343, -1000, 507, -1000, 269, 269, 269, 498,
389
        212, -1000, 211, 516, 210, 200, 209, 208, 207, 478,
390
        382, 80, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 477,
391
        202, 202, 202, 360, -1000, 296, -1000, -1000, 201, -1000,
392
        386, 143, -1000, -1000, 187, 272, 183, 476, 269, 540,
393
        -1000, -1000, 517, 11, 11, -1000, 180, 86, -1000, 459,
394
        537, 562, -1000, 515, 554, 27, 20, 324, 158, 257,
395
        -1000, -1000, 176, 339, -1000, 79, 338, 165, -1000, 288,
396
        288, 19, -1000, -1000, -1000, 288, 288, 83, 13, -1000,
397
        -1000, -1000, -1000, -1000, 12, -1000, -1000, -1000, -1000, -13,
398
        -1000, 256, 6, 175, 475, 531, -1000, 11, 11, -1000,
399
        288, 414, -1000, 4, 173, 416, 449, 437, 530, 172,
400
        -1000, 171, 123, 123, 556, 288, 104, -1000, 215, -1000,
401
        -1000, 37, 288, -1000, 288, 288, 288, 288, 288, 288,
402
        288, 288, 270, -1000, 169, 281, 288, 118, -1000, 28,
403
        61, 257, 90, 290, 414, -23, 95, 70, 288, 288,
404
        168, -1000, 166, 2, 167, 94, -1000, -1000, 414, 123,
405
        -1000, 166, 163, 161, 160, 159, 93, 444, 426, -28,
406
        78, -1000, -61, 310, 480, 414, 556, 158, 288, 556,
407
        516, 308, 1, -12, -18, -19, 138, -20, 338, 61,
408
        61, 246, 246, 246, 28, 181, -37, -1000, 241, -1000,
409
        288, -24, 28, -1000, -29, -1000, 282, 288, 92, -1000,
410
        -31, -32, 85, 404, -38, 74, 414, -1000, 69, -1000,
411
        115, 123, -25, 555, -69, -1000, -1000, 424, -1000, -1000,
412
        555, 551, 550, 271, 155, 271, 306, 288, 471, 310,
413
        -1000, 414, 225, 138, -36, -39, 510, -52, -54, 154,
414
        -57, -1000, -1000, -1000, 28, -33, -1000, 274, 288, 288,
415
        381, -1000, -1000, -1000, 112, -1000, 288, 205, -91, -72,
416
        123, -1000, -1000, -1000, -1000, -1000, 152, -1000, 151, 141,
417
        464, -36, -1000, -1000, -1000, -1000, 288, 414, -35, 306,
418
        324, -1000, 225, 335, -1000, -1000, -75, -1000, 288, 138,
419
        131, 138, 138, -62, 138, -63, -77, -1000, 371, 414,
420
        288, -65, 414, 413, -1000, 288, 127, 268, 99, 98,
421
        -1000, -80, -1000, -1000, -1000, -1000, 357, 68, 414, -1000,
422
        -1000, 123, -1000, 322, -1000, 37, -36, -1000, -68, -1000,
423
        -83, -1000, -1000, -1000, -1000, -1000, -1000, 288, 414, -1000,
424
        387, 348, 391, 243, -1000, 236, -96, -85, -1000, 355,
425
        -82, 327, 320, 556, -1000, -1000, 138, 414, -35, 406,
426
        288, -1000, -1000, -1000, -1000, -1000, 342, -1000, 304, 288,
427
        120, 463, -1000, -88, -1000, 38, -1000, 310, 318, 414,
428
        67, -1000, 288, -1000, 406, 306, 288, 120, 414, -1000,
429
        -1000, 57, 220, -1000, 288, -1000, -1000, -1000, 220, -1000,
430
}
431

432
var yyPgo = [...]int16{
433
        0, 612, 529, 611, 610, 609, 18, 608, 607, 14,
434
        20, 7, 606, 605, 12, 8, 15, 13, 604, 11,
435
        603, 602, 3, 601, 600, 10, 17, 419, 21, 599,
436
        598, 42, 597, 16, 596, 595, 4, 0, 593, 22,
437
        592, 591, 590, 589, 588, 6, 2, 587, 585, 584,
438
        583, 5, 582, 581, 1, 9, 478, 580, 579, 578,
439
        25, 577, 576, 19, 575, 353, 574, 573,
440
}
441

442
var yyR1 = [...]int8{
443
        0, 1, 2, 2, 67, 67, 3, 3, 3, 4,
444
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
445
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
446
        4, 4, 4, 65, 65, 65, 64, 64, 64, 64,
447
        64, 64, 64, 63, 63, 63, 63, 56, 56, 11,
448
        11, 5, 5, 5, 5, 26, 26, 62, 62, 61,
449
        61, 60, 12, 12, 14, 14, 15, 10, 10, 13,
450
        13, 17, 17, 16, 16, 18, 18, 18, 18, 18,
451
        18, 18, 18, 18, 18, 19, 8, 8, 9, 50,
452
        50, 50, 57, 57, 58, 58, 58, 6, 6, 6,
453
        6, 6, 6, 6, 6, 7, 24, 24, 23, 23,
454
        48, 48, 49, 49, 20, 20, 20, 20, 21, 21,
455
        22, 22, 25, 25, 25, 25, 25, 25, 25, 25,
456
        25, 27, 28, 29, 29, 29, 30, 30, 30, 31,
457
        31, 32, 32, 33, 33, 34, 35, 35, 39, 39,
458
        44, 44, 40, 40, 45, 45, 46, 46, 53, 53,
459
        55, 55, 52, 52, 54, 54, 54, 51, 51, 51,
460
        36, 36, 36, 38, 38, 37, 37, 37, 37, 37,
461
        37, 37, 37, 37, 37, 47, 66, 66, 42, 42,
462
        41, 41, 41, 41, 59, 59, 43, 43, 43, 43,
463
        43, 43, 43, 43, 43, 43,
464
}
465

466
var yyR2 = [...]int8{
467
        0, 1, 2, 3, 0, 1, 1, 1, 1, 2,
468
        1, 1, 1, 4, 2, 3, 3, 12, 3, 8,
469
        9, 7, 5, 6, 6, 8, 6, 6, 7, 7,
470
        3, 8, 8, 2, 1, 3, 1, 1, 1, 1,
471
        1, 1, 1, 0, 1, 1, 1, 0, 3, 1,
472
        3, 8, 7, 7, 8, 2, 1, 0, 4, 1,
473
        3, 3, 0, 1, 1, 3, 3, 1, 3, 1,
474
        3, 0, 1, 1, 3, 1, 1, 1, 1, 1,
475
        6, 1, 1, 1, 1, 4, 1, 3, 5, 0,
476
        3, 3, 0, 1, 0, 1, 2, 1, 4, 2,
477
        2, 3, 2, 2, 4, 13, 0, 1, 0, 1,
478
        1, 1, 2, 4, 1, 2, 4, 4, 2, 3,
479
        1, 3, 3, 4, 4, 4, 4, 4, 4, 2,
480
        6, 1, 2, 0, 2, 2, 0, 2, 2, 2,
481
        1, 0, 1, 1, 2, 6, 0, 1, 0, 2,
482
        0, 3, 0, 2, 0, 2, 0, 2, 0, 3,
483
        0, 4, 2, 4, 0, 1, 1, 0, 1, 2,
484
        0, 4, 6, 0, 1, 1, 1, 2, 2, 4,
485
        3, 4, 6, 6, 1, 5, 4, 5, 0, 2,
486
        1, 1, 3, 3, 0, 1, 3, 3, 3, 3,
487
        3, 3, 3, 3, 3, 4,
488
}
489

490
var yyChk = [...]int16{
491
        -1000, -1, -2, -3, -4, -5, -6, 41, 43, 44,
492
        4, 6, 5, 27, 36, 37, 45, 46, 49, 50,
493
        -7, 87, 56, -67, 116, 42, 7, 23, 25, 24,
494
        8, 98, 7, 14, 23, 25, 8, 23, 8, -65,
495
        71, -64, 56, 4, 45, 50, 49, 5, 27, -65,
496
        47, 47, 58, -27, 98, 70, 88, 89, 23, 90,
497
        38, -23, 57, -2, -56, 79, -56, -56, 25, 98,
498
        98, -28, -29, 16, 17, 98, 26, 98, 98, 98,
499
        98, 26, 40, 109, 26, -27, -27, -27, 51, -24,
500
        71, 98, 39, -48, 112, -49, -37, -41, -43, 77,
501
        111, 80, -47, -20, -18, 117, 72, -22, 105, 100,
502
        101, 102, 103, 104, 85, -19, 91, 92, 84, 98,
503
        98, 77, 98, 26, -56, 9, -30, 19, 18, -31,
504
        20, -37, -31, 98, 107, 28, 29, 5, 9, 7,
505
        -65, 7, 117, 117, -39, 61, -61, -60, 98, -6,
506
        98, 58, 109, -51, 110, 111, 113, 112, 114, 94,
507
        95, 96, 82, 98, 69, -59, 97, 86, 77, -37,
508
        -37, 117, -37, -38, -37, -21, 108, 117, 117, 117,
509
        107, 80, 117, 98, 26, 10, -31, -31, -37, 117,
510
        98, 31, 30, 31, 31, 32, 10, 98, 98, -12,
511
        -10, 98, -10, -55, 6, -37, -39, 109, 96, -25,
512
        -27, 117, 88, 89, 23, 90, -19, 98, -37, -37,
513
        -37, -37, -37, -37, -37, -37, -37, 84, 77, 98,
514
        78, 81, -37, 99, -6, 118, -66, 73, 108, 102,
515
        112, -22, 98, -37, -17, -16, -37, 98, -8, -9,
516
        98, 117, 98, 102, -10, -9, 98, 98, 98, 98,
517
        102, 30, 30, 118, 109, 118, -45, 64, 25, -55,
518
        -60, -37, -55, -28, 48, -6, 15, 117, 117, 117,
519
        117, -51, -51, 84, -37, 117, 118, -42, 73, 75,
520
        -37, 102, 118, 118, 69, 118, 109, 109, 99, -10,
521
        117, -63, 11, 12, 13, 118, 30, -63, 8, 8,
522
        -26, 48, -6, 98, -26, -46, 65, -37, 26, -45,
523
        -32, -33, -34, -35, 93, -51, -14, -15, 117, 118,
524
        21, 118, 118, 98, 118, -6, -16, 76, -37, -37,
525
        74, 99, -37, -36, -9, 35, 32, -50, 119, 117,
526
        118, -10, 98, 98, 98, -62, 26, -14, -37, -11,
527
        98, 117, -46, -39, -33, 59, 109, 118, -17, -51,
528
        98, -51, -51, 118, -51, 118, 118, 74, -37, 118,
529
        33, -37, 98, -58, 84, 77, 100, 100, 118, 52,
530
        -10, -44, 62, -25, -15, 118, 118, -37, 34, 109,
531
        35, -57, 83, 84, 120, 118, 53, 118, -40, 60,
532
        63, -55, -51, -11, -36, -37, 54, -53, 66, -37,
533
        -13, -22, 26, 118, 109, -45, 63, 109, -37, -36,
534
        -46, -52, -37, -22, 109, -54, 67, 68, -37, -54,
535
}
536

537
var yyDef = [...]int16{
538
        0, -2, 1, 4, 6, 7, 8, 10, 11, 12,
539
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
540
        97, 0, 108, 2, 5, 9, 47, 47, 47, 0,
541
        0, 14, 0, 133, 0, 0, 0, 0, 0, 0,
542
        0, 34, 36, 37, 38, 39, 40, 41, 42, 0,
543
        0, 0, 0, 0, 131, 106, 99, 100, 0, 102,
544
        103, 0, 109, 3, 0, 0, 0, 0, 47, 0,
545
        15, 16, 136, 0, 0, 18, 0, 0, 30, 0,
546
        0, 0, 33, 0, 0, 0, 0, 148, 0, 0,
547
        107, 101, 0, 0, 110, 111, 167, -2, 176, 0,
548
        0, 0, 184, 190, 191, 0, 173, 114, 0, 75,
549
        76, 77, 78, 79, 0, 81, 82, 83, 84, 120,
550
        13, 0, 0, 0, 0, 0, 132, 0, 0, 134,
551
        0, 140, 135, 0, 0, 0, 0, 0, 0, 0,
552
        35, 0, 62, 0, 160, 0, 148, 59, 0, 98,
553
        104, 0, 0, 112, 0, 0, 0, 0, 0, 0,
554
        0, 0, 0, 168, 0, 0, 0, 0, 195, 177,
555
        178, 0, 0, 0, 174, 115, 0, 0, 0, 71,
556
        0, 48, 0, 0, 0, 0, 137, 138, 139, 0,
557
        22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
558
        63, 67, 0, 154, 0, 149, 160, 0, 0, 160,
559
        133, 0, 0, 0, 0, 0, 167, 131, 167, 196,
560
        197, 198, 199, 200, 201, 202, 203, 204, 0, 169,
561
        0, 0, 180, 193, 0, 192, 188, 0, 0, 118,
562
        0, 0, 120, 0, 0, 72, 73, 121, 0, 86,
563
        0, 0, 0, 43, 0, 23, 24, 0, 26, 27,
564
        43, 0, 0, 0, 0, 0, 156, 0, 0, 154,
565
        60, 61, -2, 167, 0, 0, 0, 0, 0, 0,
566
        0, 129, 113, 205, 179, 0, 181, 0, 0, 0,
567
        0, 119, 116, 117, 0, 85, 0, 170, 89, 0,
568
        0, 28, 44, 45, 46, 21, 0, 29, 0, 0,
569
        57, 0, 56, 68, 52, 53, 0, 155, 0, 156,
570
        148, 142, -2, 0, 147, 122, 0, 64, 71, 167,
571
        0, 167, 167, 0, 167, 0, 0, 185, 0, 189,
572
        0, 0, 74, 0, 87, 0, 0, 94, 0, 0,
573
        19, 0, 25, 31, 32, 51, 0, 55, 157, 161,
574
        49, 0, 54, 150, 144, 0, 0, 123, 0, 124,
575
        0, 125, 126, 127, 128, 182, 183, 0, 186, 80,
576
        0, 0, 0, 92, 95, 0, 0, 0, 20, 0,
577
        0, 152, 0, 160, 65, 66, 167, 187, 0, 170,
578
        0, 88, 93, 96, 90, 91, 0, 50, 158, 0,
579
        0, 0, 130, 0, 171, 0, 58, 154, 0, 153,
580
        151, 69, 0, 17, 170, 156, 0, 0, 145, 172,
581
        105, 159, 164, 70, 0, 162, 165, 166, 164, 163,
582
}
583

584
var yyTok1 = [...]int8{
585
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
586
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
587
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
588
        3, 3, 3, 3, 3, 3, 3, 114, 3, 3,
589
        117, 118, 112, 110, 109, 111, 115, 113, 3, 3,
590
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
591
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
592
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
593
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
594
        3, 119, 3, 120,
595
}
596

597
var yyTok2 = [...]int8{
598
        2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
599
        12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
600
        22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
601
        32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
602
        42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
603
        52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
604
        62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
605
        72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
606
        82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
607
        92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
608
        102, 103, 104, 105, 106, 107, 108, 116,
609
}
610

611
var yyTok3 = [...]int8{
612
        0,
613
}
614

615
var yyErrorMessages = [...]struct {
616
        state int
617
        token int
618
        msg   string
619
}{}
620

621
/*        parser for yacc output        */
622

623
var (
624
        yyDebug        = 0
625
        yyErrorVerbose = false
626
)
627

628
type yyLexer interface {
629
        Lex(lval *yySymType) int
630
        Error(s string)
631
}
632

633
type yyParser interface {
634
        Parse(yyLexer) int
635
        Lookahead() int
636
}
637

638
type yyParserImpl struct {
639
        lval  yySymType
640
        stack [yyInitialStackSize]yySymType
641
        char  int
642
}
643

644
func (p *yyParserImpl) Lookahead() int {
×
645
        return p.char
×
646
}
×
647

648
func yyNewParser() yyParser {
3,444✔
649
        return &yyParserImpl{}
3,444✔
650
}
3,444✔
651

652
const yyFlag = -1000
653

654
func yyTokname(c int) string {
55✔
655
        if c >= 1 && c-1 < len(yyToknames) {
110✔
656
                if yyToknames[c-1] != "" {
110✔
657
                        return yyToknames[c-1]
55✔
658
                }
55✔
659
        }
660
        return __yyfmt__.Sprintf("tok-%v", c)
×
661
}
662

663
func yyStatname(s int) string {
×
664
        if s >= 0 && s < len(yyStatenames) {
×
665
                if yyStatenames[s] != "" {
×
666
                        return yyStatenames[s]
×
667
                }
×
668
        }
669
        return __yyfmt__.Sprintf("state-%v", s)
×
670
}
671

672
func yyErrorMessage(state, lookAhead int) string {
41✔
673
        const TOKSTART = 4
41✔
674

41✔
675
        if !yyErrorVerbose {
46✔
676
                return "syntax error"
5✔
677
        }
5✔
678

679
        for _, e := range yyErrorMessages {
36✔
680
                if e.state == state && e.token == lookAhead {
×
681
                        return "syntax error: " + e.msg
×
682
                }
×
683
        }
684

685
        res := "syntax error: unexpected " + yyTokname(lookAhead)
36✔
686

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

36✔
690
        // Look for shiftable tokens.
36✔
691
        base := int(yyPact[state])
36✔
692
        for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
3,057✔
693
                if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
3,130✔
694
                        if len(expected) == cap(expected) {
127✔
695
                                return res
18✔
696
                        }
18✔
697
                        expected = append(expected, tok)
91✔
698
                }
699
        }
700

701
        if yyDef[state] == -2 {
20✔
702
                i := 0
2✔
703
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
704
                        i += 2
×
705
                }
×
706

707
                // Look for tokens that we accept or reduce.
708
                for i += 2; yyExca[i] >= 0; i += 2 {
4✔
709
                        tok := int(yyExca[i])
2✔
710
                        if tok < TOKSTART || yyExca[i+1] == 0 {
4✔
711
                                continue
2✔
712
                        }
713
                        if len(expected) == cap(expected) {
×
714
                                return res
×
715
                        }
×
716
                        expected = append(expected, tok)
×
717
                }
718

719
                // If the default action is to accept or reduce, give up.
720
                if yyExca[i+1] != 0 {
2✔
721
                        return res
×
722
                }
×
723
        }
724

725
        for i, tok := range expected {
37✔
726
                if i == 0 {
35✔
727
                        res += ", expecting "
16✔
728
                } else {
19✔
729
                        res += " or "
3✔
730
                }
3✔
731
                res += yyTokname(tok)
19✔
732
        }
733
        return res
18✔
734
}
735

736
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
62,148✔
737
        token = 0
62,148✔
738
        char = lex.Lex(lval)
62,148✔
739
        if char <= 0 {
65,554✔
740
                token = int(yyTok1[0])
3,406✔
741
                goto out
3,406✔
742
        }
743
        if char < len(yyTok1) {
81,642✔
744
                token = int(yyTok1[char])
22,900✔
745
                goto out
22,900✔
746
        }
747
        if char >= yyPrivate {
71,684✔
748
                if char < yyPrivate+len(yyTok2) {
71,684✔
749
                        token = int(yyTok2[char-yyPrivate])
35,842✔
750
                        goto out
35,842✔
751
                }
752
        }
753
        for i := 0; i < len(yyTok3); i += 2 {
×
754
                token = int(yyTok3[i+0])
×
755
                if token == char {
×
756
                        token = int(yyTok3[i+1])
×
757
                        goto out
×
758
                }
759
        }
760

761
out:
762
        if token == 0 {
62,148✔
763
                token = int(yyTok2[1]) /* unknown char */
×
764
        }
×
765
        if yyDebug >= 3 {
62,148✔
766
                __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
×
767
        }
×
768
        return char, token
62,148✔
769
}
770

771
func yyParse(yylex yyLexer) int {
3,444✔
772
        return yyNewParser().Parse(yylex)
3,444✔
773
}
3,444✔
774

775
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
3,444✔
776
        var yyn int
3,444✔
777
        var yyVAL yySymType
3,444✔
778
        var yyDollar []yySymType
3,444✔
779
        _ = yyDollar // silence set and not used
3,444✔
780
        yyS := yyrcvr.stack[:]
3,444✔
781

3,444✔
782
        Nerrs := 0   /* number of errors */
3,444✔
783
        Errflag := 0 /* error recovery flag */
3,444✔
784
        yystate := 0
3,444✔
785
        yyrcvr.char = -1
3,444✔
786
        yytoken := -1 // yyrcvr.char translated into internal numbering
3,444✔
787
        defer func() {
6,888✔
788
                // Make sure we report no lookahead when not parsing.
3,444✔
789
                yystate = -1
3,444✔
790
                yyrcvr.char = -1
3,444✔
791
                yytoken = -1
3,444✔
792
        }()
3,444✔
793
        yyp := -1
3,444✔
794
        goto yystack
3,444✔
795

796
ret0:
797
        return 0
3,403✔
798

3,403✔
799
ret1:
3,403✔
800
        return 1
41✔
801

41✔
802
yystack:
41✔
803
        /* put a state and value onto the stack */
804
        if yyDebug >= 4 {
163,415✔
805
                __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
×
806
        }
×
807

808
        yyp++
163,415✔
809
        if yyp >= len(yyS) {
163,520✔
810
                nyys := make([]yySymType, len(yyS)*2)
105✔
811
                copy(nyys, yyS)
105✔
812
                yyS = nyys
105✔
813
        }
105✔
814
        yyS[yyp] = yyVAL
163,415✔
815
        yyS[yyp].yys = yystate
163,415✔
816

163,415✔
817
yynewstate:
163,415✔
818
        yyn = int(yyPact[yystate])
163,415✔
819
        if yyn <= yyFlag {
219,994✔
820
                goto yydefault /* simple state */
56,579✔
821
        }
822
        if yyrcvr.char < 0 {
168,984✔
823
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
62,148✔
824
        }
62,148✔
825
        yyn += yytoken
106,836✔
826
        if yyn < 0 || yyn >= yyLast {
108,017✔
827
                goto yydefault
1,181✔
828
        }
829
        yyn = int(yyAct[yyn])
105,655✔
830
        if int(yyChk[yyn]) == yytoken { /* valid shift */
164,359✔
831
                yyrcvr.char = -1
58,704✔
832
                yytoken = -1
58,704✔
833
                yyVAL = yyrcvr.lval
58,704✔
834
                yystate = yyn
58,704✔
835
                if Errflag > 0 {
58,704✔
836
                        Errflag--
×
837
                }
×
838
                goto yystack
58,704✔
839
        }
840

841
yydefault:
842
        /* default state action */
843
        yyn = int(yyDef[yystate])
104,711✔
844
        if yyn == -2 {
119,316✔
845
                if yyrcvr.char < 0 {
14,605✔
846
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
847
                }
×
848

849
                /* look through exception table */
850
                xi := 0
14,605✔
851
                for {
66,045✔
852
                        if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
66,045✔
853
                                break
14,605✔
854
                        }
855
                        xi += 2
36,835✔
856
                }
857
                for xi += 2; ; xi += 2 {
50,737✔
858
                        yyn = int(yyExca[xi+0])
36,132✔
859
                        if yyn < 0 || yyn == yytoken {
50,737✔
860
                                break
14,605✔
861
                        }
862
                }
863
                yyn = int(yyExca[xi+1])
14,605✔
864
                if yyn < 0 {
18,008✔
865
                        goto ret0
3,403✔
866
                }
867
        }
868
        if yyn == 0 {
101,349✔
869
                /* error ... attempt to resume parsing */
41✔
870
                switch Errflag {
41✔
871
                case 0: /* brand new error */
41✔
872
                        yylex.Error(yyErrorMessage(yystate, yytoken))
41✔
873
                        Nerrs++
41✔
874
                        if yyDebug >= 1 {
41✔
875
                                __yyfmt__.Printf("%s", yyStatname(yystate))
×
876
                                __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
×
877
                        }
×
878
                        fallthrough
41✔
879

880
                case 1, 2: /* incompletely recovered error ... try again */
41✔
881
                        Errflag = 3
41✔
882

41✔
883
                        /* find a state where "error" is a legal shift action */
41✔
884
                        for yyp >= 0 {
261✔
885
                                yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
220✔
886
                                if yyn >= 0 && yyn < yyLast {
402✔
887
                                        yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
182✔
888
                                        if int(yyChk[yystate]) == yyErrCode {
182✔
889
                                                goto yystack
×
890
                                        }
891
                                }
892

893
                                /* the current p has no shift on "error", pop stack */
894
                                if yyDebug >= 2 {
220✔
895
                                        __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
×
896
                                }
×
897
                                yyp--
220✔
898
                        }
899
                        /* there is no state on the stack with an error shift ... abort */
900
                        goto ret1
41✔
901

902
                case 3: /* no shift yet; clobber input char */
×
903
                        if yyDebug >= 2 {
×
904
                                __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
×
905
                        }
×
906
                        if yytoken == yyEofCode {
×
907
                                goto ret1
×
908
                        }
909
                        yyrcvr.char = -1
×
910
                        yytoken = -1
×
911
                        goto yynewstate /* try again in the same state */
×
912
                }
913
        }
914

915
        /* reduction by production yyn */
916
        if yyDebug >= 2 {
101,267✔
917
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
918
        }
×
919

920
        yynt := yyn
101,267✔
921
        yypt := yyp
101,267✔
922
        _ = yypt // guard against "declared and not used"
101,267✔
923

101,267✔
924
        yyp -= int(yyR2[yyn])
101,267✔
925
        // yyp is now the index of $0. Perform the default action. Iff the
101,267✔
926
        // reduced production is ε, $1 is possibly out of range.
101,267✔
927
        if yyp+1 >= len(yyS) {
101,292✔
928
                nyys := make([]yySymType, len(yyS)*2)
25✔
929
                copy(nyys, yyS)
25✔
930
                yyS = nyys
25✔
931
        }
25✔
932
        yyVAL = yyS[yyp+1]
101,267✔
933

101,267✔
934
        /* consult goto table to find next state */
101,267✔
935
        yyn = int(yyR1[yyn])
101,267✔
936
        yyg := int(yyPgo[yyn])
101,267✔
937
        yyj := yyg + yyS[yyp].yys + 1
101,267✔
938

101,267✔
939
        if yyj >= yyLast {
140,084✔
940
                yystate = int(yyAct[yyg])
38,817✔
941
        } else {
101,267✔
942
                yystate = int(yyAct[yyj])
62,450✔
943
                if int(yyChk[yystate]) != -yyn {
99,558✔
944
                        yystate = int(yyAct[yyg])
37,108✔
945
                }
37,108✔
946
        }
947
        // dummy call; replaced with literal code
948
        switch yynt {
101,267✔
949

950
        case 1:
3,405✔
951
                yyDollar = yyS[yypt-1 : yypt+1]
3,405✔
952
                {
6,810✔
953
                        yyVAL.stmts = yyDollar[1].stmts
3,405✔
954
                        setResult(yylex, yyDollar[1].stmts)
3,405✔
955
                }
3,405✔
956
        case 2:
3,405✔
957
                yyDollar = yyS[yypt-2 : yypt+1]
3,405✔
958
                {
6,810✔
959
                        yyVAL.stmts = []SQLStmt{yyDollar[1].stmt}
3,405✔
960
                }
3,405✔
961
        case 3:
102✔
962
                yyDollar = yyS[yypt-3 : yypt+1]
102✔
963
                {
204✔
964
                        yyVAL.stmts = append([]SQLStmt{yyDollar[1].stmt}, yyDollar[3].stmts...)
102✔
965
                }
102✔
966
        case 4:
3,092✔
967
                yyDollar = yyS[yypt-0 : yypt+1]
3,092✔
968
                {
6,184✔
969
                }
3,092✔
970
        case 9:
69✔
971
                yyDollar = yyS[yypt-2 : yypt+1]
69✔
972
                {
138✔
973
                        yyVAL.stmt = &BeginTransactionStmt{}
69✔
974
                }
69✔
975
        case 10:
1✔
976
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
977
                {
2✔
978
                        yyVAL.stmt = &BeginTransactionStmt{}
1✔
979
                }
1✔
980
        case 11:
174✔
981
                yyDollar = yyS[yypt-1 : yypt+1]
174✔
982
                {
348✔
983
                        yyVAL.stmt = &CommitStmt{}
174✔
984
                }
174✔
985
        case 12:
6✔
986
                yyDollar = yyS[yypt-1 : yypt+1]
6✔
987
                {
12✔
988
                        yyVAL.stmt = &RollbackStmt{}
6✔
989
                }
6✔
990
        case 13:
23✔
991
                yyDollar = yyS[yypt-4 : yypt+1]
23✔
992
                {
46✔
993
                        yyVAL.stmt = &CreateDatabaseStmt{ifNotExists: yyDollar[3].boolean, DB: yyDollar[4].id}
23✔
994
                }
23✔
995
        case 14:
3✔
996
                yyDollar = yyS[yypt-2 : yypt+1]
3✔
997
                {
6✔
998
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[2].id}
3✔
999
                }
3✔
1000
        case 15:
14✔
1001
                yyDollar = yyS[yypt-3 : yypt+1]
14✔
1002
                {
28✔
1003
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[3].id}
14✔
1004
                }
14✔
1005
        case 16:
9✔
1006
                yyDollar = yyS[yypt-3 : yypt+1]
9✔
1007
                {
18✔
1008
                        yyVAL.stmt = &UseSnapshotStmt{period: yyDollar[3].period}
9✔
1009
                }
9✔
1010
        case 17:
213✔
1011
                yyDollar = yyS[yypt-12 : yypt+1]
213✔
1012
                {
426✔
1013
                        yyVAL.stmt = &CreateTableStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[4].id, colsSpec: yyDollar[6].colsSpec, checks: yyDollar[8].checks, pkColNames: yyDollar[11].ids}
213✔
1014
                }
213✔
1015
        case 18:
2✔
1016
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1017
                {
4✔
1018
                        yyVAL.stmt = &DropTableStmt{table: yyDollar[3].id}
2✔
1019
                }
2✔
1020
        case 19:
62✔
1021
                yyDollar = yyS[yypt-8 : yypt+1]
62✔
1022
                {
124✔
1023
                        yyVAL.stmt = &CreateIndexStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[5].id, cols: yyDollar[7].ids}
62✔
1024
                }
62✔
1025
        case 20:
21✔
1026
                yyDollar = yyS[yypt-9 : yypt+1]
21✔
1027
                {
42✔
1028
                        yyVAL.stmt = &CreateIndexStmt{unique: true, ifNotExists: yyDollar[4].boolean, table: yyDollar[6].id, cols: yyDollar[8].ids}
21✔
1029
                }
21✔
1030
        case 21:
3✔
1031
                yyDollar = yyS[yypt-7 : yypt+1]
3✔
1032
                {
6✔
1033
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[4].id, cols: yyDollar[6].ids}
3✔
1034
                }
3✔
1035
        case 22:
×
1036
                yyDollar = yyS[yypt-5 : yypt+1]
×
1037
                {
×
1038
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[3].id, cols: []string{yyDollar[5].id}}
×
1039
                }
×
1040
        case 23:
16✔
1041
                yyDollar = yyS[yypt-6 : yypt+1]
16✔
1042
                {
32✔
1043
                        yyVAL.stmt = &AddColumnStmt{table: yyDollar[3].id, colSpec: yyDollar[6].colSpec}
16✔
1044
                }
16✔
1045
        case 24:
6✔
1046
                yyDollar = yyS[yypt-6 : yypt+1]
6✔
1047
                {
12✔
1048
                        yyVAL.stmt = &RenameTableStmt{oldName: yyDollar[3].id, newName: yyDollar[6].id}
6✔
1049
                }
6✔
1050
        case 25:
9✔
1051
                yyDollar = yyS[yypt-8 : yypt+1]
9✔
1052
                {
18✔
1053
                        yyVAL.stmt = &RenameColumnStmt{table: yyDollar[3].id, oldName: yyDollar[6].id, newName: yyDollar[8].id}
9✔
1054
                }
9✔
1055
        case 26:
11✔
1056
                yyDollar = yyS[yypt-6 : yypt+1]
11✔
1057
                {
22✔
1058
                        yyVAL.stmt = &DropColumnStmt{table: yyDollar[3].id, colName: yyDollar[6].id}
11✔
1059
                }
11✔
1060
        case 27:
4✔
1061
                yyDollar = yyS[yypt-6 : yypt+1]
4✔
1062
                {
8✔
1063
                        yyVAL.stmt = &DropConstraintStmt{table: yyDollar[3].id, constraintName: yyDollar[6].id}
4✔
1064
                }
4✔
1065
        case 28:
6✔
1066
                yyDollar = yyS[yypt-7 : yypt+1]
6✔
1067
                {
12✔
1068
                        yyVAL.stmt = &CreateUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
6✔
1069
                }
6✔
1070
        case 29:
5✔
1071
                yyDollar = yyS[yypt-7 : yypt+1]
5✔
1072
                {
10✔
1073
                        yyVAL.stmt = &AlterUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
5✔
1074
                }
5✔
1075
        case 30:
3✔
1076
                yyDollar = yyS[yypt-3 : yypt+1]
3✔
1077
                {
6✔
1078
                        yyVAL.stmt = &DropUserStmt{username: yyDollar[3].id}
3✔
1079
                }
3✔
1080
        case 31:
3✔
1081
                yyDollar = yyS[yypt-8 : yypt+1]
3✔
1082
                {
6✔
1083
                        yyVAL.stmt = &AlterPrivilegesStmt{database: yyDollar[5].id, user: yyDollar[8].id, privileges: yyDollar[2].sqlPrivileges, isGrant: true}
3✔
1084
                }
3✔
1085
        case 32:
3✔
1086
                yyDollar = yyS[yypt-8 : yypt+1]
3✔
1087
                {
6✔
1088
                        yyVAL.stmt = &AlterPrivilegesStmt{database: yyDollar[5].id, user: yyDollar[8].id, privileges: yyDollar[2].sqlPrivileges}
3✔
1089
                }
3✔
1090
        case 33:
4✔
1091
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
1092
                {
8✔
1093
                        yyVAL.sqlPrivileges = allPrivileges
4✔
1094
                }
4✔
1095
        case 34:
2✔
1096
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1097
                {
4✔
1098
                        yyVAL.sqlPrivileges = []SQLPrivilege{yyDollar[1].sqlPrivilege}
2✔
1099
                }
2✔
1100
        case 35:
6✔
1101
                yyDollar = yyS[yypt-3 : yypt+1]
6✔
1102
                {
12✔
1103
                        yyVAL.sqlPrivileges = append(yyDollar[3].sqlPrivileges, yyDollar[1].sqlPrivilege)
6✔
1104
                }
6✔
1105
        case 36:
2✔
1106
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1107
                {
4✔
1108
                        yyVAL.sqlPrivilege = SQLPrivilegeSelect
2✔
1109
                }
2✔
1110
        case 37:
×
1111
                yyDollar = yyS[yypt-1 : yypt+1]
×
1112
                {
×
1113
                        yyVAL.sqlPrivilege = SQLPrivilegeCreate
×
1114
                }
×
1115
        case 38:
2✔
1116
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1117
                {
4✔
1118
                        yyVAL.sqlPrivilege = SQLPrivilegeInsert
2✔
1119
                }
2✔
1120
        case 39:
2✔
1121
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1122
                {
4✔
1123
                        yyVAL.sqlPrivilege = SQLPrivilegeUpdate
2✔
1124
                }
2✔
1125
        case 40:
2✔
1126
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1127
                {
4✔
1128
                        yyVAL.sqlPrivilege = SQLPrivilegeDelete
2✔
1129
                }
2✔
1130
        case 41:
×
1131
                yyDollar = yyS[yypt-1 : yypt+1]
×
1132
                {
×
1133
                        yyVAL.sqlPrivilege = SQLPrivilegeDrop
×
1134
                }
×
1135
        case 42:
×
1136
                yyDollar = yyS[yypt-1 : yypt+1]
×
1137
                {
×
1138
                        yyVAL.sqlPrivilege = SQLPrivilegeAlter
×
1139
                }
×
1140
        case 43:
×
1141
                yyDollar = yyS[yypt-0 : yypt+1]
×
1142
                {
×
1143
                        yyVAL.permission = PermissionReadWrite
×
1144
                }
×
1145
        case 44:
5✔
1146
                yyDollar = yyS[yypt-1 : yypt+1]
5✔
1147
                {
10✔
1148
                        yyVAL.permission = PermissionReadOnly
5✔
1149
                }
5✔
1150
        case 45:
4✔
1151
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
1152
                {
8✔
1153
                        yyVAL.permission = PermissionReadWrite
4✔
1154
                }
4✔
1155
        case 46:
2✔
1156
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1157
                {
4✔
1158
                        yyVAL.permission = PermissionAdmin
2✔
1159
                }
2✔
1160
        case 47:
298✔
1161
                yyDollar = yyS[yypt-0 : yypt+1]
298✔
1162
                {
596✔
1163
                        yyVAL.boolean = false
298✔
1164
                }
298✔
1165
        case 48:
25✔
1166
                yyDollar = yyS[yypt-3 : yypt+1]
25✔
1167
                {
50✔
1168
                        yyVAL.boolean = true
25✔
1169
                }
25✔
1170
        case 49:
172✔
1171
                yyDollar = yyS[yypt-1 : yypt+1]
172✔
1172
                {
344✔
1173
                        yyVAL.ids = []string{yyDollar[1].id}
172✔
1174
                }
172✔
1175
        case 50:
71✔
1176
                yyDollar = yyS[yypt-3 : yypt+1]
71✔
1177
                {
142✔
1178
                        yyVAL.ids = yyDollar[2].ids
71✔
1179
                }
71✔
1180
        case 51:
1,827✔
1181
                yyDollar = yyS[yypt-8 : yypt+1]
1,827✔
1182
                {
3,654✔
1183
                        yyVAL.stmt = &UpsertIntoStmt{isInsert: true, tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, ds: yyDollar[7].ds, onConflict: yyDollar[8].onConflict}
1,827✔
1184
                }
1,827✔
1185
        case 52:
204✔
1186
                yyDollar = yyS[yypt-7 : yypt+1]
204✔
1187
                {
408✔
1188
                        yyVAL.stmt = &UpsertIntoStmt{tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, ds: yyDollar[7].ds}
204✔
1189
                }
204✔
1190
        case 53:
12✔
1191
                yyDollar = yyS[yypt-7 : yypt+1]
12✔
1192
                {
24✔
1193
                        yyVAL.stmt = &DeleteFromStmt{tableRef: yyDollar[3].tableRef, where: yyDollar[4].exp, indexOn: yyDollar[5].ids, limit: yyDollar[6].exp, offset: yyDollar[7].exp}
12✔
1194
                }
12✔
1195
        case 54:
24✔
1196
                yyDollar = yyS[yypt-8 : yypt+1]
24✔
1197
                {
48✔
1198
                        yyVAL.stmt = &UpdateStmt{tableRef: yyDollar[2].tableRef, updates: yyDollar[4].updates, where: yyDollar[5].exp, indexOn: yyDollar[6].ids, limit: yyDollar[7].exp, offset: yyDollar[8].exp}
24✔
1199
                }
24✔
1200
        case 55:
2,028✔
1201
                yyDollar = yyS[yypt-2 : yypt+1]
2,028✔
1202
                {
4,056✔
1203
                        yyVAL.ds = &valuesDataSource{rows: yyDollar[2].rows}
2,028✔
1204
                }
2,028✔
1205
        case 56:
3✔
1206
                yyDollar = yyS[yypt-1 : yypt+1]
3✔
1207
                {
6✔
1208
                        yyVAL.ds = yyDollar[1].stmt.(DataSource)
3✔
1209
                }
3✔
1210
        case 57:
1,824✔
1211
                yyDollar = yyS[yypt-0 : yypt+1]
1,824✔
1212
                {
3,648✔
1213
                        yyVAL.onConflict = nil
1,824✔
1214
                }
1,824✔
1215
        case 58:
3✔
1216
                yyDollar = yyS[yypt-4 : yypt+1]
3✔
1217
                {
6✔
1218
                        yyVAL.onConflict = &OnConflictDo{}
3✔
1219
                }
3✔
1220
        case 59:
24✔
1221
                yyDollar = yyS[yypt-1 : yypt+1]
24✔
1222
                {
48✔
1223
                        yyVAL.updates = []*colUpdate{yyDollar[1].update}
24✔
1224
                }
24✔
1225
        case 60:
2✔
1226
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1227
                {
4✔
1228
                        yyVAL.updates = append(yyDollar[1].updates, yyDollar[3].update)
2✔
1229
                }
2✔
1230
        case 61:
26✔
1231
                yyDollar = yyS[yypt-3 : yypt+1]
26✔
1232
                {
52✔
1233
                        yyVAL.update = &colUpdate{col: yyDollar[1].id, op: yyDollar[2].cmpOp, val: yyDollar[3].exp}
26✔
1234
                }
26✔
1235
        case 62:
1✔
1236
                yyDollar = yyS[yypt-0 : yypt+1]
1✔
1237
                {
2✔
1238
                        yyVAL.ids = nil
1✔
1239
                }
1✔
1240
        case 63:
1,832✔
1241
                yyDollar = yyS[yypt-1 : yypt+1]
1,832✔
1242
                {
3,664✔
1243
                        yyVAL.ids = yyDollar[1].ids
1,832✔
1244
                }
1,832✔
1245
        case 64:
2,033✔
1246
                yyDollar = yyS[yypt-1 : yypt+1]
2,033✔
1247
                {
4,066✔
1248
                        yyVAL.rows = []*RowSpec{yyDollar[1].row}
2,033✔
1249
                }
2,033✔
1250
        case 65:
103✔
1251
                yyDollar = yyS[yypt-3 : yypt+1]
103✔
1252
                {
206✔
1253
                        yyVAL.rows = append(yyDollar[1].rows, yyDollar[3].row)
103✔
1254
                }
103✔
1255
        case 66:
2,136✔
1256
                yyDollar = yyS[yypt-3 : yypt+1]
2,136✔
1257
                {
4,272✔
1258
                        yyVAL.row = &RowSpec{Values: yyDollar[2].values}
2,136✔
1259
                }
2,136✔
1260
        case 67:
2,201✔
1261
                yyDollar = yyS[yypt-1 : yypt+1]
2,201✔
1262
                {
4,402✔
1263
                        yyVAL.ids = []string{yyDollar[1].id}
2,201✔
1264
                }
2,201✔
1265
        case 68:
5,226✔
1266
                yyDollar = yyS[yypt-3 : yypt+1]
5,226✔
1267
                {
10,452✔
1268
                        yyVAL.ids = append(yyDollar[1].ids, yyDollar[3].id)
5,226✔
1269
                }
5,226✔
1270
        case 69:
33✔
1271
                yyDollar = yyS[yypt-1 : yypt+1]
33✔
1272
                {
66✔
1273
                        yyVAL.cols = []*ColSelector{yyDollar[1].col}
33✔
1274
                }
33✔
1275
        case 70:
18✔
1276
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1277
                {
36✔
1278
                        yyVAL.cols = append(yyDollar[1].cols, yyDollar[3].col)
18✔
1279
                }
18✔
1280
        case 71:
130✔
1281
                yyDollar = yyS[yypt-0 : yypt+1]
130✔
1282
                {
260✔
1283
                        yyVAL.values = nil
130✔
1284
                }
130✔
1285
        case 72:
2,182✔
1286
                yyDollar = yyS[yypt-1 : yypt+1]
2,182✔
1287
                {
4,364✔
1288
                        yyVAL.values = yyDollar[1].values
2,182✔
1289
                }
2,182✔
1290
        case 73:
2,203✔
1291
                yyDollar = yyS[yypt-1 : yypt+1]
2,203✔
1292
                {
4,406✔
1293
                        yyVAL.values = []ValueExp{yyDollar[1].exp}
2,203✔
1294
                }
2,203✔
1295
        case 74:
5,368✔
1296
                yyDollar = yyS[yypt-3 : yypt+1]
5,368✔
1297
                {
10,736✔
1298
                        yyVAL.values = append(yyDollar[1].values, yyDollar[3].exp)
5,368✔
1299
                }
5,368✔
1300
        case 75:
911✔
1301
                yyDollar = yyS[yypt-1 : yypt+1]
911✔
1302
                {
1,822✔
1303
                        yyVAL.value = &Integer{val: int64(yyDollar[1].integer)}
911✔
1304
                }
911✔
1305
        case 76:
64✔
1306
                yyDollar = yyS[yypt-1 : yypt+1]
64✔
1307
                {
128✔
1308
                        yyVAL.value = &Float64{val: float64(yyDollar[1].float)}
64✔
1309
                }
64✔
1310
        case 77:
720✔
1311
                yyDollar = yyS[yypt-1 : yypt+1]
720✔
1312
                {
1,440✔
1313
                        yyVAL.value = &Varchar{val: yyDollar[1].str}
720✔
1314
                }
720✔
1315
        case 78:
239✔
1316
                yyDollar = yyS[yypt-1 : yypt+1]
239✔
1317
                {
478✔
1318
                        yyVAL.value = &Bool{val: yyDollar[1].boolean}
239✔
1319
                }
239✔
1320
        case 79:
94✔
1321
                yyDollar = yyS[yypt-1 : yypt+1]
94✔
1322
                {
188✔
1323
                        yyVAL.value = &Blob{val: yyDollar[1].blob}
94✔
1324
                }
94✔
1325
        case 80:
59✔
1326
                yyDollar = yyS[yypt-6 : yypt+1]
59✔
1327
                {
118✔
1328
                        yyVAL.value = &Cast{val: yyDollar[3].exp, t: yyDollar[5].sqlType}
59✔
1329
                }
59✔
1330
        case 81:
163✔
1331
                yyDollar = yyS[yypt-1 : yypt+1]
163✔
1332
                {
326✔
1333
                        yyVAL.value = yyDollar[1].value
163✔
1334
                }
163✔
1335
        case 82:
5,938✔
1336
                yyDollar = yyS[yypt-1 : yypt+1]
5,938✔
1337
                {
11,876✔
1338
                        yyVAL.value = &Param{id: yyDollar[1].id}
5,938✔
1339
                }
5,938✔
1340
        case 83:
175✔
1341
                yyDollar = yyS[yypt-1 : yypt+1]
175✔
1342
                {
350✔
1343
                        yyVAL.value = &Param{id: fmt.Sprintf("param%d", yyDollar[1].pparam), pos: yyDollar[1].pparam}
175✔
1344
                }
175✔
1345
        case 84:
97✔
1346
                yyDollar = yyS[yypt-1 : yypt+1]
97✔
1347
                {
194✔
1348
                        yyVAL.value = &NullValue{t: AnyType}
97✔
1349
                }
97✔
1350
        case 85:
169✔
1351
                yyDollar = yyS[yypt-4 : yypt+1]
169✔
1352
                {
338✔
1353
                        yyVAL.value = &FnCall{fn: yyDollar[1].id, params: yyDollar[3].values}
169✔
1354
                }
169✔
1355
        case 86:
213✔
1356
                yyDollar = yyS[yypt-1 : yypt+1]
213✔
1357
                {
426✔
1358
                        yyVAL.colsSpec = []*ColSpec{yyDollar[1].colSpec}
213✔
1359
                }
213✔
1360
        case 87:
373✔
1361
                yyDollar = yyS[yypt-3 : yypt+1]
373✔
1362
                {
746✔
1363
                        yyVAL.colsSpec = append(yyDollar[1].colsSpec, yyDollar[3].colSpec)
373✔
1364
                }
373✔
1365
        case 88:
602✔
1366
                yyDollar = yyS[yypt-5 : yypt+1]
602✔
1367
                {
1,204✔
1368
                        yyVAL.colSpec = &ColSpec{colName: yyDollar[1].id, colType: yyDollar[2].sqlType, maxLen: int(yyDollar[3].integer), notNull: yyDollar[4].boolean, autoIncrement: yyDollar[5].boolean}
602✔
1369
                }
602✔
1370
        case 89:
540✔
1371
                yyDollar = yyS[yypt-0 : yypt+1]
540✔
1372
                {
1,080✔
1373
                        yyVAL.integer = 0
540✔
1374
                }
540✔
1375
        case 90:
58✔
1376
                yyDollar = yyS[yypt-3 : yypt+1]
58✔
1377
                {
116✔
1378
                        yyVAL.integer = yyDollar[2].integer
58✔
1379
                }
58✔
1380
        case 91:
4✔
1381
                yyDollar = yyS[yypt-3 : yypt+1]
4✔
1382
                {
8✔
1383
                        yyVAL.integer = yyDollar[2].integer
4✔
1384
                }
4✔
1385
        case 92:
518✔
1386
                yyDollar = yyS[yypt-0 : yypt+1]
518✔
1387
                {
1,036✔
1388
                        yyVAL.boolean = false
518✔
1389
                }
518✔
1390
        case 93:
84✔
1391
                yyDollar = yyS[yypt-1 : yypt+1]
84✔
1392
                {
168✔
1393
                        yyVAL.boolean = true
84✔
1394
                }
84✔
1395
        case 94:
592✔
1396
                yyDollar = yyS[yypt-0 : yypt+1]
592✔
1397
                {
1,184✔
1398
                        yyVAL.boolean = false
592✔
1399
                }
592✔
1400
        case 95:
1✔
1401
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1402
                {
2✔
1403
                        yyVAL.boolean = false
1✔
1404
                }
1✔
1405
        case 96:
9✔
1406
                yyDollar = yyS[yypt-2 : yypt+1]
9✔
1407
                {
18✔
1408
                        yyVAL.boolean = true
9✔
1409
                }
9✔
1410
        case 97:
781✔
1411
                yyDollar = yyS[yypt-1 : yypt+1]
781✔
1412
                {
1,562✔
1413
                        yyVAL.stmt = yyDollar[1].stmt
781✔
1414
                }
781✔
1415
        case 98:
11✔
1416
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1417
                {
22✔
1418
                        yyVAL.stmt = &UnionStmt{
11✔
1419
                                distinct: yyDollar[3].distinct,
11✔
1420
                                left:     yyDollar[1].stmt.(DataSource),
11✔
1421
                                right:    yyDollar[4].stmt.(DataSource),
11✔
1422
                        }
11✔
1423
                }
11✔
1424
        case 99:
1✔
1425
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1426
                {
2✔
1427
                        yyVAL.stmt = &SelectStmt{
1✔
1428
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}},
1✔
1429
                        }
1✔
1430
                }
1✔
1431
        case 100:
1✔
1432
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1433
                {
2✔
1434
                        yyVAL.stmt = &SelectStmt{
1✔
1435
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}},
1✔
1436
                        }
1✔
1437
                }
1✔
1438
        case 101:
×
1439
                yyDollar = yyS[yypt-3 : yypt+1]
×
1440
                {
×
1441
                        yyVAL.stmt = &SelectStmt{
×
1442
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}},
×
1443
                        }
×
1444
                }
×
1445
        case 102:
6✔
1446
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1447
                {
12✔
1448
                        yyVAL.stmt = &SelectStmt{
6✔
1449
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}},
6✔
1450
                        }
6✔
1451
                }
6✔
1452
        case 103:
1✔
1453
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1454
                {
2✔
1455
                        yyVAL.stmt = &SelectStmt{
1✔
1456
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "grants"}},
1✔
1457
                        }
1✔
1458
                }
1✔
1459
        case 104:
1✔
1460
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1461
                {
2✔
1462
                        yyVAL.stmt = &SelectStmt{
1✔
1463
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "grants", params: []ValueExp{&Varchar{val: yyDollar[4].id}}}},
1✔
1464
                        }
1✔
1465
                }
1✔
1466
        case 105:
793✔
1467
                yyDollar = yyS[yypt-13 : yypt+1]
793✔
1468
                {
1,586✔
1469
                        yyVAL.stmt = &SelectStmt{
793✔
1470
                                distinct: yyDollar[2].distinct,
793✔
1471
                                targets:  yyDollar[3].targets,
793✔
1472
                                ds:       yyDollar[5].ds,
793✔
1473
                                indexOn:  yyDollar[6].ids,
793✔
1474
                                joins:    yyDollar[7].joins,
793✔
1475
                                where:    yyDollar[8].exp,
793✔
1476
                                groupBy:  yyDollar[9].cols,
793✔
1477
                                having:   yyDollar[10].exp,
793✔
1478
                                orderBy:  yyDollar[11].ordexps,
793✔
1479
                                limit:    yyDollar[12].exp,
793✔
1480
                                offset:   yyDollar[13].exp,
793✔
1481
                        }
793✔
1482
                }
793✔
1483
        case 106:
11✔
1484
                yyDollar = yyS[yypt-0 : yypt+1]
11✔
1485
                {
22✔
1486
                        yyVAL.distinct = true
11✔
1487
                }
11✔
1488
        case 107:
1✔
1489
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1490
                {
2✔
1491
                        yyVAL.distinct = false
1✔
1492
                }
1✔
1493
        case 108:
787✔
1494
                yyDollar = yyS[yypt-0 : yypt+1]
787✔
1495
                {
1,574✔
1496
                        yyVAL.distinct = false
787✔
1497
                }
787✔
1498
        case 109:
8✔
1499
                yyDollar = yyS[yypt-1 : yypt+1]
8✔
1500
                {
16✔
1501
                        yyVAL.distinct = true
8✔
1502
                }
8✔
1503
        case 110:
367✔
1504
                yyDollar = yyS[yypt-1 : yypt+1]
367✔
1505
                {
734✔
1506
                        yyVAL.targets = nil
367✔
1507
                }
367✔
1508
        case 111:
428✔
1509
                yyDollar = yyS[yypt-1 : yypt+1]
428✔
1510
                {
856✔
1511
                        yyVAL.targets = yyDollar[1].targets
428✔
1512
                }
428✔
1513
        case 112:
428✔
1514
                yyDollar = yyS[yypt-2 : yypt+1]
428✔
1515
                {
856✔
1516
                        yyVAL.targets = []TargetEntry{{Exp: yyDollar[1].exp, As: yyDollar[2].id}}
428✔
1517
                }
428✔
1518
        case 113:
460✔
1519
                yyDollar = yyS[yypt-4 : yypt+1]
460✔
1520
                {
920✔
1521
                        yyVAL.targets = append(yyDollar[1].targets, TargetEntry{Exp: yyDollar[3].exp, As: yyDollar[4].id})
460✔
1522
                }
460✔
1523
        case 114:
1,535✔
1524
                yyDollar = yyS[yypt-1 : yypt+1]
1,535✔
1525
                {
3,070✔
1526
                        yyVAL.sel = yyDollar[1].col
1,535✔
1527
                }
1,535✔
1528
        case 115:
39✔
1529
                yyDollar = yyS[yypt-2 : yypt+1]
39✔
1530
                {
78✔
1531
                        yyVAL.sel = &JSONSelector{ColSelector: yyDollar[1].col, fields: yyDollar[2].jsonFields}
39✔
1532
                }
39✔
1533
        case 116:
66✔
1534
                yyDollar = yyS[yypt-4 : yypt+1]
66✔
1535
                {
132✔
1536
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, col: "*"}
66✔
1537
                }
66✔
1538
        case 117:
67✔
1539
                yyDollar = yyS[yypt-4 : yypt+1]
67✔
1540
                {
134✔
1541
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, table: yyDollar[3].col.table, col: yyDollar[3].col.col}
67✔
1542
                }
67✔
1543
        case 118:
39✔
1544
                yyDollar = yyS[yypt-2 : yypt+1]
39✔
1545
                {
78✔
1546
                        yyVAL.jsonFields = []string{yyDollar[2].str}
39✔
1547
                }
39✔
1548
        case 119:
19✔
1549
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
1550
                {
38✔
1551
                        yyVAL.jsonFields = append(yyVAL.jsonFields, yyDollar[3].str)
19✔
1552
                }
19✔
1553
        case 120:
1,544✔
1554
                yyDollar = yyS[yypt-1 : yypt+1]
1,544✔
1555
                {
3,088✔
1556
                        yyVAL.col = &ColSelector{col: yyDollar[1].id}
1,544✔
1557
                }
1,544✔
1558
        case 121:
148✔
1559
                yyDollar = yyS[yypt-3 : yypt+1]
148✔
1560
                {
296✔
1561
                        yyVAL.col = &ColSelector{table: yyDollar[1].id, col: yyDollar[3].id}
148✔
1562
                }
148✔
1563
        case 122:
784✔
1564
                yyDollar = yyS[yypt-3 : yypt+1]
784✔
1565
                {
1,568✔
1566
                        yyDollar[1].tableRef.period = yyDollar[2].period
784✔
1567
                        yyDollar[1].tableRef.as = yyDollar[3].id
784✔
1568
                        yyVAL.ds = yyDollar[1].tableRef
784✔
1569
                }
784✔
1570
        case 123:
5✔
1571
                yyDollar = yyS[yypt-4 : yypt+1]
5✔
1572
                {
10✔
1573
                        yyVAL.ds = &valuesDataSource{inferTypes: true, rows: yyDollar[3].rows}
5✔
1574
                }
5✔
1575
        case 124:
11✔
1576
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1577
                {
22✔
1578
                        yyDollar[2].stmt.(*SelectStmt).as = yyDollar[4].id
11✔
1579
                        yyVAL.ds = yyDollar[2].stmt.(DataSource)
11✔
1580
                }
11✔
1581
        case 125:
4✔
1582
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1583
                {
8✔
1584
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}, as: yyDollar[4].id}
4✔
1585
                }
4✔
1586
        case 126:
4✔
1587
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1588
                {
8✔
1589
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}, as: yyDollar[4].id}
4✔
1590
                }
4✔
1591
        case 127:
×
1592
                yyDollar = yyS[yypt-4 : yypt+1]
×
1593
                {
×
1594
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}}
×
1595
                }
×
1596
        case 128:
1✔
1597
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1598
                {
2✔
1599
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}, as: yyDollar[4].id}
1✔
1600
                }
1✔
1601
        case 129:
6✔
1602
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1603
                {
12✔
1604
                        yyVAL.ds = &FnDataSourceStmt{fnCall: yyDollar[1].value.(*FnCall), as: yyDollar[2].id}
6✔
1605
                }
6✔
1606
        case 130:
2✔
1607
                yyDollar = yyS[yypt-6 : yypt+1]
2✔
1608
                {
4✔
1609
                        yyVAL.ds = &tableRef{table: yyDollar[4].id, history: true, as: yyDollar[6].id}
2✔
1610
                }
2✔
1611
        case 131:
2,866✔
1612
                yyDollar = yyS[yypt-1 : yypt+1]
2,866✔
1613
                {
5,732✔
1614
                        yyVAL.tableRef = &tableRef{table: yyDollar[1].id}
2,866✔
1615
                }
2,866✔
1616
        case 132:
793✔
1617
                yyDollar = yyS[yypt-2 : yypt+1]
793✔
1618
                {
1,586✔
1619
                        yyVAL.period = period{start: yyDollar[1].openPeriod, end: yyDollar[2].openPeriod}
793✔
1620
                }
793✔
1621
        case 133:
724✔
1622
                yyDollar = yyS[yypt-0 : yypt+1]
724✔
1623
                {
1,448✔
1624
                        yyVAL.openPeriod = nil
724✔
1625
                }
724✔
1626
        case 134:
44✔
1627
                yyDollar = yyS[yypt-2 : yypt+1]
44✔
1628
                {
88✔
1629
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
44✔
1630
                }
44✔
1631
        case 135:
25✔
1632
                yyDollar = yyS[yypt-2 : yypt+1]
25✔
1633
                {
50✔
1634
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
25✔
1635
                }
25✔
1636
        case 136:
749✔
1637
                yyDollar = yyS[yypt-0 : yypt+1]
749✔
1638
                {
1,498✔
1639
                        yyVAL.openPeriod = nil
749✔
1640
                }
749✔
1641
        case 137:
33✔
1642
                yyDollar = yyS[yypt-2 : yypt+1]
33✔
1643
                {
66✔
1644
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
33✔
1645
                }
33✔
1646
        case 138:
11✔
1647
                yyDollar = yyS[yypt-2 : yypt+1]
11✔
1648
                {
22✔
1649
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
11✔
1650
                }
11✔
1651
        case 139:
56✔
1652
                yyDollar = yyS[yypt-2 : yypt+1]
56✔
1653
                {
112✔
1654
                        yyVAL.periodInstant = periodInstant{instantType: txInstant, exp: yyDollar[2].exp}
56✔
1655
                }
56✔
1656
        case 140:
57✔
1657
                yyDollar = yyS[yypt-1 : yypt+1]
57✔
1658
                {
114✔
1659
                        yyVAL.periodInstant = periodInstant{instantType: timeInstant, exp: yyDollar[1].exp}
57✔
1660
                }
57✔
1661
        case 141:
776✔
1662
                yyDollar = yyS[yypt-0 : yypt+1]
776✔
1663
                {
1,552✔
1664
                        yyVAL.joins = nil
776✔
1665
                }
776✔
1666
        case 142:
17✔
1667
                yyDollar = yyS[yypt-1 : yypt+1]
17✔
1668
                {
34✔
1669
                        yyVAL.joins = yyDollar[1].joins
17✔
1670
                }
17✔
1671
        case 143:
17✔
1672
                yyDollar = yyS[yypt-1 : yypt+1]
17✔
1673
                {
34✔
1674
                        yyVAL.joins = []*JoinSpec{yyDollar[1].join}
17✔
1675
                }
17✔
1676
        case 144:
7✔
1677
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1678
                {
14✔
1679
                        yyVAL.joins = append([]*JoinSpec{yyDollar[1].join}, yyDollar[2].joins...)
7✔
1680
                }
7✔
1681
        case 145:
24✔
1682
                yyDollar = yyS[yypt-6 : yypt+1]
24✔
1683
                {
48✔
1684
                        yyVAL.join = &JoinSpec{joinType: yyDollar[1].joinType, ds: yyDollar[3].ds, indexOn: yyDollar[4].ids, cond: yyDollar[6].exp}
24✔
1685
                }
24✔
1686
        case 146:
3✔
1687
                yyDollar = yyS[yypt-0 : yypt+1]
3✔
1688
                {
6✔
1689
                        yyVAL.joinType = InnerJoin
3✔
1690
                }
3✔
1691
        case 147:
21✔
1692
                yyDollar = yyS[yypt-1 : yypt+1]
21✔
1693
                {
42✔
1694
                        yyVAL.joinType = yyDollar[1].joinType
21✔
1695
                }
21✔
1696
        case 148:
409✔
1697
                yyDollar = yyS[yypt-0 : yypt+1]
409✔
1698
                {
818✔
1699
                        yyVAL.exp = nil
409✔
1700
                }
409✔
1701
        case 149:
420✔
1702
                yyDollar = yyS[yypt-2 : yypt+1]
420✔
1703
                {
840✔
1704
                        yyVAL.exp = yyDollar[2].exp
420✔
1705
                }
420✔
1706
        case 150:
760✔
1707
                yyDollar = yyS[yypt-0 : yypt+1]
760✔
1708
                {
1,520✔
1709
                        yyVAL.cols = nil
760✔
1710
                }
760✔
1711
        case 151:
33✔
1712
                yyDollar = yyS[yypt-3 : yypt+1]
33✔
1713
                {
66✔
1714
                        yyVAL.cols = yyDollar[3].cols
33✔
1715
                }
33✔
1716
        case 152:
786✔
1717
                yyDollar = yyS[yypt-0 : yypt+1]
786✔
1718
                {
1,572✔
1719
                        yyVAL.exp = nil
786✔
1720
                }
786✔
1721
        case 153:
7✔
1722
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1723
                {
14✔
1724
                        yyVAL.exp = yyDollar[2].exp
7✔
1725
                }
7✔
1726
        case 154:
789✔
1727
                yyDollar = yyS[yypt-0 : yypt+1]
789✔
1728
                {
1,578✔
1729
                        yyVAL.exp = nil
789✔
1730
                }
789✔
1731
        case 155:
40✔
1732
                yyDollar = yyS[yypt-2 : yypt+1]
40✔
1733
                {
80✔
1734
                        yyVAL.exp = yyDollar[2].exp
40✔
1735
                }
40✔
1736
        case 156:
825✔
1737
                yyDollar = yyS[yypt-0 : yypt+1]
825✔
1738
                {
1,650✔
1739
                        yyVAL.exp = nil
825✔
1740
                }
825✔
1741
        case 157:
4✔
1742
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
1743
                {
8✔
1744
                        yyVAL.exp = yyDollar[2].exp
4✔
1745
                }
4✔
1746
        case 158:
636✔
1747
                yyDollar = yyS[yypt-0 : yypt+1]
636✔
1748
                {
1,272✔
1749
                        yyVAL.ordexps = nil
636✔
1750
                }
636✔
1751
        case 159:
157✔
1752
                yyDollar = yyS[yypt-3 : yypt+1]
157✔
1753
                {
314✔
1754
                        yyVAL.ordexps = yyDollar[3].ordexps
157✔
1755
                }
157✔
1756
        case 160:
823✔
1757
                yyDollar = yyS[yypt-0 : yypt+1]
823✔
1758
                {
1,646✔
1759
                        yyVAL.ids = nil
823✔
1760
                }
823✔
1761
        case 161:
30✔
1762
                yyDollar = yyS[yypt-4 : yypt+1]
30✔
1763
                {
60✔
1764
                        yyVAL.ids = yyDollar[4].ids
30✔
1765
                }
30✔
1766
        case 162:
157✔
1767
                yyDollar = yyS[yypt-2 : yypt+1]
157✔
1768
                {
314✔
1769
                        yyVAL.ordexps = []*OrdExp{{exp: yyDollar[1].exp, descOrder: yyDollar[2].opt_ord}}
157✔
1770
                }
157✔
1771
        case 163:
39✔
1772
                yyDollar = yyS[yypt-4 : yypt+1]
39✔
1773
                {
78✔
1774
                        yyVAL.ordexps = append(yyDollar[1].ordexps, &OrdExp{exp: yyDollar[3].exp, descOrder: yyDollar[4].opt_ord})
39✔
1775
                }
39✔
1776
        case 164:
58✔
1777
                yyDollar = yyS[yypt-0 : yypt+1]
58✔
1778
                {
116✔
1779
                        yyVAL.opt_ord = false
58✔
1780
                }
58✔
1781
        case 165:
43✔
1782
                yyDollar = yyS[yypt-1 : yypt+1]
43✔
1783
                {
86✔
1784
                        yyVAL.opt_ord = false
43✔
1785
                }
43✔
1786
        case 166:
95✔
1787
                yyDollar = yyS[yypt-1 : yypt+1]
95✔
1788
                {
190✔
1789
                        yyVAL.opt_ord = true
95✔
1790
                }
95✔
1791
        case 167:
1,595✔
1792
                yyDollar = yyS[yypt-0 : yypt+1]
1,595✔
1793
                {
3,190✔
1794
                        yyVAL.id = ""
1,595✔
1795
                }
1,595✔
1796
        case 168:
27✔
1797
                yyDollar = yyS[yypt-1 : yypt+1]
27✔
1798
                {
54✔
1799
                        yyVAL.id = yyDollar[1].id
27✔
1800
                }
27✔
1801
        case 169:
78✔
1802
                yyDollar = yyS[yypt-2 : yypt+1]
78✔
1803
                {
156✔
1804
                        yyVAL.id = yyDollar[2].id
78✔
1805
                }
78✔
1806
        case 170:
213✔
1807
                yyDollar = yyS[yypt-0 : yypt+1]
213✔
1808
                {
426✔
1809
                        yyVAL.checks = nil
213✔
1810
                }
213✔
1811
        case 171:
7✔
1812
                yyDollar = yyS[yypt-4 : yypt+1]
7✔
1813
                {
14✔
1814
                        yyVAL.checks = append([]CheckConstraint{{exp: yyDollar[2].exp}}, yyDollar[4].checks...)
7✔
1815
                }
7✔
1816
        case 172:
3✔
1817
                yyDollar = yyS[yypt-6 : yypt+1]
3✔
1818
                {
6✔
1819
                        yyVAL.checks = append([]CheckConstraint{{name: yyDollar[2].id, exp: yyDollar[4].exp}}, yyDollar[6].checks...)
3✔
1820
                }
3✔
1821
        case 173:
20✔
1822
                yyDollar = yyS[yypt-0 : yypt+1]
20✔
1823
                {
40✔
1824
                        yyVAL.exp = nil
20✔
1825
                }
20✔
1826
        case 174:
5✔
1827
                yyDollar = yyS[yypt-1 : yypt+1]
5✔
1828
                {
10✔
1829
                        yyVAL.exp = yyDollar[1].exp
5✔
1830
                }
5✔
1831
        case 175:
10,359✔
1832
                yyDollar = yyS[yypt-1 : yypt+1]
10,359✔
1833
                {
20,718✔
1834
                        yyVAL.exp = yyDollar[1].exp
10,359✔
1835
                }
10,359✔
1836
        case 176:
722✔
1837
                yyDollar = yyS[yypt-1 : yypt+1]
722✔
1838
                {
1,444✔
1839
                        yyVAL.exp = yyDollar[1].binExp
722✔
1840
                }
722✔
1841
        case 177:
26✔
1842
                yyDollar = yyS[yypt-2 : yypt+1]
26✔
1843
                {
52✔
1844
                        yyVAL.exp = &NotBoolExp{exp: yyDollar[2].exp}
26✔
1845
                }
26✔
1846
        case 178:
11✔
1847
                yyDollar = yyS[yypt-2 : yypt+1]
11✔
1848
                {
22✔
1849
                        i, isInt := yyDollar[2].exp.(*Integer)
11✔
1850
                        if isInt {
16✔
1851
                                i.val = -i.val
5✔
1852
                                yyVAL.exp = i
5✔
1853
                        } else {
11✔
1854
                                yyVAL.exp = &NumExp{left: &Integer{val: 0}, op: SUBSOP, right: yyDollar[2].exp}
6✔
1855
                        }
6✔
1856
                }
1857
        case 179:
33✔
1858
                yyDollar = yyS[yypt-4 : yypt+1]
33✔
1859
                {
66✔
1860
                        yyVAL.exp = &LikeBoolExp{val: yyDollar[1].exp, notLike: yyDollar[2].boolean, pattern: yyDollar[4].exp}
33✔
1861
                }
33✔
UNCOV
1862
        case 180:
×
NEW
1863
                yyDollar = yyS[yypt-3 : yypt+1]
×
NEW
1864
                {
×
NEW
1865
                        yyVAL.exp = &LikeBoolExp{val: yyDollar[1].exp, notLike: true, pattern: yyDollar[3].exp}
×
NEW
1866
                }
×
1867
        case 181:
2✔
1868
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
1869
                {
4✔
1870
                        yyVAL.exp = &ExistsBoolExp{q: (yyDollar[3].stmt).(DataSource)}
2✔
1871
                }
2✔
1872
        case 182:
1✔
1873
                yyDollar = yyS[yypt-6 : yypt+1]
1✔
1874
                {
2✔
1875
                        yyVAL.exp = &InSubQueryExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, q: yyDollar[5].stmt.(*SelectStmt)}
1✔
1876
                }
1✔
1877
        case 183:
14✔
1878
                yyDollar = yyS[yypt-6 : yypt+1]
14✔
1879
                {
28✔
1880
                        yyVAL.exp = &InListExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, values: yyDollar[5].values}
14✔
1881
                }
14✔
1882
        case 184:
25✔
1883
                yyDollar = yyS[yypt-1 : yypt+1]
25✔
1884
                {
50✔
1885
                        yyVAL.exp = yyDollar[1].exp
25✔
1886
                }
25✔
1887
        case 185:
25✔
1888
                yyDollar = yyS[yypt-5 : yypt+1]
25✔
1889
                {
50✔
1890
                        yyVAL.exp = &CaseWhenExp{
25✔
1891
                                exp:      yyDollar[2].exp,
25✔
1892
                                whenThen: yyDollar[3].whenThenClauses,
25✔
1893
                                elseExp:  yyDollar[4].exp,
25✔
1894
                        }
25✔
1895
                }
25✔
1896
        case 186:
25✔
1897
                yyDollar = yyS[yypt-4 : yypt+1]
25✔
1898
                {
50✔
1899
                        yyVAL.whenThenClauses = []whenThenClause{{when: yyDollar[2].exp, then: yyDollar[4].exp}}
25✔
1900
                }
25✔
1901
        case 187:
6✔
1902
                yyDollar = yyS[yypt-5 : yypt+1]
6✔
1903
                {
12✔
1904
                        yyVAL.whenThenClauses = append(yyDollar[1].whenThenClauses, whenThenClause{when: yyDollar[3].exp, then: yyDollar[5].exp})
6✔
1905
                }
6✔
1906
        case 188:
6✔
1907
                yyDollar = yyS[yypt-0 : yypt+1]
6✔
1908
                {
12✔
1909
                        yyVAL.exp = nil
6✔
1910
                }
6✔
1911
        case 189:
19✔
1912
                yyDollar = yyS[yypt-2 : yypt+1]
19✔
1913
                {
38✔
1914
                        yyVAL.exp = yyDollar[2].exp
19✔
1915
                }
19✔
1916
        case 190:
1,707✔
1917
                yyDollar = yyS[yypt-1 : yypt+1]
1,707✔
1918
                {
3,414✔
1919
                        yyVAL.exp = yyDollar[1].sel
1,707✔
1920
                }
1,707✔
1921
        case 191:
8,460✔
1922
                yyDollar = yyS[yypt-1 : yypt+1]
8,460✔
1923
                {
16,920✔
1924
                        yyVAL.exp = yyDollar[1].value
8,460✔
1925
                }
8,460✔
1926
        case 192:
240✔
1927
                yyDollar = yyS[yypt-3 : yypt+1]
240✔
1928
                {
480✔
1929
                        yyVAL.exp = yyDollar[2].exp
240✔
1930
                }
240✔
1931
        case 193:
22✔
1932
                yyDollar = yyS[yypt-3 : yypt+1]
22✔
1933
                {
44✔
1934
                        yyVAL.exp = &Cast{val: yyDollar[1].exp, t: yyDollar[3].sqlType}
22✔
1935
                }
22✔
1936
        case 194:
45✔
1937
                yyDollar = yyS[yypt-0 : yypt+1]
45✔
1938
                {
90✔
1939
                        yyVAL.boolean = false
45✔
1940
                }
45✔
1941
        case 195:
3✔
1942
                yyDollar = yyS[yypt-1 : yypt+1]
3✔
1943
                {
6✔
1944
                        yyVAL.boolean = true
3✔
1945
                }
3✔
1946
        case 196:
33✔
1947
                yyDollar = yyS[yypt-3 : yypt+1]
33✔
1948
                {
66✔
1949
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: ADDOP, right: yyDollar[3].exp}
33✔
1950
                }
33✔
1951
        case 197:
19✔
1952
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
1953
                {
38✔
1954
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: SUBSOP, right: yyDollar[3].exp}
19✔
1955
                }
19✔
1956
        case 198:
18✔
1957
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1958
                {
36✔
1959
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: DIVOP, right: yyDollar[3].exp}
18✔
1960
                }
18✔
1961
        case 199:
19✔
1962
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
1963
                {
38✔
1964
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: MULTOP, right: yyDollar[3].exp}
19✔
1965
                }
19✔
1966
        case 200:
6✔
1967
                yyDollar = yyS[yypt-3 : yypt+1]
6✔
1968
                {
12✔
1969
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: MODOP, right: yyDollar[3].exp}
6✔
1970
                }
6✔
1971
        case 201:
126✔
1972
                yyDollar = yyS[yypt-3 : yypt+1]
126✔
1973
                {
252✔
1974
                        yyVAL.binExp = &BinBoolExp{left: yyDollar[1].exp, op: And, right: yyDollar[3].exp}
126✔
1975
                }
126✔
1976
        case 202:
51✔
1977
                yyDollar = yyS[yypt-3 : yypt+1]
51✔
1978
                {
102✔
1979
                        yyVAL.binExp = &BinBoolExp{left: yyDollar[1].exp, op: Or, right: yyDollar[3].exp}
51✔
1980
                }
51✔
1981
        case 203:
445✔
1982
                yyDollar = yyS[yypt-3 : yypt+1]
445✔
1983
                {
890✔
1984
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: yyDollar[2].cmpOp, right: yyDollar[3].exp}
445✔
1985
                }
445✔
1986
        case 204:
3✔
1987
                yyDollar = yyS[yypt-3 : yypt+1]
3✔
1988
                {
6✔
1989
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: EQ, right: &NullValue{t: AnyType}}
3✔
1990
                }
3✔
1991
        case 205:
2✔
1992
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
1993
                {
4✔
1994
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: NE, right: &NullValue{t: AnyType}}
2✔
1995
                }
2✔
1996
        }
1997
        goto yystack /* stack new state and value */
101,267✔
1998
}
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