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

codenotary / immudb / 9791636125

04 Jul 2024 09:10AM UTC coverage: 89.523% (+0.1%) from 89.416%
9791636125

push

gh-ci

ostafen
Implement CHECK constraints

Signed-off-by: Stefano Scafiti <stefano.scafiti96@gmail.com>

554 of 628 new or added lines in 10 files covered. (88.22%)

14 existing lines in 7 files now uncovered.

35374 of 39514 relevant lines covered (89.52%)

160396.03 hits per line

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

93.37
/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,009✔
9
        l.(*lexer).result = stmts
3,009✔
10
}
3,009✔
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
        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
        ordcols       []*OrdCol
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
}
60

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

155
var yyToknames = [...]string{
156
        "$end",
157
        "error",
158
        "$unk",
159
        "CREATE",
160
        "DROP",
161
        "USE",
162
        "DATABASE",
163
        "USER",
164
        "WITH",
165
        "PASSWORD",
166
        "READ",
167
        "READWRITE",
168
        "ADMIN",
169
        "SNAPSHOT",
170
        "HISTORY",
171
        "SINCE",
172
        "AFTER",
173
        "BEFORE",
174
        "UNTIL",
175
        "TX",
176
        "OF",
177
        "TIMESTAMP",
178
        "TABLE",
179
        "UNIQUE",
180
        "INDEX",
181
        "ON",
182
        "ALTER",
183
        "ADD",
184
        "RENAME",
185
        "TO",
186
        "COLUMN",
187
        "CONSTRAINT",
188
        "PRIMARY",
189
        "KEY",
190
        "CHECK",
191
        "BEGIN",
192
        "TRANSACTION",
193
        "COMMIT",
194
        "ROLLBACK",
195
        "INSERT",
196
        "UPSERT",
197
        "INTO",
198
        "VALUES",
199
        "DELETE",
200
        "UPDATE",
201
        "SET",
202
        "CONFLICT",
203
        "DO",
204
        "NOTHING",
205
        "SELECT",
206
        "DISTINCT",
207
        "FROM",
208
        "JOIN",
209
        "HAVING",
210
        "WHERE",
211
        "GROUP",
212
        "BY",
213
        "LIMIT",
214
        "OFFSET",
215
        "ORDER",
216
        "ASC",
217
        "DESC",
218
        "AS",
219
        "UNION",
220
        "ALL",
221
        "NOT",
222
        "LIKE",
223
        "IF",
224
        "EXISTS",
225
        "IN",
226
        "IS",
227
        "AUTO_INCREMENT",
228
        "NULL",
229
        "CAST",
230
        "SCAST",
231
        "SHOW",
232
        "DATABASES",
233
        "TABLES",
234
        "USERS",
235
        "NPARAM",
236
        "PPARAM",
237
        "JOINTYPE",
238
        "LOP",
239
        "CMPOP",
240
        "IDENTIFIER",
241
        "TYPE",
242
        "INTEGER",
243
        "FLOAT",
244
        "VARCHAR",
245
        "BOOLEAN",
246
        "BLOB",
247
        "AGGREGATE_FUNC",
248
        "ERROR",
249
        "DOT",
250
        "ARROW",
251
        "','",
252
        "'+'",
253
        "'-'",
254
        "'*'",
255
        "'/'",
256
        "'.'",
257
        "STMT_SEPARATOR",
258
        "'('",
259
        "')'",
260
        "'['",
261
        "']'",
262
}
263

264
var yyStatenames = [...]string{}
265

266
const yyEofCode = 1
267
const yyErrCode = 2
268
const yyInitialStackSize = 16
269

270
var yyExca = [...]int16{
271
        -1, 1,
272
        1, -1,
273
        -2, 0,
274
        -1, 93,
275
        67, 168,
276
        70, 168,
277
        -2, 156,
278
        -1, 233,
279
        53, 129,
280
        -2, 124,
281
        -1, 274,
282
        53, 129,
283
        -2, 126,
284
}
285

286
const yyPrivate = 57344
287

288
const yyLast = 481
289

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

342
var yyPact = [...]int16{
343
        348, -1000, -1000, 17, -1000, -1000, -1000, 346, -1000, -1000,
344
        405, 217, 411, 417, 339, 338, 311, 218, 271, 322,
345
        315, -1000, 348, -1000, 265, 265, 265, 397, 224, -1000,
346
        223, 425, 222, 199, 221, 220, 219, 218, 218, 218,
347
        330, -1000, 264, -1000, -1000, 208, -1000, 95, -1000, -1000,
348
        194, 268, 193, 394, 265, 437, -1000, -1000, 419, 37,
349
        37, -1000, 192, 82, -1000, 404, 426, 13, 12, 302,
350
        159, 260, -1000, -1000, 310, -1000, 61, 173, 63, 11,
351
        67, -1000, 263, 10, 188, 389, 429, -1000, 37, 37,
352
        -1000, 116, 197, 250, -1000, 116, 116, 9, -1000, -1000,
353
        116, -1000, -1000, -1000, -1000, -1000, 6, -1000, -1000, -1000,
354
        -1000, -15, -1000, 5, 187, 377, 376, 372, 421, 142,
355
        142, 441, 116, 75, -1000, 151, -1000, 4, 94, -1000,
356
        -1000, 185, 38, 103, 52, 180, -1000, 177, 2, 179,
357
        102, -1000, -1000, 197, 116, 116, 116, 116, 116, 116,
358
        257, 261, 134, -1000, 214, 73, 260, -13, 116, 116,
359
        142, -1000, 177, 175, 174, 171, 166, 99, -24, 60,
360
        -1000, -61, 288, 396, 197, 441, 159, 116, 441, 425,
361
        309, 1, -1, -3, -4, 173, -5, 173, -1000, 88,
362
        -1000, -27, -28, -1000, 59, -1000, 131, 142, -8, 432,
363
        73, 73, 255, 255, 214, 65, -1000, 244, 116, -9,
364
        -1000, -29, -1000, 155, -30, 46, 197, -62, -1000, -1000,
365
        380, -1000, -1000, 432, 334, 158, 326, 284, 116, 388,
366
        288, -1000, 197, 200, 173, -32, 406, -35, -36, 156,
367
        -43, -1000, -1000, -1000, -1000, -1000, 181, -77, -64, 142,
368
        -1000, -1000, -1000, -1000, -1000, 214, -25, -1000, 129, -1000,
369
        116, -1000, 147, -1000, -10, -1000, -10, -1000, 116, 197,
370
        -49, 284, 302, -1000, 200, 307, -1000, -1000, 173, 145,
371
        173, 173, -45, 173, 364, -1000, 116, 143, 254, 125,
372
        111, -1000, -65, -51, -66, -52, 197, -1000, 126, -1000,
373
        116, 36, 197, -1000, -1000, 142, -1000, 300, -1000, 4,
374
        -1000, -57, -1000, -1000, -1000, -1000, 357, 150, 355, 246,
375
        -1000, 167, -82, -58, -1000, -1000, -1000, -1000, -1000, -10,
376
        323, -59, -67, 304, 293, 441, 173, -49, 370, 116,
377
        -1000, -1000, -1000, -1000, -1000, -1000, 319, -1000, -1000, 282,
378
        116, 138, 385, -1000, -71, -1000, 70, 312, 288, 292,
379
        197, 25, -1000, 116, -1000, 370, -1000, 284, 94, 138,
380
        197, -1000, -1000, 24, 276, -1000, 94, -1000, -1000, -1000,
381
        276, -1000,
382
}
383

384
var yyPgo = [...]int16{
385
        0, 480, 426, 479, 478, 477, 18, 476, 475, 20,
386
        13, 10, 474, 473, 16, 9, 17, 14, 472, 11,
387
        2, 471, 470, 469, 3, 468, 467, 12, 378, 22,
388
        466, 465, 210, 464, 15, 463, 462, 8, 0, 19,
389
        461, 460, 459, 458, 6, 4, 457, 7, 456, 455,
390
        1, 5, 368, 454, 453, 452, 23, 451, 450, 21,
391
        448,
392
}
393

394
var yyR1 = [...]int8{
395
        0, 1, 2, 2, 60, 60, 3, 3, 3, 4,
396
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
397
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
398
        4, 59, 59, 59, 59, 52, 52, 11, 11, 5,
399
        5, 5, 5, 58, 58, 57, 57, 56, 12, 12,
400
        14, 14, 15, 10, 10, 13, 13, 17, 17, 16,
401
        16, 18, 18, 18, 18, 18, 18, 18, 18, 18,
402
        18, 19, 8, 8, 9, 46, 46, 46, 53, 53,
403
        54, 54, 54, 6, 6, 6, 6, 6, 6, 7,
404
        26, 26, 25, 25, 21, 21, 22, 22, 20, 20,
405
        20, 20, 23, 23, 24, 24, 27, 27, 27, 27,
406
        27, 27, 27, 27, 28, 29, 30, 30, 30, 31,
407
        31, 31, 32, 32, 33, 33, 34, 34, 35, 36,
408
        36, 39, 39, 43, 43, 40, 40, 44, 44, 45,
409
        45, 49, 49, 51, 51, 48, 48, 50, 50, 50,
410
        47, 47, 47, 37, 37, 37, 38, 38, 38, 38,
411
        38, 38, 38, 38, 41, 41, 41, 41, 55, 55,
412
        42, 42, 42, 42, 42, 42, 42, 42,
413
}
414

415
var yyR2 = [...]int8{
416
        0, 1, 2, 3, 0, 1, 1, 1, 1, 2,
417
        1, 1, 1, 4, 2, 3, 3, 12, 3, 8,
418
        9, 7, 5, 6, 6, 8, 6, 6, 7, 7,
419
        3, 0, 1, 1, 1, 0, 3, 1, 3, 9,
420
        8, 7, 8, 0, 4, 1, 3, 3, 0, 1,
421
        1, 3, 3, 1, 3, 1, 3, 0, 1, 1,
422
        3, 1, 1, 1, 1, 1, 6, 1, 1, 1,
423
        1, 4, 1, 3, 5, 0, 3, 3, 0, 1,
424
        0, 1, 2, 1, 4, 2, 2, 3, 2, 13,
425
        0, 1, 0, 1, 1, 1, 2, 4, 1, 2,
426
        4, 4, 2, 3, 1, 3, 3, 4, 4, 4,
427
        4, 4, 2, 6, 1, 2, 0, 2, 2, 0,
428
        2, 2, 2, 1, 0, 1, 1, 2, 6, 0,
429
        1, 0, 2, 0, 3, 0, 2, 0, 2, 0,
430
        2, 0, 3, 0, 4, 2, 4, 0, 1, 1,
431
        0, 1, 2, 0, 4, 6, 1, 1, 2, 2,
432
        4, 4, 6, 6, 1, 1, 3, 3, 0, 1,
433
        3, 3, 3, 3, 3, 3, 3, 4,
434
}
435

436
var yyChk = [...]int16{
437
        -1000, -1, -2, -3, -4, -5, -6, 36, 38, 39,
438
        4, 6, 5, 27, 40, 41, 44, 45, -7, 76,
439
        50, -60, 102, 37, 7, 23, 25, 24, 8, 85,
440
        7, 14, 23, 25, 8, 23, 8, 42, 42, 52,
441
        -28, 85, 64, 77, 78, 23, 79, -25, 51, -2,
442
        -52, 68, -52, -52, 25, 85, 85, -29, -30, 16,
443
        17, 85, 26, 85, 85, 85, 85, -28, -28, -28,
444
        46, -26, 65, 85, -21, 99, -22, -20, -24, 92,
445
        85, 85, 66, 85, 26, -52, 9, -31, 19, 18,
446
        -32, 20, -38, -41, -42, 66, 98, 69, -20, -18,
447
        103, 87, 88, 89, 90, 91, 74, -19, 80, 81,
448
        73, 85, -32, 85, 94, 28, 29, 5, 9, 103,
449
        103, -39, 55, -57, -56, 85, -6, 52, 96, -47,
450
        85, 63, -23, 95, 103, 94, 69, 103, 85, 26,
451
        10, -32, -32, -38, 97, 98, 100, 99, 83, 84,
452
        71, -55, 75, 66, -38, -38, 103, -38, 103, 103,
453
        103, 85, 31, 30, 31, 31, 32, 10, -12, -10,
454
        85, -10, -51, 6, -38, -39, 96, 84, -27, -28,
455
        103, 77, 78, 23, 79, -19, 85, -20, 85, 95,
456
        89, 99, -24, 85, -8, -9, 85, 103, 85, 89,
457
        -38, -38, -38, -38, -38, -38, 73, 66, 67, 70,
458
        86, -6, 104, -38, -17, -16, -38, -10, -9, 85,
459
        85, 85, 85, 89, 104, 96, 104, -44, 58, 25,
460
        -51, -56, -38, -51, -29, -6, 15, 103, 103, 103,
461
        103, -47, -47, 89, 104, 104, 96, 86, -10, 103,
462
        -59, 11, 12, 13, 73, -38, 103, 104, 63, 104,
463
        96, 104, 30, -59, 43, 85, 43, -45, 59, -38,
464
        26, -44, -33, -34, -35, -36, 82, -47, 104, 21,
465
        104, 104, 85, 104, -37, -9, 35, 32, -46, 105,
466
        103, 104, -10, -6, -16, 86, -38, 85, -14, -15,
467
        103, -14, -38, -11, 85, 103, -45, -39, -34, 53,
468
        -47, 85, -47, -47, 104, -47, 33, -38, 85, -54,
469
        73, 66, 87, 87, 104, 104, 104, 104, -58, 96,
470
        26, -17, -10, -43, 56, -27, 104, 34, 96, 35,
471
        -53, 72, 73, 106, 104, -15, 47, 104, 104, -40,
472
        54, 57, -51, -47, -11, -37, -38, 48, -49, 60,
473
        -38, -13, -24, 26, 104, 96, 49, -44, 57, 96,
474
        -38, -37, -45, -48, -20, -24, 96, -50, 61, 62,
475
        -20, -50,
476
}
477

478
var yyDef = [...]int16{
479
        0, -2, 1, 4, 6, 7, 8, 10, 11, 12,
480
        0, 0, 0, 0, 0, 0, 0, 0, 83, 0,
481
        92, 2, 5, 9, 35, 35, 35, 0, 0, 14,
482
        0, 116, 0, 0, 0, 0, 0, 0, 0, 0,
483
        0, 114, 90, 85, 86, 0, 88, 0, 93, 3,
484
        0, 0, 0, 0, 35, 0, 15, 16, 119, 0,
485
        0, 18, 0, 0, 30, 0, 0, 0, 0, 131,
486
        0, 0, 91, 87, 0, 94, 95, 150, 98, 0,
487
        104, 13, 0, 0, 0, 0, 0, 115, 0, 0,
488
        117, 0, 123, -2, 157, 0, 0, 0, 164, 165,
489
        0, 61, 62, 63, 64, 65, 0, 67, 68, 69,
490
        70, 104, 118, 0, 0, 0, 0, 0, 0, 48,
491
        0, 143, 0, 131, 45, 0, 84, 0, 0, 96,
492
        151, 0, 99, 0, 0, 0, 36, 0, 0, 0,
493
        0, 120, 121, 122, 0, 0, 0, 0, 0, 0,
494
        0, 0, 0, 169, 158, 159, 0, 0, 0, 57,
495
        0, 22, 0, 0, 0, 0, 0, 0, 0, 49,
496
        53, 0, 137, 0, 132, 143, 0, 0, 143, 116,
497
        0, 0, 0, 0, 0, 150, 114, 150, 152, 0,
498
        102, 0, 0, 105, 0, 72, 0, 0, 0, 31,
499
        170, 171, 172, 173, 174, 175, 176, 0, 0, 0,
500
        167, 0, 166, 0, 0, 58, 59, 0, 23, 24,
501
        0, 26, 27, 31, 0, 0, 0, 139, 0, 0,
502
        137, 46, 47, -2, 150, 0, 0, 0, 0, 0,
503
        0, 112, 97, 103, 100, 101, 153, 75, 0, 0,
504
        28, 32, 33, 34, 177, 160, 0, 161, 0, 71,
505
        0, 21, 0, 29, 0, 54, 0, 41, 0, 138,
506
        0, 139, 131, 125, -2, 0, 130, 106, 150, 0,
507
        150, 150, 0, 150, 0, 73, 0, 0, 80, 0,
508
        0, 19, 0, 0, 0, 0, 60, 25, 43, 50,
509
        57, 40, 140, 144, 37, 0, 42, 133, 127, 0,
510
        107, 0, 108, 109, 110, 111, 0, 0, 0, 78,
511
        81, 0, 0, 0, 20, 162, 163, 66, 39, 0,
512
        0, 0, 0, 135, 0, 143, 150, 0, 153, 0,
513
        74, 79, 82, 76, 77, 51, 0, 52, 38, 141,
514
        0, 0, 0, 113, 0, 154, 0, 0, 137, 0,
515
        136, 134, 55, 0, 17, 153, 44, 139, 0, 0,
516
        128, 155, 89, 142, 147, 56, 0, 145, 148, 149,
517
        147, 146,
518
}
519

520
var yyTok1 = [...]int8{
521
        1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
522
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
523
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
524
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
525
        103, 104, 99, 97, 96, 98, 101, 100, 3, 3,
526
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
527
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
528
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
529
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
530
        3, 105, 3, 106,
531
}
532

533
var yyTok2 = [...]int8{
534
        2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
535
        12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
536
        22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
537
        32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
538
        42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
539
        52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
540
        62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
541
        72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
542
        82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
543
        92, 93, 94, 95, 102,
544
}
545

546
var yyTok3 = [...]int8{
547
        0,
548
}
549

550
var yyErrorMessages = [...]struct {
551
        state int
552
        token int
553
        msg   string
554
}{}
555

556
/*        parser for yacc output        */
557

558
var (
559
        yyDebug        = 0
560
        yyErrorVerbose = false
561
)
562

563
type yyLexer interface {
564
        Lex(lval *yySymType) int
565
        Error(s string)
566
}
567

568
type yyParser interface {
569
        Parse(yyLexer) int
570
        Lookahead() int
571
}
572

573
type yyParserImpl struct {
574
        lval  yySymType
575
        stack [yyInitialStackSize]yySymType
576
        char  int
577
}
578

579
func (p *yyParserImpl) Lookahead() int {
×
580
        return p.char
×
581
}
×
582

583
func yyNewParser() yyParser {
3,048✔
584
        return &yyParserImpl{}
3,048✔
585
}
3,048✔
586

587
const yyFlag = -1000
588

589
func yyTokname(c int) string {
55✔
590
        if c >= 1 && c-1 < len(yyToknames) {
110✔
591
                if yyToknames[c-1] != "" {
110✔
592
                        return yyToknames[c-1]
55✔
593
                }
55✔
594
        }
595
        return __yyfmt__.Sprintf("tok-%v", c)
×
596
}
597

598
func yyStatname(s int) string {
×
599
        if s >= 0 && s < len(yyStatenames) {
×
600
                if yyStatenames[s] != "" {
×
601
                        return yyStatenames[s]
×
602
                }
×
603
        }
604
        return __yyfmt__.Sprintf("state-%v", s)
×
605
}
606

607
func yyErrorMessage(state, lookAhead int) string {
41✔
608
        const TOKSTART = 4
41✔
609

41✔
610
        if !yyErrorVerbose {
46✔
611
                return "syntax error"
5✔
612
        }
5✔
613

614
        for _, e := range yyErrorMessages {
36✔
615
                if e.state == state && e.token == lookAhead {
×
616
                        return "syntax error: " + e.msg
×
617
                }
×
618
        }
619

620
        res := "syntax error: unexpected " + yyTokname(lookAhead)
36✔
621

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

36✔
625
        // Look for shiftable tokens.
36✔
626
        base := int(yyPact[state])
36✔
627
        for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
2,770✔
628
                if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
2,843✔
629
                        if len(expected) == cap(expected) {
127✔
630
                                return res
18✔
631
                        }
18✔
632
                        expected = append(expected, tok)
91✔
633
                }
634
        }
635

636
        if yyDef[state] == -2 {
20✔
637
                i := 0
2✔
638
                for yyExca[i] != -1 || int(yyExca[i+1]) != state {
2✔
639
                        i += 2
×
640
                }
×
641

642
                // Look for tokens that we accept or reduce.
643
                for i += 2; yyExca[i] >= 0; i += 2 {
4✔
644
                        tok := int(yyExca[i])
2✔
645
                        if tok < TOKSTART || yyExca[i+1] == 0 {
4✔
646
                                continue
2✔
647
                        }
648
                        if len(expected) == cap(expected) {
×
649
                                return res
×
650
                        }
×
651
                        expected = append(expected, tok)
×
652
                }
653

654
                // If the default action is to accept or reduce, give up.
655
                if yyExca[i+1] != 0 {
2✔
656
                        return res
×
657
                }
×
658
        }
659

660
        for i, tok := range expected {
37✔
661
                if i == 0 {
35✔
662
                        res += ", expecting "
16✔
663
                } else {
19✔
664
                        res += " or "
3✔
665
                }
3✔
666
                res += yyTokname(tok)
19✔
667
        }
668
        return res
18✔
669
}
670

671
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
52,187✔
672
        token = 0
52,187✔
673
        char = lex.Lex(lval)
52,187✔
674
        if char <= 0 {
55,196✔
675
                token = int(yyTok1[0])
3,009✔
676
                goto out
3,009✔
677
        }
678
        if char < len(yyTok1) {
68,113✔
679
                token = int(yyTok1[char])
18,935✔
680
                goto out
18,935✔
681
        }
682
        if char >= yyPrivate {
60,486✔
683
                if char < yyPrivate+len(yyTok2) {
60,486✔
684
                        token = int(yyTok2[char-yyPrivate])
30,243✔
685
                        goto out
30,243✔
686
                }
687
        }
688
        for i := 0; i < len(yyTok3); i += 2 {
×
689
                token = int(yyTok3[i+0])
×
690
                if token == char {
×
691
                        token = int(yyTok3[i+1])
×
692
                        goto out
×
693
                }
694
        }
695

696
out:
697
        if token == 0 {
52,187✔
698
                token = int(yyTok2[1]) /* unknown char */
×
699
        }
×
700
        if yyDebug >= 3 {
52,187✔
701
                __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
×
702
        }
×
703
        return char, token
52,187✔
704
}
705

706
func yyParse(yylex yyLexer) int {
3,048✔
707
        return yyNewParser().Parse(yylex)
3,048✔
708
}
3,048✔
709

710
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
3,048✔
711
        var yyn int
3,048✔
712
        var yyVAL yySymType
3,048✔
713
        var yyDollar []yySymType
3,048✔
714
        _ = yyDollar // silence set and not used
3,048✔
715
        yyS := yyrcvr.stack[:]
3,048✔
716

3,048✔
717
        Nerrs := 0   /* number of errors */
3,048✔
718
        Errflag := 0 /* error recovery flag */
3,048✔
719
        yystate := 0
3,048✔
720
        yyrcvr.char = -1
3,048✔
721
        yytoken := -1 // yyrcvr.char translated into internal numbering
3,048✔
722
        defer func() {
6,096✔
723
                // Make sure we report no lookahead when not parsing.
3,048✔
724
                yystate = -1
3,048✔
725
                yyrcvr.char = -1
3,048✔
726
                yytoken = -1
3,048✔
727
        }()
3,048✔
728
        yyp := -1
3,048✔
729
        goto yystack
3,048✔
730

731
ret0:
732
        return 0
3,007✔
733

3,007✔
734
ret1:
3,007✔
735
        return 1
41✔
736

41✔
737
yystack:
41✔
738
        /* put a state and value onto the stack */
739
        if yyDebug >= 4 {
133,089✔
740
                __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
×
741
        }
×
742

743
        yyp++
133,089✔
744
        if yyp >= len(yyS) {
133,174✔
745
                nyys := make([]yySymType, len(yyS)*2)
85✔
746
                copy(nyys, yyS)
85✔
747
                yyS = nyys
85✔
748
        }
85✔
749
        yyS[yyp] = yyVAL
133,089✔
750
        yyS[yyp].yys = yystate
133,089✔
751

133,089✔
752
yynewstate:
133,089✔
753
        yyn = int(yyPact[yystate])
133,089✔
754
        if yyn <= yyFlag {
179,520✔
755
                goto yydefault /* simple state */
46,431✔
756
        }
757
        if yyrcvr.char < 0 {
138,845✔
758
                yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
52,187✔
759
        }
52,187✔
760
        yyn += yytoken
86,658✔
761
        if yyn < 0 || yyn >= yyLast {
87,495✔
762
                goto yydefault
837✔
763
        }
764
        yyn = int(yyAct[yyn])
85,821✔
765
        if int(yyChk[yyn]) == yytoken { /* valid shift */
134,960✔
766
                yyrcvr.char = -1
49,139✔
767
                yytoken = -1
49,139✔
768
                yyVAL = yyrcvr.lval
49,139✔
769
                yystate = yyn
49,139✔
770
                if Errflag > 0 {
49,139✔
771
                        Errflag--
×
772
                }
×
773
                goto yystack
49,139✔
774
        }
775

776
yydefault:
777
        /* default state action */
778
        yyn = int(yyDef[yystate])
83,950✔
779
        if yyn == -2 {
94,996✔
780
                if yyrcvr.char < 0 {
11,046✔
781
                        yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
×
782
                }
×
783

784
                /* look through exception table */
785
                xi := 0
11,046✔
786
                for {
48,769✔
787
                        if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
48,769✔
788
                                break
11,046✔
789
                        }
790
                        xi += 2
26,677✔
791
                }
792
                for xi += 2; ; xi += 2 {
37,463✔
793
                        yyn = int(yyExca[xi+0])
26,417✔
794
                        if yyn < 0 || yyn == yytoken {
37,463✔
795
                                break
11,046✔
796
                        }
797
                }
798
                yyn = int(yyExca[xi+1])
11,046✔
799
                if yyn < 0 {
14,053✔
800
                        goto ret0
3,007✔
801
                }
802
        }
803
        if yyn == 0 {
80,984✔
804
                /* error ... attempt to resume parsing */
41✔
805
                switch Errflag {
41✔
806
                case 0: /* brand new error */
41✔
807
                        yylex.Error(yyErrorMessage(yystate, yytoken))
41✔
808
                        Nerrs++
41✔
809
                        if yyDebug >= 1 {
41✔
810
                                __yyfmt__.Printf("%s", yyStatname(yystate))
×
811
                                __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
×
812
                        }
×
813
                        fallthrough
41✔
814

815
                case 1, 2: /* incompletely recovered error ... try again */
41✔
816
                        Errflag = 3
41✔
817

41✔
818
                        /* find a state where "error" is a legal shift action */
41✔
819
                        for yyp >= 0 {
261✔
820
                                yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
220✔
821
                                if yyn >= 0 && yyn < yyLast {
402✔
822
                                        yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
182✔
823
                                        if int(yyChk[yystate]) == yyErrCode {
182✔
824
                                                goto yystack
×
825
                                        }
826
                                }
827

828
                                /* the current p has no shift on "error", pop stack */
829
                                if yyDebug >= 2 {
220✔
830
                                        __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
×
831
                                }
×
832
                                yyp--
220✔
833
                        }
834
                        /* there is no state on the stack with an error shift ... abort */
835
                        goto ret1
41✔
836

837
                case 3: /* no shift yet; clobber input char */
×
838
                        if yyDebug >= 2 {
×
839
                                __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
×
840
                        }
×
841
                        if yytoken == yyEofCode {
×
842
                                goto ret1
×
843
                        }
844
                        yyrcvr.char = -1
×
845
                        yytoken = -1
×
846
                        goto yynewstate /* try again in the same state */
×
847
                }
848
        }
849

850
        /* reduction by production yyn */
851
        if yyDebug >= 2 {
80,902✔
852
                __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
×
853
        }
×
854

855
        yynt := yyn
80,902✔
856
        yypt := yyp
80,902✔
857
        _ = yypt // guard against "declared and not used"
80,902✔
858

80,902✔
859
        yyp -= int(yyR2[yyn])
80,902✔
860
        // yyp is now the index of $0. Perform the default action. Iff the
80,902✔
861
        // reduced production is ε, $1 is possibly out of range.
80,902✔
862
        if yyp+1 >= len(yyS) {
80,924✔
863
                nyys := make([]yySymType, len(yyS)*2)
22✔
864
                copy(nyys, yyS)
22✔
865
                yyS = nyys
22✔
866
        }
22✔
867
        yyVAL = yyS[yyp+1]
80,902✔
868

80,902✔
869
        /* consult goto table to find next state */
80,902✔
870
        yyn = int(yyR1[yyn])
80,902✔
871
        yyg := int(yyPgo[yyn])
80,902✔
872
        yyj := yyg + yyS[yyp].yys + 1
80,902✔
873

80,902✔
874
        if yyj >= yyLast {
111,150✔
875
                yystate = int(yyAct[yyg])
30,248✔
876
        } else {
80,902✔
877
                yystate = int(yyAct[yyj])
50,654✔
878
                if int(yyChk[yystate]) != -yyn {
81,845✔
879
                        yystate = int(yyAct[yyg])
31,191✔
880
                }
31,191✔
881
        }
882
        // dummy call; replaced with literal code
883
        switch yynt {
80,902✔
884

885
        case 1:
3,009✔
886
                yyDollar = yyS[yypt-1 : yypt+1]
3,009✔
887
                {
6,018✔
888
                        yyVAL.stmts = yyDollar[1].stmts
3,009✔
889
                        setResult(yylex, yyDollar[1].stmts)
3,009✔
890
                }
3,009✔
891
        case 2:
3,009✔
892
                yyDollar = yyS[yypt-2 : yypt+1]
3,009✔
893
                {
6,018✔
894
                        yyVAL.stmts = []SQLStmt{yyDollar[1].stmt}
3,009✔
895
                }
3,009✔
896
        case 3:
93✔
897
                yyDollar = yyS[yypt-3 : yypt+1]
93✔
898
                {
186✔
899
                        yyVAL.stmts = append([]SQLStmt{yyDollar[1].stmt}, yyDollar[3].stmts...)
93✔
900
                }
93✔
901
        case 4:
2,707✔
902
                yyDollar = yyS[yypt-0 : yypt+1]
2,707✔
903
                {
5,414✔
904
                }
2,707✔
905
        case 9:
68✔
906
                yyDollar = yyS[yypt-2 : yypt+1]
68✔
907
                {
136✔
908
                        yyVAL.stmt = &BeginTransactionStmt{}
68✔
909
                }
68✔
910
        case 10:
1✔
911
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
912
                {
2✔
913
                        yyVAL.stmt = &BeginTransactionStmt{}
1✔
914
                }
1✔
915
        case 11:
173✔
916
                yyDollar = yyS[yypt-1 : yypt+1]
173✔
917
                {
346✔
918
                        yyVAL.stmt = &CommitStmt{}
173✔
919
                }
173✔
920
        case 12:
6✔
921
                yyDollar = yyS[yypt-1 : yypt+1]
6✔
922
                {
12✔
923
                        yyVAL.stmt = &RollbackStmt{}
6✔
924
                }
6✔
925
        case 13:
23✔
926
                yyDollar = yyS[yypt-4 : yypt+1]
23✔
927
                {
46✔
928
                        yyVAL.stmt = &CreateDatabaseStmt{ifNotExists: yyDollar[3].boolean, DB: yyDollar[4].id}
23✔
929
                }
23✔
930
        case 14:
3✔
931
                yyDollar = yyS[yypt-2 : yypt+1]
3✔
932
                {
6✔
933
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[2].id}
3✔
934
                }
3✔
935
        case 15:
14✔
936
                yyDollar = yyS[yypt-3 : yypt+1]
14✔
937
                {
28✔
938
                        yyVAL.stmt = &UseDatabaseStmt{DB: yyDollar[3].id}
14✔
939
                }
14✔
940
        case 16:
9✔
941
                yyDollar = yyS[yypt-3 : yypt+1]
9✔
942
                {
18✔
943
                        yyVAL.stmt = &UseSnapshotStmt{period: yyDollar[3].period}
9✔
944
                }
9✔
945
        case 17:
202✔
946
                yyDollar = yyS[yypt-12 : yypt+1]
202✔
947
                {
404✔
948
                        yyVAL.stmt = &CreateTableStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[4].id, colsSpec: yyDollar[6].colsSpec, checks: yyDollar[8].checks, pkColNames: yyDollar[11].ids}
202✔
949
                }
202✔
950
        case 18:
2✔
951
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
952
                {
4✔
953
                        yyVAL.stmt = &DropTableStmt{table: yyDollar[3].id}
2✔
954
                }
2✔
955
        case 19:
62✔
956
                yyDollar = yyS[yypt-8 : yypt+1]
62✔
957
                {
124✔
958
                        yyVAL.stmt = &CreateIndexStmt{ifNotExists: yyDollar[3].boolean, table: yyDollar[5].id, cols: yyDollar[7].ids}
62✔
959
                }
62✔
960
        case 20:
21✔
961
                yyDollar = yyS[yypt-9 : yypt+1]
21✔
962
                {
42✔
963
                        yyVAL.stmt = &CreateIndexStmt{unique: true, ifNotExists: yyDollar[4].boolean, table: yyDollar[6].id, cols: yyDollar[8].ids}
21✔
964
                }
21✔
965
        case 21:
3✔
966
                yyDollar = yyS[yypt-7 : yypt+1]
3✔
967
                {
6✔
968
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[4].id, cols: yyDollar[6].ids}
3✔
969
                }
3✔
970
        case 22:
×
971
                yyDollar = yyS[yypt-5 : yypt+1]
×
972
                {
×
973
                        yyVAL.stmt = &DropIndexStmt{table: yyDollar[3].id, cols: []string{yyDollar[5].id}}
×
974
                }
×
975
        case 23:
16✔
976
                yyDollar = yyS[yypt-6 : yypt+1]
16✔
977
                {
32✔
978
                        yyVAL.stmt = &AddColumnStmt{table: yyDollar[3].id, colSpec: yyDollar[6].colSpec}
16✔
979
                }
16✔
980
        case 24:
6✔
981
                yyDollar = yyS[yypt-6 : yypt+1]
6✔
982
                {
12✔
983
                        yyVAL.stmt = &RenameTableStmt{oldName: yyDollar[3].id, newName: yyDollar[6].id}
6✔
984
                }
6✔
985
        case 25:
9✔
986
                yyDollar = yyS[yypt-8 : yypt+1]
9✔
987
                {
18✔
988
                        yyVAL.stmt = &RenameColumnStmt{table: yyDollar[3].id, oldName: yyDollar[6].id, newName: yyDollar[8].id}
9✔
989
                }
9✔
990
        case 26:
11✔
991
                yyDollar = yyS[yypt-6 : yypt+1]
11✔
992
                {
22✔
993
                        yyVAL.stmt = &DropColumnStmt{table: yyDollar[3].id, colName: yyDollar[6].id}
11✔
994
                }
11✔
995
        case 27:
4✔
996
                yyDollar = yyS[yypt-6 : yypt+1]
4✔
997
                {
8✔
998
                        yyVAL.stmt = &DropConstraintStmt{table: yyDollar[3].id, constraintName: yyDollar[6].id}
4✔
999
                }
4✔
1000
        case 28:
6✔
1001
                yyDollar = yyS[yypt-7 : yypt+1]
6✔
1002
                {
12✔
1003
                        yyVAL.stmt = &CreateUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
6✔
1004
                }
6✔
1005
        case 29:
5✔
1006
                yyDollar = yyS[yypt-7 : yypt+1]
5✔
1007
                {
10✔
1008
                        yyVAL.stmt = &AlterUserStmt{username: yyDollar[3].id, password: yyDollar[6].str, permission: yyDollar[7].permission}
5✔
1009
                }
5✔
1010
        case 30:
3✔
1011
                yyDollar = yyS[yypt-3 : yypt+1]
3✔
1012
                {
6✔
1013
                        yyVAL.stmt = &DropUserStmt{username: yyDollar[3].id}
3✔
1014
                }
3✔
NEW
1015
        case 31:
×
1016
                yyDollar = yyS[yypt-0 : yypt+1]
×
1017
                {
×
1018
                        yyVAL.permission = PermissionReadWrite
×
1019
                }
×
1020
        case 32:
5✔
1021
                yyDollar = yyS[yypt-1 : yypt+1]
5✔
1022
                {
10✔
1023
                        yyVAL.permission = PermissionReadOnly
5✔
1024
                }
5✔
1025
        case 33:
4✔
1026
                yyDollar = yyS[yypt-1 : yypt+1]
4✔
1027
                {
8✔
1028
                        yyVAL.permission = PermissionReadWrite
4✔
1029
                }
4✔
1030
        case 34:
2✔
1031
                yyDollar = yyS[yypt-1 : yypt+1]
2✔
1032
                {
4✔
1033
                        yyVAL.permission = PermissionAdmin
2✔
1034
                }
2✔
1035
        case 35:
287✔
1036
                yyDollar = yyS[yypt-0 : yypt+1]
287✔
1037
                {
574✔
1038
                        yyVAL.boolean = false
287✔
1039
                }
287✔
1040
        case 36:
25✔
1041
                yyDollar = yyS[yypt-3 : yypt+1]
25✔
1042
                {
50✔
1043
                        yyVAL.boolean = true
25✔
1044
                }
25✔
1045
        case 37:
161✔
1046
                yyDollar = yyS[yypt-1 : yypt+1]
161✔
1047
                {
322✔
1048
                        yyVAL.ids = []string{yyDollar[1].id}
161✔
1049
                }
161✔
1050
        case 38:
71✔
1051
                yyDollar = yyS[yypt-3 : yypt+1]
71✔
1052
                {
142✔
1053
                        yyVAL.ids = yyDollar[2].ids
71✔
1054
                }
71✔
1055
        case 39:
1,605✔
1056
                yyDollar = yyS[yypt-9 : yypt+1]
1,605✔
1057
                {
3,210✔
1058
                        yyVAL.stmt = &UpsertIntoStmt{isInsert: true, tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows, onConflict: yyDollar[9].onConflict}
1,605✔
1059
                }
1,605✔
1060
        case 40:
203✔
1061
                yyDollar = yyS[yypt-8 : yypt+1]
203✔
1062
                {
406✔
1063
                        yyVAL.stmt = &UpsertIntoStmt{tableRef: yyDollar[3].tableRef, cols: yyDollar[5].ids, rows: yyDollar[8].rows}
203✔
1064
                }
203✔
1065
        case 41:
12✔
1066
                yyDollar = yyS[yypt-7 : yypt+1]
12✔
1067
                {
24✔
1068
                        yyVAL.stmt = &DeleteFromStmt{tableRef: yyDollar[3].tableRef, where: yyDollar[4].exp, indexOn: yyDollar[5].ids, limit: yyDollar[6].exp, offset: yyDollar[7].exp}
12✔
1069
                }
12✔
1070
        case 42:
24✔
1071
                yyDollar = yyS[yypt-8 : yypt+1]
24✔
1072
                {
48✔
1073
                        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✔
1074
                }
24✔
1075
        case 43:
1,602✔
1076
                yyDollar = yyS[yypt-0 : yypt+1]
1,602✔
1077
                {
3,204✔
1078
                        yyVAL.onConflict = nil
1,602✔
1079
                }
1,602✔
1080
        case 44:
3✔
1081
                yyDollar = yyS[yypt-4 : yypt+1]
3✔
1082
                {
6✔
1083
                        yyVAL.onConflict = &OnConflictDo{}
3✔
1084
                }
3✔
1085
        case 45:
24✔
1086
                yyDollar = yyS[yypt-1 : yypt+1]
24✔
1087
                {
48✔
1088
                        yyVAL.updates = []*colUpdate{yyDollar[1].update}
24✔
1089
                }
24✔
1090
        case 46:
2✔
1091
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1092
                {
4✔
1093
                        yyVAL.updates = append(yyDollar[1].updates, yyDollar[3].update)
2✔
1094
                }
2✔
1095
        case 47:
26✔
1096
                yyDollar = yyS[yypt-3 : yypt+1]
26✔
1097
                {
52✔
1098
                        yyVAL.update = &colUpdate{col: yyDollar[1].id, op: yyDollar[2].cmpOp, val: yyDollar[3].exp}
26✔
1099
                }
26✔
1100
        case 48:
1✔
1101
                yyDollar = yyS[yypt-0 : yypt+1]
1✔
1102
                {
2✔
1103
                        yyVAL.ids = nil
1✔
1104
                }
1✔
1105
        case 49:
1,610✔
1106
                yyDollar = yyS[yypt-1 : yypt+1]
1,610✔
1107
                {
3,220✔
1108
                        yyVAL.ids = yyDollar[1].ids
1,610✔
1109
                }
1,610✔
1110
        case 50:
1,808✔
1111
                yyDollar = yyS[yypt-1 : yypt+1]
1,808✔
1112
                {
3,616✔
1113
                        yyVAL.rows = []*RowSpec{yyDollar[1].row}
1,808✔
1114
                }
1,808✔
1115
        case 51:
82✔
1116
                yyDollar = yyS[yypt-3 : yypt+1]
82✔
1117
                {
164✔
1118
                        yyVAL.rows = append(yyDollar[1].rows, yyDollar[3].row)
82✔
1119
                }
82✔
1120
        case 52:
1,890✔
1121
                yyDollar = yyS[yypt-3 : yypt+1]
1,890✔
1122
                {
3,780✔
1123
                        yyVAL.row = &RowSpec{Values: yyDollar[2].values}
1,890✔
1124
                }
1,890✔
1125
        case 53:
1,978✔
1126
                yyDollar = yyS[yypt-1 : yypt+1]
1,978✔
1127
                {
3,956✔
1128
                        yyVAL.ids = []string{yyDollar[1].id}
1,978✔
1129
                }
1,978✔
1130
        case 54:
4,002✔
1131
                yyDollar = yyS[yypt-3 : yypt+1]
4,002✔
1132
                {
8,004✔
1133
                        yyVAL.ids = append(yyDollar[1].ids, yyDollar[3].id)
4,002✔
1134
                }
4,002✔
1135
        case 55:
33✔
1136
                yyDollar = yyS[yypt-1 : yypt+1]
33✔
1137
                {
66✔
1138
                        yyVAL.cols = []*ColSelector{yyDollar[1].col}
33✔
1139
                }
33✔
1140
        case 56:
18✔
1141
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1142
                {
36✔
1143
                        yyVAL.cols = append(yyDollar[1].cols, yyDollar[3].col)
18✔
1144
                }
18✔
1145
        case 57:
126✔
1146
                yyDollar = yyS[yypt-0 : yypt+1]
126✔
1147
                {
252✔
1148
                        yyVAL.values = nil
126✔
1149
                }
126✔
1150
        case 58:
1,905✔
1151
                yyDollar = yyS[yypt-1 : yypt+1]
1,905✔
1152
                {
3,810✔
1153
                        yyVAL.values = yyDollar[1].values
1,905✔
1154
                }
1,905✔
1155
        case 59:
1,926✔
1156
                yyDollar = yyS[yypt-1 : yypt+1]
1,926✔
1157
                {
3,852✔
1158
                        yyVAL.values = []ValueExp{yyDollar[1].exp}
1,926✔
1159
                }
1,926✔
1160
        case 60:
4,035✔
1161
                yyDollar = yyS[yypt-3 : yypt+1]
4,035✔
1162
                {
8,070✔
1163
                        yyVAL.values = append(yyDollar[1].values, yyDollar[3].exp)
4,035✔
1164
                }
4,035✔
1165
        case 61:
772✔
1166
                yyDollar = yyS[yypt-1 : yypt+1]
772✔
1167
                {
1,544✔
1168
                        yyVAL.value = &Integer{val: int64(yyDollar[1].integer)}
772✔
1169
                }
772✔
1170
        case 62:
45✔
1171
                yyDollar = yyS[yypt-1 : yypt+1]
45✔
1172
                {
90✔
1173
                        yyVAL.value = &Float64{val: float64(yyDollar[1].float)}
45✔
1174
                }
45✔
1175
        case 63:
514✔
1176
                yyDollar = yyS[yypt-1 : yypt+1]
514✔
1177
                {
1,028✔
1178
                        yyVAL.value = &Varchar{val: yyDollar[1].str}
514✔
1179
                }
514✔
1180
        case 64:
190✔
1181
                yyDollar = yyS[yypt-1 : yypt+1]
190✔
1182
                {
380✔
1183
                        yyVAL.value = &Bool{val: yyDollar[1].boolean}
190✔
1184
                }
190✔
1185
        case 65:
94✔
1186
                yyDollar = yyS[yypt-1 : yypt+1]
94✔
1187
                {
188✔
1188
                        yyVAL.value = &Blob{val: yyDollar[1].blob}
94✔
1189
                }
94✔
1190
        case 66:
59✔
1191
                yyDollar = yyS[yypt-6 : yypt+1]
59✔
1192
                {
118✔
1193
                        yyVAL.value = &Cast{val: yyDollar[3].exp, t: yyDollar[5].sqlType}
59✔
1194
                }
59✔
1195
        case 67:
128✔
1196
                yyDollar = yyS[yypt-1 : yypt+1]
128✔
1197
                {
256✔
1198
                        yyVAL.value = yyDollar[1].value
128✔
1199
                }
128✔
1200
        case 68:
4,605✔
1201
                yyDollar = yyS[yypt-1 : yypt+1]
4,605✔
1202
                {
9,210✔
1203
                        yyVAL.value = &Param{id: yyDollar[1].id}
4,605✔
1204
                }
4,605✔
1205
        case 69:
175✔
1206
                yyDollar = yyS[yypt-1 : yypt+1]
175✔
1207
                {
350✔
1208
                        yyVAL.value = &Param{id: fmt.Sprintf("param%d", yyDollar[1].pparam), pos: yyDollar[1].pparam}
175✔
1209
                }
175✔
1210
        case 70:
83✔
1211
                yyDollar = yyS[yypt-1 : yypt+1]
83✔
1212
                {
166✔
1213
                        yyVAL.value = &NullValue{t: AnyType}
83✔
1214
                }
83✔
1215
        case 71:
134✔
1216
                yyDollar = yyS[yypt-4 : yypt+1]
134✔
1217
                {
268✔
1218
                        yyVAL.value = &FnCall{fn: yyDollar[1].id, params: yyDollar[3].values}
134✔
1219
                }
134✔
1220
        case 72:
202✔
1221
                yyDollar = yyS[yypt-1 : yypt+1]
202✔
1222
                {
404✔
1223
                        yyVAL.colsSpec = []*ColSpec{yyDollar[1].colSpec}
202✔
1224
                }
202✔
1225
        case 73:
352✔
1226
                yyDollar = yyS[yypt-3 : yypt+1]
352✔
1227
                {
704✔
1228
                        yyVAL.colsSpec = append(yyDollar[1].colsSpec, yyDollar[3].colSpec)
352✔
1229
                }
352✔
1230
        case 74:
570✔
1231
                yyDollar = yyS[yypt-5 : yypt+1]
570✔
1232
                {
1,140✔
1233
                        yyVAL.colSpec = &ColSpec{colName: yyDollar[1].id, colType: yyDollar[2].sqlType, maxLen: int(yyDollar[3].integer), notNull: yyDollar[4].boolean, autoIncrement: yyDollar[5].boolean}
570✔
1234
                }
570✔
1235
        case 75:
515✔
1236
                yyDollar = yyS[yypt-0 : yypt+1]
515✔
1237
                {
1,030✔
1238
                        yyVAL.integer = 0
515✔
1239
                }
515✔
1240
        case 76:
54✔
1241
                yyDollar = yyS[yypt-3 : yypt+1]
54✔
1242
                {
108✔
1243
                        yyVAL.integer = yyDollar[2].integer
54✔
1244
                }
54✔
1245
        case 77:
1✔
1246
                yyDollar = yyS[yypt-3 : yypt+1]
1✔
1247
                {
2✔
1248
                        yyVAL.integer = yyDollar[2].integer
1✔
1249
                }
1✔
1250
        case 78:
489✔
1251
                yyDollar = yyS[yypt-0 : yypt+1]
489✔
1252
                {
978✔
1253
                        yyVAL.boolean = false
489✔
1254
                }
489✔
1255
        case 79:
81✔
1256
                yyDollar = yyS[yypt-1 : yypt+1]
81✔
1257
                {
162✔
1258
                        yyVAL.boolean = true
81✔
1259
                }
81✔
1260
        case 80:
560✔
1261
                yyDollar = yyS[yypt-0 : yypt+1]
560✔
1262
                {
1,120✔
1263
                        yyVAL.boolean = false
560✔
1264
                }
560✔
1265
        case 81:
1✔
1266
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1267
                {
2✔
1268
                        yyVAL.boolean = false
1✔
1269
                }
1✔
1270
        case 82:
9✔
1271
                yyDollar = yyS[yypt-2 : yypt+1]
9✔
1272
                {
18✔
1273
                        yyVAL.boolean = true
9✔
1274
                }
9✔
1275
        case 83:
617✔
1276
                yyDollar = yyS[yypt-1 : yypt+1]
617✔
1277
                {
1,234✔
1278
                        yyVAL.stmt = yyDollar[1].stmt
617✔
1279
                }
617✔
1280
        case 84:
11✔
1281
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1282
                {
22✔
1283
                        yyVAL.stmt = &UnionStmt{
11✔
1284
                                distinct: yyDollar[3].distinct,
11✔
1285
                                left:     yyDollar[1].stmt.(DataSource),
11✔
1286
                                right:    yyDollar[4].stmt.(DataSource),
11✔
1287
                        }
11✔
1288
                }
11✔
1289
        case 85:
1✔
1290
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1291
                {
2✔
1292
                        yyVAL.stmt = &SelectStmt{
1✔
1293
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}},
1✔
1294
                        }
1✔
1295
                }
1✔
1296
        case 86:
1✔
1297
                yyDollar = yyS[yypt-2 : yypt+1]
1✔
1298
                {
2✔
1299
                        yyVAL.stmt = &SelectStmt{
1✔
1300
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}},
1✔
1301
                        }
1✔
1302
                }
1✔
NEW
1303
        case 87:
×
1304
                yyDollar = yyS[yypt-3 : yypt+1]
×
1305
                {
×
1306
                        yyVAL.stmt = &SelectStmt{
×
1307
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}},
×
1308
                        }
×
1309
                }
×
1310
        case 88:
6✔
1311
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1312
                {
12✔
1313
                        yyVAL.stmt = &SelectStmt{
6✔
1314
                                ds: &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}},
6✔
1315
                        }
6✔
1316
                }
6✔
1317
        case 89:
629✔
1318
                yyDollar = yyS[yypt-13 : yypt+1]
629✔
1319
                {
1,258✔
1320
                        yyVAL.stmt = &SelectStmt{
629✔
1321
                                distinct:  yyDollar[2].distinct,
629✔
1322
                                selectors: yyDollar[3].sels,
629✔
1323
                                ds:        yyDollar[5].ds,
629✔
1324
                                indexOn:   yyDollar[6].ids,
629✔
1325
                                joins:     yyDollar[7].joins,
629✔
1326
                                where:     yyDollar[8].exp,
629✔
1327
                                groupBy:   yyDollar[9].cols,
629✔
1328
                                having:    yyDollar[10].exp,
629✔
1329
                                orderBy:   yyDollar[11].ordcols,
629✔
1330
                                limit:     yyDollar[12].exp,
629✔
1331
                                offset:    yyDollar[13].exp,
629✔
1332
                        }
629✔
1333
                }
629✔
1334
        case 90:
11✔
1335
                yyDollar = yyS[yypt-0 : yypt+1]
11✔
1336
                {
22✔
1337
                        yyVAL.distinct = true
11✔
1338
                }
11✔
1339
        case 91:
1✔
1340
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1341
                {
2✔
1342
                        yyVAL.distinct = false
1✔
1343
                }
1✔
1344
        case 92:
623✔
1345
                yyDollar = yyS[yypt-0 : yypt+1]
623✔
1346
                {
1,246✔
1347
                        yyVAL.distinct = false
623✔
1348
                }
623✔
1349
        case 93:
8✔
1350
                yyDollar = yyS[yypt-1 : yypt+1]
8✔
1351
                {
16✔
1352
                        yyVAL.distinct = true
8✔
1353
                }
8✔
1354
        case 94:
250✔
1355
                yyDollar = yyS[yypt-1 : yypt+1]
250✔
1356
                {
500✔
1357
                        yyVAL.sels = nil
250✔
1358
                }
250✔
1359
        case 95:
381✔
1360
                yyDollar = yyS[yypt-1 : yypt+1]
381✔
1361
                {
762✔
1362
                        yyVAL.sels = yyDollar[1].sels
381✔
1363
                }
381✔
1364
        case 96:
381✔
1365
                yyDollar = yyS[yypt-2 : yypt+1]
381✔
1366
                {
762✔
1367
                        yyDollar[1].sel.setAlias(yyDollar[2].id)
381✔
1368
                        yyVAL.sels = []Selector{yyDollar[1].sel}
381✔
1369
                }
381✔
1370
        case 97:
423✔
1371
                yyDollar = yyS[yypt-4 : yypt+1]
423✔
1372
                {
846✔
1373
                        yyDollar[3].sel.setAlias(yyDollar[4].id)
423✔
1374
                        yyVAL.sels = append(yyDollar[1].sels, yyDollar[3].sel)
423✔
1375
                }
423✔
1376
        case 98:
1,354✔
1377
                yyDollar = yyS[yypt-1 : yypt+1]
1,354✔
1378
                {
2,708✔
1379
                        yyVAL.sel = yyDollar[1].col
1,354✔
1380
                }
1,354✔
1381
        case 99:
31✔
1382
                yyDollar = yyS[yypt-2 : yypt+1]
31✔
1383
                {
62✔
1384
                        yyVAL.sel = &JSONSelector{ColSelector: yyDollar[1].col, fields: yyDollar[2].jsonFields}
31✔
1385
                }
31✔
1386
        case 100:
66✔
1387
                yyDollar = yyS[yypt-4 : yypt+1]
66✔
1388
                {
132✔
1389
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, col: "*"}
66✔
1390
                }
66✔
1391
        case 101:
67✔
1392
                yyDollar = yyS[yypt-4 : yypt+1]
67✔
1393
                {
134✔
1394
                        yyVAL.sel = &AggColSelector{aggFn: yyDollar[1].aggFn, table: yyDollar[3].col.table, col: yyDollar[3].col.col}
67✔
1395
                }
67✔
1396
        case 102:
31✔
1397
                yyDollar = yyS[yypt-2 : yypt+1]
31✔
1398
                {
62✔
1399
                        yyVAL.jsonFields = []string{yyDollar[2].str}
31✔
1400
                }
31✔
1401
        case 103:
19✔
1402
                yyDollar = yyS[yypt-3 : yypt+1]
19✔
1403
                {
38✔
1404
                        yyVAL.jsonFields = append(yyVAL.jsonFields, yyDollar[3].str)
19✔
1405
                }
19✔
1406
        case 104:
1,403✔
1407
                yyDollar = yyS[yypt-1 : yypt+1]
1,403✔
1408
                {
2,806✔
1409
                        yyVAL.col = &ColSelector{col: yyDollar[1].id}
1,403✔
1410
                }
1,403✔
1411
        case 105:
100✔
1412
                yyDollar = yyS[yypt-3 : yypt+1]
100✔
1413
                {
200✔
1414
                        yyVAL.col = &ColSelector{table: yyDollar[1].id, col: yyDollar[3].id}
100✔
1415
                }
100✔
1416
        case 106:
620✔
1417
                yyDollar = yyS[yypt-3 : yypt+1]
620✔
1418
                {
1,240✔
1419
                        yyDollar[1].tableRef.period = yyDollar[2].period
620✔
1420
                        yyDollar[1].tableRef.as = yyDollar[3].id
620✔
1421
                        yyVAL.ds = yyDollar[1].tableRef
620✔
1422
                }
620✔
1423
        case 107:
11✔
1424
                yyDollar = yyS[yypt-4 : yypt+1]
11✔
1425
                {
22✔
1426
                        yyDollar[2].stmt.(*SelectStmt).as = yyDollar[4].id
11✔
1427
                        yyVAL.ds = yyDollar[2].stmt.(DataSource)
11✔
1428
                }
11✔
1429
        case 108:
4✔
1430
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1431
                {
8✔
1432
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "databases"}, as: yyDollar[4].id}
4✔
1433
                }
4✔
1434
        case 109:
4✔
1435
                yyDollar = yyS[yypt-4 : yypt+1]
4✔
1436
                {
8✔
1437
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "tables"}, as: yyDollar[4].id}
4✔
1438
                }
4✔
NEW
1439
        case 110:
×
1440
                yyDollar = yyS[yypt-4 : yypt+1]
×
1441
                {
×
1442
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "table", params: []ValueExp{&Varchar{val: yyDollar[3].id}}}}
×
1443
                }
×
1444
        case 111:
1✔
1445
                yyDollar = yyS[yypt-4 : yypt+1]
1✔
1446
                {
2✔
1447
                        yyVAL.ds = &FnDataSourceStmt{fnCall: &FnCall{fn: "users"}, as: yyDollar[4].id}
1✔
1448
                }
1✔
1449
        case 112:
6✔
1450
                yyDollar = yyS[yypt-2 : yypt+1]
6✔
1451
                {
12✔
1452
                        yyVAL.ds = &FnDataSourceStmt{fnCall: yyDollar[1].value.(*FnCall), as: yyDollar[2].id}
6✔
1453
                }
6✔
1454
        case 113:
2✔
1455
                yyDollar = yyS[yypt-6 : yypt+1]
2✔
1456
                {
4✔
1457
                        yyVAL.ds = &tableRef{table: yyDollar[4].id, history: true, as: yyDollar[6].id}
2✔
1458
                }
2✔
1459
        case 114:
2,479✔
1460
                yyDollar = yyS[yypt-1 : yypt+1]
2,479✔
1461
                {
4,958✔
1462
                        yyVAL.tableRef = &tableRef{table: yyDollar[1].id}
2,479✔
1463
                }
2,479✔
1464
        case 115:
629✔
1465
                yyDollar = yyS[yypt-2 : yypt+1]
629✔
1466
                {
1,258✔
1467
                        yyVAL.period = period{start: yyDollar[1].openPeriod, end: yyDollar[2].openPeriod}
629✔
1468
                }
629✔
1469
        case 116:
560✔
1470
                yyDollar = yyS[yypt-0 : yypt+1]
560✔
1471
                {
1,120✔
1472
                        yyVAL.openPeriod = nil
560✔
1473
                }
560✔
1474
        case 117:
44✔
1475
                yyDollar = yyS[yypt-2 : yypt+1]
44✔
1476
                {
88✔
1477
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
44✔
1478
                }
44✔
1479
        case 118:
25✔
1480
                yyDollar = yyS[yypt-2 : yypt+1]
25✔
1481
                {
50✔
1482
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
25✔
1483
                }
25✔
1484
        case 119:
585✔
1485
                yyDollar = yyS[yypt-0 : yypt+1]
585✔
1486
                {
1,170✔
1487
                        yyVAL.openPeriod = nil
585✔
1488
                }
585✔
1489
        case 120:
33✔
1490
                yyDollar = yyS[yypt-2 : yypt+1]
33✔
1491
                {
66✔
1492
                        yyVAL.openPeriod = &openPeriod{inclusive: true, instant: yyDollar[2].periodInstant}
33✔
1493
                }
33✔
1494
        case 121:
11✔
1495
                yyDollar = yyS[yypt-2 : yypt+1]
11✔
1496
                {
22✔
1497
                        yyVAL.openPeriod = &openPeriod{instant: yyDollar[2].periodInstant}
11✔
1498
                }
11✔
1499
        case 122:
56✔
1500
                yyDollar = yyS[yypt-2 : yypt+1]
56✔
1501
                {
112✔
1502
                        yyVAL.periodInstant = periodInstant{instantType: txInstant, exp: yyDollar[2].exp}
56✔
1503
                }
56✔
1504
        case 123:
57✔
1505
                yyDollar = yyS[yypt-1 : yypt+1]
57✔
1506
                {
114✔
1507
                        yyVAL.periodInstant = periodInstant{instantType: timeInstant, exp: yyDollar[1].exp}
57✔
1508
                }
57✔
1509
        case 124:
615✔
1510
                yyDollar = yyS[yypt-0 : yypt+1]
615✔
1511
                {
1,230✔
1512
                        yyVAL.joins = nil
615✔
1513
                }
615✔
1514
        case 125:
14✔
1515
                yyDollar = yyS[yypt-1 : yypt+1]
14✔
1516
                {
28✔
1517
                        yyVAL.joins = yyDollar[1].joins
14✔
1518
                }
14✔
1519
        case 126:
14✔
1520
                yyDollar = yyS[yypt-1 : yypt+1]
14✔
1521
                {
28✔
1522
                        yyVAL.joins = []*JoinSpec{yyDollar[1].join}
14✔
1523
                }
14✔
1524
        case 127:
5✔
1525
                yyDollar = yyS[yypt-2 : yypt+1]
5✔
1526
                {
10✔
1527
                        yyVAL.joins = append([]*JoinSpec{yyDollar[1].join}, yyDollar[2].joins...)
5✔
1528
                }
5✔
1529
        case 128:
19✔
1530
                yyDollar = yyS[yypt-6 : yypt+1]
19✔
1531
                {
38✔
1532
                        yyVAL.join = &JoinSpec{joinType: yyDollar[1].joinType, ds: yyDollar[3].ds, indexOn: yyDollar[4].ids, cond: yyDollar[6].exp}
19✔
1533
                }
19✔
1534
        case 129:
2✔
1535
                yyDollar = yyS[yypt-0 : yypt+1]
2✔
1536
                {
4✔
1537
                        yyVAL.joinType = InnerJoin
2✔
1538
                }
2✔
1539
        case 130:
17✔
1540
                yyDollar = yyS[yypt-1 : yypt+1]
17✔
1541
                {
34✔
1542
                        yyVAL.joinType = yyDollar[1].joinType
17✔
1543
                }
17✔
1544
        case 131:
340✔
1545
                yyDollar = yyS[yypt-0 : yypt+1]
340✔
1546
                {
680✔
1547
                        yyVAL.exp = nil
340✔
1548
                }
340✔
1549
        case 132:
325✔
1550
                yyDollar = yyS[yypt-2 : yypt+1]
325✔
1551
                {
650✔
1552
                        yyVAL.exp = yyDollar[2].exp
325✔
1553
                }
325✔
1554
        case 133:
596✔
1555
                yyDollar = yyS[yypt-0 : yypt+1]
596✔
1556
                {
1,192✔
1557
                        yyVAL.cols = nil
596✔
1558
                }
596✔
1559
        case 134:
33✔
1560
                yyDollar = yyS[yypt-3 : yypt+1]
33✔
1561
                {
66✔
1562
                        yyVAL.cols = yyDollar[3].cols
33✔
1563
                }
33✔
1564
        case 135:
622✔
1565
                yyDollar = yyS[yypt-0 : yypt+1]
622✔
1566
                {
1,244✔
1567
                        yyVAL.exp = nil
622✔
1568
                }
622✔
1569
        case 136:
7✔
1570
                yyDollar = yyS[yypt-2 : yypt+1]
7✔
1571
                {
14✔
1572
                        yyVAL.exp = yyDollar[2].exp
7✔
1573
                }
7✔
1574
        case 137:
626✔
1575
                yyDollar = yyS[yypt-0 : yypt+1]
626✔
1576
                {
1,252✔
1577
                        yyVAL.exp = nil
626✔
1578
                }
626✔
1579
        case 138:
39✔
1580
                yyDollar = yyS[yypt-2 : yypt+1]
39✔
1581
                {
78✔
1582
                        yyVAL.exp = yyDollar[2].exp
39✔
1583
                }
39✔
1584
        case 139:
661✔
1585
                yyDollar = yyS[yypt-0 : yypt+1]
661✔
1586
                {
1,322✔
1587
                        yyVAL.exp = nil
661✔
1588
                }
661✔
1589
        case 140:
4✔
1590
                yyDollar = yyS[yypt-2 : yypt+1]
4✔
1591
                {
8✔
1592
                        yyVAL.exp = yyDollar[2].exp
4✔
1593
                }
4✔
1594
        case 141:
490✔
1595
                yyDollar = yyS[yypt-0 : yypt+1]
490✔
1596
                {
980✔
1597
                        yyVAL.ordcols = nil
490✔
1598
                }
490✔
1599
        case 142:
139✔
1600
                yyDollar = yyS[yypt-3 : yypt+1]
139✔
1601
                {
278✔
1602
                        yyVAL.ordcols = yyDollar[3].ordcols
139✔
1603
                }
139✔
1604
        case 143:
654✔
1605
                yyDollar = yyS[yypt-0 : yypt+1]
654✔
1606
                {
1,308✔
1607
                        yyVAL.ids = nil
654✔
1608
                }
654✔
1609
        case 144:
30✔
1610
                yyDollar = yyS[yypt-4 : yypt+1]
30✔
1611
                {
60✔
1612
                        yyVAL.ids = yyDollar[4].ids
30✔
1613
                }
30✔
1614
        case 145:
139✔
1615
                yyDollar = yyS[yypt-2 : yypt+1]
139✔
1616
                {
278✔
1617
                        yyVAL.ordcols = []*OrdCol{{sel: yyDollar[1].sel, descOrder: yyDollar[2].opt_ord}}
139✔
1618
                }
139✔
1619
        case 146:
27✔
1620
                yyDollar = yyS[yypt-4 : yypt+1]
27✔
1621
                {
54✔
1622
                        yyVAL.ordcols = append(yyDollar[1].ordcols, &OrdCol{sel: yyDollar[3].sel, descOrder: yyDollar[4].opt_ord})
27✔
1623
                }
27✔
1624
        case 147:
54✔
1625
                yyDollar = yyS[yypt-0 : yypt+1]
54✔
1626
                {
108✔
1627
                        yyVAL.opt_ord = false
54✔
1628
                }
54✔
1629
        case 148:
27✔
1630
                yyDollar = yyS[yypt-1 : yypt+1]
27✔
1631
                {
54✔
1632
                        yyVAL.opt_ord = false
27✔
1633
                }
27✔
1634
        case 149:
85✔
1635
                yyDollar = yyS[yypt-1 : yypt+1]
85✔
1636
                {
170✔
1637
                        yyVAL.opt_ord = true
85✔
1638
                }
85✔
1639
        case 150:
1,362✔
1640
                yyDollar = yyS[yypt-0 : yypt+1]
1,362✔
1641
                {
2,724✔
1642
                        yyVAL.id = ""
1,362✔
1643
                }
1,362✔
1644
        case 151:
21✔
1645
                yyDollar = yyS[yypt-1 : yypt+1]
21✔
1646
                {
42✔
1647
                        yyVAL.id = yyDollar[1].id
21✔
1648
                }
21✔
1649
        case 152:
69✔
1650
                yyDollar = yyS[yypt-2 : yypt+1]
69✔
1651
                {
138✔
1652
                        yyVAL.id = yyDollar[2].id
69✔
1653
                }
69✔
1654
        case 153:
202✔
1655
                yyDollar = yyS[yypt-0 : yypt+1]
202✔
1656
                {
404✔
1657
                        yyVAL.checks = nil
202✔
1658
                }
202✔
1659
        case 154:
7✔
1660
                yyDollar = yyS[yypt-4 : yypt+1]
7✔
1661
                {
14✔
1662
                        yyVAL.checks = append([]CheckConstraint{{exp: yyDollar[2].exp}}, yyDollar[4].checks...)
7✔
1663
                }
7✔
1664
        case 155:
3✔
1665
                yyDollar = yyS[yypt-6 : yypt+1]
3✔
1666
                {
6✔
1667
                        yyVAL.checks = append([]CheckConstraint{{name: yyDollar[2].id, exp: yyDollar[4].exp}}, yyDollar[6].checks...)
3✔
1668
                }
3✔
1669
        case 156:
7,363✔
1670
                yyDollar = yyS[yypt-1 : yypt+1]
7,363✔
1671
                {
14,726✔
1672
                        yyVAL.exp = yyDollar[1].exp
7,363✔
1673
                }
7,363✔
1674
        case 157:
627✔
1675
                yyDollar = yyS[yypt-1 : yypt+1]
627✔
1676
                {
1,254✔
1677
                        yyVAL.exp = yyDollar[1].binExp
627✔
1678
                }
627✔
1679
        case 158:
15✔
1680
                yyDollar = yyS[yypt-2 : yypt+1]
15✔
1681
                {
30✔
1682
                        yyVAL.exp = &NotBoolExp{exp: yyDollar[2].exp}
15✔
1683
                }
15✔
1684
        case 159:
10✔
1685
                yyDollar = yyS[yypt-2 : yypt+1]
10✔
1686
                {
20✔
1687
                        yyVAL.exp = &NumExp{left: &Integer{val: 0}, op: SUBSOP, right: yyDollar[2].exp}
10✔
1688
                }
10✔
1689
        case 160:
29✔
1690
                yyDollar = yyS[yypt-4 : yypt+1]
29✔
1691
                {
58✔
1692
                        yyVAL.exp = &LikeBoolExp{val: yyDollar[1].exp, notLike: yyDollar[2].boolean, pattern: yyDollar[4].exp}
29✔
1693
                }
29✔
1694
        case 161:
2✔
1695
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
1696
                {
4✔
1697
                        yyVAL.exp = &ExistsBoolExp{q: (yyDollar[3].stmt).(DataSource)}
2✔
1698
                }
2✔
1699
        case 162:
1✔
1700
                yyDollar = yyS[yypt-6 : yypt+1]
1✔
1701
                {
2✔
1702
                        yyVAL.exp = &InSubQueryExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, q: yyDollar[5].stmt.(*SelectStmt)}
1✔
1703
                }
1✔
1704
        case 163:
14✔
1705
                yyDollar = yyS[yypt-6 : yypt+1]
14✔
1706
                {
28✔
1707
                        yyVAL.exp = &InListExp{val: yyDollar[1].exp, notIn: yyDollar[2].boolean, values: yyDollar[5].values}
14✔
1708
                }
14✔
1709
        case 164:
548✔
1710
                yyDollar = yyS[yypt-1 : yypt+1]
548✔
1711
                {
1,096✔
1712
                        yyVAL.exp = yyDollar[1].sel
548✔
1713
                }
548✔
1714
        case 165:
6,665✔
1715
                yyDollar = yyS[yypt-1 : yypt+1]
6,665✔
1716
                {
13,330✔
1717
                        yyVAL.exp = yyDollar[1].value
6,665✔
1718
                }
6,665✔
1719
        case 166:
194✔
1720
                yyDollar = yyS[yypt-3 : yypt+1]
194✔
1721
                {
388✔
1722
                        yyVAL.exp = yyDollar[2].exp
194✔
1723
                }
194✔
1724
        case 167:
2✔
1725
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1726
                {
4✔
1727
                        yyVAL.exp = &Cast{val: yyDollar[1].exp, t: yyDollar[3].sqlType}
2✔
1728
                }
2✔
1729
        case 168:
43✔
1730
                yyDollar = yyS[yypt-0 : yypt+1]
43✔
1731
                {
86✔
1732
                        yyVAL.boolean = false
43✔
1733
                }
43✔
1734
        case 169:
1✔
1735
                yyDollar = yyS[yypt-1 : yypt+1]
1✔
1736
                {
2✔
1737
                        yyVAL.boolean = true
1✔
1738
                }
1✔
1739
        case 170:
30✔
1740
                yyDollar = yyS[yypt-3 : yypt+1]
30✔
1741
                {
60✔
1742
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: ADDOP, right: yyDollar[3].exp}
30✔
1743
                }
30✔
1744
        case 171:
18✔
1745
                yyDollar = yyS[yypt-3 : yypt+1]
18✔
1746
                {
36✔
1747
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: SUBSOP, right: yyDollar[3].exp}
18✔
1748
                }
18✔
1749
        case 172:
6✔
1750
                yyDollar = yyS[yypt-3 : yypt+1]
6✔
1751
                {
12✔
1752
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: DIVOP, right: yyDollar[3].exp}
6✔
1753
                }
6✔
1754
        case 173:
4✔
1755
                yyDollar = yyS[yypt-3 : yypt+1]
4✔
1756
                {
8✔
1757
                        yyVAL.binExp = &NumExp{left: yyDollar[1].exp, op: MULTOP, right: yyDollar[3].exp}
4✔
1758
                }
4✔
1759
        case 174:
148✔
1760
                yyDollar = yyS[yypt-3 : yypt+1]
148✔
1761
                {
296✔
1762
                        yyVAL.binExp = &BinBoolExp{left: yyDollar[1].exp, op: yyDollar[2].logicOp, right: yyDollar[3].exp}
148✔
1763
                }
148✔
1764
        case 175:
417✔
1765
                yyDollar = yyS[yypt-3 : yypt+1]
417✔
1766
                {
834✔
1767
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: yyDollar[2].cmpOp, right: yyDollar[3].exp}
417✔
1768
                }
417✔
1769
        case 176:
2✔
1770
                yyDollar = yyS[yypt-3 : yypt+1]
2✔
1771
                {
4✔
1772
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: EQ, right: &NullValue{t: AnyType}}
2✔
1773
                }
2✔
1774
        case 177:
2✔
1775
                yyDollar = yyS[yypt-4 : yypt+1]
2✔
1776
                {
4✔
1777
                        yyVAL.binExp = &CmpBoolExp{left: yyDollar[1].exp, op: NE, right: &NullValue{t: AnyType}}
2✔
1778
                }
2✔
1779
        }
1780
        goto yystack /* stack new state and value */
80,902✔
1781
}
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