From 7e6a98deab4cbb5b23864a59e83985a5d2f97d3f Mon Sep 17 00:00:00 2001 From: Bryan Beaudreault Date: Tue, 3 Jan 2017 18:40:43 -0500 Subject: [PATCH] Adds support for parsing queries with boolean value comparisons, i.e. true/false and =, !=, >, <, >=, <= --- go/vt/sqlparser/ast.go | 1 + go/vt/sqlparser/parse_test.go | 24 + go/vt/sqlparser/sql.go | 1309 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 14 +- 4 files changed, 697 insertions(+), 651 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 837a0e6e832..0f38df162f4 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -1117,6 +1117,7 @@ func (*UnaryExpr) iValExpr() {} func (*IntervalExpr) iValExpr() {} func (*FuncExpr) iValExpr() {} func (*CaseExpr) iValExpr() {} +func (BoolVal) iValExpr() {} // ValType specifies the type for SQLVal. type ValType int diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 505822ecac8..f2e1cd267d4 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -586,6 +586,30 @@ func TestValid(t *testing.T) { }, { input: "explain foobar", output: "other", + }, { + input: "select /* EQ true */ 1 from t where a = true", + }, { + input: "select /* EQ false */ 1 from t where a = false", + }, { + input: "select /* NE true */ 1 from t where a != true", + }, { + input: "select /* NE false */ 1 from t where a != false", + }, { + input: "select /* LT true */ 1 from t where a < true", + }, { + input: "select /* LT false */ 1 from t where a < false", + }, { + input: "select /* GT true */ 1 from t where a > true", + }, { + input: "select /* GT false */ 1 from t where a > false", + }, { + input: "select /* LE true */ 1 from t where a <= true", + }, { + input: "select /* LE false */ 1 from t where a <= false", + }, { + input: "select /* GE true */ 1 from t where a >= true", + }, { + input: "select /* GE false */ 1 from t where a >= false", }} for _, tcase := range validSQL { if tcase.output == "" { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 4cc85b526dd..15592f6d31f 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -1,9 +1,9 @@ -//line sql.y:6 +//line ./go/vt/sqlparser/sql.y:6 package sqlparser import __yyfmt__ "fmt" -//line sql.y:6 +//line ./go/vt/sqlparser/sql.y:6 func setParseTree(yylex interface{}, stmt Statement) { yylex.(*Tokenizer).ParseTree = stmt } @@ -28,7 +28,7 @@ func forceEOF(yylex interface{}) { yylex.(*Tokenizer).ForceEOF = true } -//line sql.y:34 +//line ./go/vt/sqlparser/sql.y:34 type yySymType struct { yys int empty struct{} @@ -48,6 +48,7 @@ type yySymType struct { indexHints *IndexHints expr Expr boolExpr BoolExpr + boolVal BoolVal valExpr ValExpr colTuple ColTuple valExprs ValExprs @@ -294,213 +295,209 @@ var yyExca = [...]int{ 1, -1, -2, 0, -1, 109, - 94, 242, - -2, 241, + 94, 244, + -2, 243, } -const yyNprod = 246 +const yyNprod = 248 const yyPrivate = 57344 var yyTokenNames []string var yyStates []string -const yyLast = 1050 +const yyLast = 1008 var yyAct = [...]int{ - 121, 107, 283, 431, 62, 362, 306, 115, 210, 229, - 116, 316, 351, 326, 243, 102, 242, 297, 260, 241, - 209, 3, 254, 113, 173, 157, 245, 148, 382, 384, - 103, 47, 74, 163, 35, 64, 37, 67, 69, 41, - 38, 71, 40, 70, 41, 238, 161, 97, 50, 14, - 15, 16, 17, 414, 413, 81, 412, 48, 49, 58, - 43, 44, 45, 68, 46, 42, 364, 165, 212, 213, - 333, 18, 232, 153, 177, 87, 63, 101, 197, 198, - 191, 192, 193, 194, 195, 196, 190, 64, 88, 190, - 64, 146, 383, 191, 192, 193, 194, 195, 196, 190, - 65, 94, 437, 96, 179, 178, 175, 193, 194, 195, - 196, 190, 145, 206, 208, 180, 267, 160, 162, 159, - 180, 109, 394, 154, 178, 90, 298, 298, 349, 92, - 265, 266, 264, 168, 164, 284, 127, 220, 388, 180, - 19, 20, 22, 21, 23, 84, 263, 127, 179, 178, - 60, 231, 112, 24, 25, 26, 179, 178, 235, 249, - 65, 60, 396, 329, 180, 60, 150, 224, 255, 257, - 258, 109, 180, 256, 228, 175, 93, 65, 251, 176, - 252, 253, 246, 439, 284, 112, 112, 334, 335, 336, - 236, 170, 284, 262, 75, 218, 219, 239, 89, 248, - 221, 240, 327, 129, 128, 130, 131, 132, 133, 14, - 271, 134, 285, 287, 65, 286, 284, 82, 290, 227, - 83, 291, 294, 112, 314, 284, 149, 64, 304, 174, - 60, 302, 329, 251, 292, 295, 288, 289, 305, 358, - 284, 352, 28, 89, 112, 247, 301, 286, 127, 171, - 401, 60, 112, 112, 398, 73, 261, 65, 246, 176, - 207, 89, 318, 321, 322, 323, 319, 332, 320, 324, - 337, 314, 409, 226, 127, 262, 408, 352, 234, 100, - 411, 377, 375, 338, 284, 170, 378, 376, 79, 410, - 127, 374, 112, 112, 379, 344, 322, 323, 346, 373, - 350, 76, 144, 143, 86, 39, 357, 417, 354, 345, - 397, 55, 359, 85, 348, 356, 318, 321, 322, 323, - 319, 247, 320, 324, 54, 246, 246, 246, 246, 14, - 370, 369, 372, 371, 389, 387, 380, 57, 261, 108, - 390, 385, 365, 429, 29, 155, 99, 331, 393, 51, - 52, 151, 307, 300, 368, 430, 308, 142, 230, 399, - 31, 32, 33, 34, 141, 389, 367, 112, 313, 406, - 149, 61, 112, 211, 355, 436, 405, 407, 214, 215, - 216, 217, 427, 14, 28, 30, 1, 330, 247, 247, - 247, 247, 325, 172, 156, 36, 237, 158, 66, 140, - 223, 303, 225, 428, 402, 361, 418, 420, 122, 366, - 422, 423, 421, 312, 233, 188, 197, 198, 191, 192, - 193, 194, 195, 196, 190, 432, 432, 432, 64, 433, - 434, 108, 435, 347, 438, 222, 440, 441, 442, 296, - 443, 112, 259, 444, 123, 268, 269, 270, 114, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 353, 80, 299, 152, 181, 110, 381, 317, 315, 244, - 169, 105, 355, 78, 53, 27, 56, 400, 13, 108, - 108, 12, 112, 112, 11, 10, 424, 425, 426, 9, - 8, 7, 6, 5, 4, 2, 59, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, - 77, 189, 188, 197, 198, 191, 192, 193, 194, 195, - 196, 190, 233, 0, 0, 59, 339, 340, 341, 0, - 91, 0, 0, 0, 95, 0, 0, 98, 0, 0, - 0, 0, 106, 0, 0, 0, 0, 343, 293, 59, - 126, 147, 0, 0, 108, 0, 0, 0, 0, 0, - 0, 166, 0, 0, 167, 0, 0, 0, 360, 363, - 0, 0, 0, 0, 127, 0, 284, 109, 129, 128, - 130, 131, 132, 133, 0, 0, 134, 124, 125, 0, - 0, 111, 0, 139, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 392, 59, 403, 404, 0, 0, 0, - 395, 0, 0, 117, 118, 104, 233, 0, 138, 0, - 119, 0, 120, 0, 0, 0, 0, 0, 0, 233, - 0, 0, 0, 0, 106, 59, 135, 0, 0, 0, - 0, 250, 136, 137, 0, 0, 0, 0, 0, 0, - 0, 0, 415, 0, 0, 0, 0, 416, 0, 0, - 0, 419, 363, 189, 188, 197, 198, 191, 192, 193, - 194, 195, 196, 190, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 106, 0, 0, 0, 0, 0, 0, - 126, 0, 0, 0, 0, 0, 309, 0, 310, 0, - 0, 311, 0, 0, 0, 0, 0, 0, 0, 328, - 0, 59, 0, 0, 127, 391, 284, 109, 129, 128, - 130, 131, 132, 133, 0, 0, 134, 124, 125, 0, - 0, 111, 0, 139, 189, 188, 197, 198, 191, 192, - 193, 194, 195, 196, 190, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 104, 0, 106, 138, 0, - 119, 0, 120, 0, 0, 0, 0, 0, 126, 0, - 0, 0, 0, 0, 0, 0, 135, 0, 59, 59, - 59, 59, 136, 137, 0, 0, 0, 0, 0, 0, - 0, 328, 127, 0, 386, 109, 129, 128, 130, 131, - 132, 133, 0, 0, 134, 124, 125, 0, 0, 111, - 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 342, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 104, 0, 126, 138, 0, 119, 0, - 120, 189, 188, 197, 198, 191, 192, 193, 194, 195, - 196, 190, 0, 0, 135, 0, 0, 0, 0, 127, - 136, 137, 109, 129, 128, 130, 131, 132, 133, 0, - 0, 134, 124, 125, 0, 0, 111, 0, 139, 0, - 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 0, 0, 117, 118, - 0, 0, 0, 138, 0, 119, 127, 120, 0, 109, - 129, 128, 130, 131, 132, 133, 0, 0, 134, 124, - 125, 135, 0, 111, 0, 139, 0, 136, 137, 0, - 0, 0, 127, 0, 0, 109, 129, 128, 130, 131, - 132, 133, 0, 0, 134, 117, 118, 0, 0, 65, - 138, 139, 119, 0, 120, 0, 0, 0, 127, 0, - 0, 109, 129, 128, 130, 131, 132, 133, 135, 0, - 134, 117, 118, 0, 136, 137, 138, 139, 119, 0, - 120, 189, 188, 197, 198, 191, 192, 193, 194, 195, - 196, 190, 0, 0, 135, 0, 0, 117, 118, 0, - 136, 137, 138, 0, 119, 0, 120, 189, 188, 197, - 198, 191, 192, 193, 194, 195, 196, 190, 0, 0, - 135, 183, 186, 0, 0, 0, 136, 137, 199, 200, - 201, 202, 203, 204, 205, 187, 184, 185, 182, 189, - 188, 197, 198, 191, 192, 193, 194, 195, 196, 190, + 121, 364, 285, 433, 328, 107, 308, 62, 116, 262, + 47, 230, 115, 318, 299, 244, 353, 242, 255, 210, + 3, 211, 243, 113, 102, 124, 174, 246, 35, 149, + 37, 158, 103, 41, 38, 64, 48, 49, 69, 74, + 67, 71, 239, 97, 384, 386, 416, 50, 14, 15, + 16, 17, 154, 70, 40, 81, 41, 415, 414, 126, + 58, 164, 109, 128, 127, 129, 130, 131, 132, 68, + 18, 133, 139, 140, 162, 46, 42, 101, 138, 366, + 94, 335, 96, 43, 44, 45, 233, 64, 178, 88, + 64, 213, 214, 87, 147, 166, 191, 63, 117, 118, + 65, 439, 155, 137, 179, 119, 176, 120, 385, 181, + 109, 300, 169, 146, 180, 179, 396, 207, 209, 181, + 398, 134, 194, 195, 196, 197, 191, 135, 136, 90, + 181, 112, 92, 84, 221, 269, 65, 60, 390, 19, + 20, 22, 21, 23, 286, 161, 163, 160, 250, 267, + 268, 266, 24, 25, 26, 109, 232, 180, 179, 236, + 93, 300, 165, 351, 112, 112, 180, 179, 126, 225, + 237, 60, 75, 181, 219, 220, 176, 229, 222, 252, + 89, 247, 181, 410, 288, 253, 254, 151, 256, 258, + 259, 208, 264, 257, 336, 337, 338, 441, 286, 228, + 240, 126, 249, 112, 241, 403, 65, 273, 260, 82, + 400, 265, 83, 287, 289, 60, 65, 331, 177, 292, + 329, 175, 293, 296, 112, 248, 14, 28, 64, 306, + 171, 286, 112, 112, 252, 304, 263, 290, 291, 288, + 286, 307, 316, 286, 294, 297, 303, 126, 60, 65, + 331, 177, 402, 360, 286, 316, 354, 247, 192, 193, + 194, 195, 196, 197, 191, 126, 334, 150, 60, 286, + 108, 172, 112, 112, 235, 264, 340, 320, 323, 324, + 325, 321, 152, 322, 326, 339, 190, 189, 198, 199, + 192, 193, 194, 195, 196, 197, 191, 346, 73, 227, + 348, 248, 89, 354, 212, 89, 352, 171, 359, 215, + 216, 217, 218, 350, 361, 356, 126, 100, 79, 263, + 347, 358, 413, 367, 379, 247, 247, 247, 247, 380, + 224, 412, 376, 372, 387, 374, 391, 389, 377, 371, + 382, 373, 392, 378, 76, 375, 234, 55, 112, 381, + 395, 324, 325, 112, 431, 357, 145, 144, 86, 419, + 54, 401, 65, 108, 399, 85, 432, 391, 156, 248, + 248, 248, 248, 99, 261, 408, 39, 270, 271, 272, + 407, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 409, 333, 190, 189, 198, 199, 192, 193, + 194, 195, 196, 197, 191, 422, 309, 29, 57, 14, + 370, 108, 108, 420, 423, 310, 424, 425, 231, 153, + 51, 52, 112, 31, 32, 33, 34, 434, 434, 434, + 64, 435, 436, 302, 143, 369, 440, 437, 442, 443, + 444, 142, 445, 315, 150, 446, 128, 127, 129, 130, + 131, 132, 59, 357, 133, 234, 61, 438, 429, 341, + 342, 343, 72, 112, 112, 14, 77, 426, 427, 428, + 189, 198, 199, 192, 193, 194, 195, 196, 197, 191, + 345, 59, 28, 30, 1, 332, 91, 108, 327, 173, + 95, 157, 36, 98, 238, 159, 66, 141, 106, 305, + 226, 362, 365, 393, 430, 59, 404, 148, 198, 199, + 192, 193, 194, 195, 196, 197, 191, 167, 363, 122, + 168, 368, 190, 189, 198, 199, 192, 193, 194, 195, + 196, 197, 191, 314, 349, 223, 394, 295, 298, 125, + 123, 114, 355, 397, 80, 301, 182, 110, 383, 234, + 319, 317, 245, 170, 405, 406, 105, 78, 53, 27, + 56, 59, 234, 126, 13, 286, 109, 128, 127, 129, + 130, 131, 132, 12, 11, 133, 139, 140, 10, 9, + 111, 8, 138, 7, 6, 417, 5, 4, 2, 0, + 418, 106, 59, 0, 421, 365, 0, 0, 251, 0, + 0, 0, 117, 118, 104, 0, 0, 137, 0, 119, + 0, 120, 190, 189, 198, 199, 192, 193, 194, 195, + 196, 197, 191, 0, 0, 134, 0, 0, 0, 0, + 0, 135, 136, 0, 0, 0, 0, 0, 0, 106, + 106, 0, 0, 0, 0, 0, 0, 0, 125, 0, + 0, 0, 0, 311, 0, 312, 0, 0, 313, 0, + 0, 0, 0, 0, 0, 0, 330, 0, 59, 0, + 0, 0, 126, 344, 286, 109, 128, 127, 129, 130, + 131, 132, 0, 0, 133, 139, 140, 0, 0, 111, + 0, 138, 190, 189, 198, 199, 192, 193, 194, 195, + 196, 197, 191, 0, 0, 0, 0, 0, 0, 0, + 0, 117, 118, 104, 0, 106, 137, 0, 119, 0, + 120, 320, 323, 324, 325, 321, 125, 322, 326, 0, + 0, 411, 0, 0, 134, 0, 59, 59, 59, 59, + 135, 136, 0, 0, 0, 0, 0, 0, 0, 330, + 126, 0, 388, 109, 128, 127, 129, 130, 131, 132, + 0, 0, 133, 139, 140, 0, 0, 111, 0, 138, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 104, 0, 125, 137, 0, 119, 0, 120, 190, + 189, 198, 199, 192, 193, 194, 195, 196, 197, 191, + 0, 0, 134, 0, 0, 0, 0, 126, 135, 136, + 109, 128, 127, 129, 130, 131, 132, 0, 0, 133, + 139, 140, 0, 0, 111, 0, 138, 0, 0, 0, + 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 117, 118, 0, 0, + 0, 137, 0, 119, 126, 120, 0, 109, 128, 127, + 129, 130, 131, 132, 0, 0, 133, 139, 140, 134, + 0, 111, 0, 138, 0, 135, 136, 0, 0, 0, + 126, 0, 0, 109, 128, 127, 129, 130, 131, 132, + 0, 0, 133, 117, 118, 0, 0, 0, 137, 138, + 119, 0, 120, 0, 0, 0, 126, 0, 0, 109, + 128, 127, 129, 130, 131, 132, 134, 0, 133, 117, + 118, 0, 135, 136, 137, 138, 119, 0, 120, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 134, 0, 0, 117, 118, 0, 135, 136, + 137, 0, 119, 0, 120, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 134, 184, + 187, 0, 0, 0, 135, 136, 200, 201, 202, 203, + 204, 205, 206, 188, 185, 186, 183, 190, 189, 198, + 199, 192, 193, 194, 195, 196, 197, 191, } var yyPact = [...]int{ - 43, -1000, -1000, 379, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -68, - -62, -37, -42, -38, -1000, -1000, -1000, 377, 331, 292, - -1000, -67, 117, 361, 112, -70, -40, 112, -1000, -59, - 112, -1000, 117, -75, 146, -75, 117, -1000, -1000, -1000, - -1000, -1000, -1000, 253, 166, -1000, 89, 289, 276, -19, - -1000, 117, 152, -1000, 56, -1000, 117, 67, 128, -1000, - 117, -1000, -58, 117, 325, 235, 112, -1000, 747, -1000, - 347, -1000, 273, 272, -1000, 117, 112, 117, 359, 112, - 913, -1000, 324, -84, -1000, 19, -1000, 117, -1000, -1000, - 117, -1000, 239, -1000, -1000, 209, -20, 44, 959, -1000, - -1000, 861, 814, -1000, -27, -1000, -1000, 913, 913, 913, - 913, 229, 229, -1000, -1000, -1000, 229, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 913, - 117, -1000, -1000, -1000, -1000, 245, 215, -1000, 344, 861, - -1000, 927, -22, 887, -1000, -1000, 234, 112, -1000, -60, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 359, - 747, 102, -1000, -1000, 129, -1000, -1000, 73, 861, 861, - 111, 913, 91, 53, 913, 913, 913, 111, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913, 913, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 39, 959, 88, 237, - 169, 959, 154, 154, -1000, -1000, -1000, 901, 529, 669, - -1000, 377, 62, 927, -1000, 323, 112, 112, 344, 336, - 341, 44, 123, 927, 117, -1000, -1000, 117, -1000, 356, - -1000, 225, 282, -1000, -1000, 182, 327, 203, -1000, -1000, - -24, -1000, 39, 63, -1000, -1000, 130, -1000, -1000, 927, - -1000, 887, -1000, -1000, 91, 913, 913, 913, 927, 927, - 761, -1000, -4, 334, -1000, 21, 21, -1, -1, -1, - -1, 9, 9, -1000, -1000, -1000, 913, -1000, -1000, -1000, - -1000, -1000, 145, 747, -1000, 145, 61, -1000, 861, 233, - 229, 379, 197, 193, -1000, 336, -1000, 913, 913, -28, - -1000, -1000, 353, 339, 102, 102, 102, 102, -1000, 265, - 257, -1000, 248, 247, 260, -14, -1000, 113, -1000, -1000, - 117, -1000, 178, 52, -1000, -1000, -1000, 169, -1000, 927, - 927, 654, 913, 927, -1000, 145, -1000, 54, -1000, 913, - 96, -1000, 285, 208, -1000, 913, -1000, -1000, 112, -1000, - 431, 204, -1000, 583, 112, -1000, 344, 861, 913, 282, - 232, 228, -1000, -1000, -1000, -1000, 255, -1000, 246, -1000, - -1000, -1000, -47, -49, -50, -1000, -1000, -1000, -1000, -1000, - -1000, 913, 927, -1000, -1000, 927, 913, 281, 229, -1000, - 913, 913, -1000, -1000, -1000, 336, 44, 201, 861, 861, - -1000, -1000, 229, 229, 229, 927, 927, 374, -1000, 927, - -1000, 326, 44, 44, 112, 112, 112, 112, -1000, 367, - 23, 137, -1000, 137, 137, 152, -1000, 112, -1000, 112, - -1000, -1000, 112, -1000, -1000, + 42, -1000, -1000, 477, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -74, + -50, -26, -19, -27, -1000, -1000, -1000, 459, 402, 328, + -1000, -73, 89, 446, 88, -67, -34, 88, -1000, -49, + 88, -1000, 89, -68, 124, -68, 89, -1000, -1000, -1000, + -1000, -1000, -1000, 283, 158, -1000, 77, 341, 330, -1, + -1000, 89, 134, -1000, 60, -1000, 89, 70, 112, -1000, + 89, -1000, -62, 89, 352, 273, 88, -1000, 705, -1000, + 424, -1000, 327, 326, -1000, 89, 88, 89, 433, 88, + 871, -1000, 347, -78, -1000, 47, -1000, 89, -1000, -1000, + 89, -1000, 261, -1000, -1000, 201, -6, 106, 917, -1000, + -1000, 819, 772, -1000, -4, -1000, -1000, 871, 871, 871, + 871, 202, 202, -1000, -1000, 202, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 871, -1000, + -1000, 89, -1000, -1000, -1000, -1000, 271, 256, -1000, 404, + 819, -1000, 719, -8, 845, -1000, -1000, 230, 88, -1000, + -63, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 433, 705, 123, -1000, -1000, 168, -1000, -1000, 62, 819, + 819, 131, 14, 156, 72, 871, 871, 871, 131, 871, + 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 33, 917, 97, + 222, 193, 917, 397, 397, -1000, -1000, -1000, 314, 518, + 627, -1000, 459, 46, 719, -1000, 403, 88, 88, 404, + 390, 400, 106, 107, 719, 89, -1000, -1000, 89, -1000, + 431, -1000, 209, 243, -1000, -1000, 200, 373, 220, -1000, + -1000, -13, -1000, 33, 43, -1000, -1000, 137, -1000, -1000, + -1000, 719, -1000, 845, -1000, -1000, 156, 871, 871, 871, + 719, 719, 612, -1000, 426, 389, -1000, 36, 36, 6, + 6, 6, 6, 174, 174, -1000, -1000, -1000, 871, -1000, + -1000, -1000, -1000, -1000, 184, 705, -1000, 184, 96, -1000, + 819, 212, 202, 477, 259, 207, -1000, 390, -1000, 871, + 871, -15, -1000, -1000, 422, 395, 123, 123, 123, 123, + -1000, 311, 298, -1000, 304, 290, 315, 2, -1000, 167, + -1000, -1000, 89, -1000, 196, 52, -1000, -1000, -1000, 193, + -1000, 719, 719, 442, 871, 719, -1000, 184, -1000, 48, + -1000, 871, 54, -1000, 339, 164, -1000, 871, -1000, -1000, + 88, -1000, 206, 159, -1000, 532, 88, -1000, 404, 819, + 871, 243, 139, 687, -1000, -1000, -1000, -1000, 297, -1000, + 288, -1000, -1000, -1000, -45, -46, -57, -1000, -1000, -1000, + -1000, -1000, -1000, 871, 719, -1000, -1000, 719, 871, 333, + 202, -1000, 871, 871, -1000, -1000, -1000, 390, 106, 138, + 819, 819, -1000, -1000, 202, 202, 202, 719, 719, 450, + -1000, 719, -1000, 337, 106, 106, 88, 88, 88, 88, + -1000, 449, 22, 151, -1000, 151, 151, 134, -1000, 88, + -1000, 88, -1000, -1000, 88, -1000, -1000, } var yyPgo = [...]int{ - 0, 495, 20, 494, 493, 492, 491, 490, 489, 485, - 484, 481, 478, 344, 476, 475, 474, 473, 15, 30, - 471, 470, 19, 16, 14, 469, 468, 11, 467, 26, - 466, 3, 27, 1, 465, 464, 462, 23, 260, 461, - 22, 18, 8, 460, 7, 10, 448, 444, 439, 17, - 435, 433, 413, 409, 408, 9, 405, 5, 404, 6, - 403, 402, 401, 12, 4, 76, 399, 305, 255, 398, - 397, 396, 395, 394, 0, 24, 393, 463, 13, 392, - 387, 31, 386, 385, 73, 2, + 0, 588, 19, 587, 586, 584, 583, 581, 579, 578, + 574, 573, 564, 407, 560, 559, 558, 557, 24, 32, + 556, 553, 17, 22, 15, 552, 551, 13, 550, 27, + 548, 3, 29, 5, 547, 25, 546, 545, 23, 191, + 544, 18, 9, 21, 542, 12, 8, 541, 540, 538, + 14, 535, 534, 533, 521, 519, 11, 518, 1, 506, + 6, 504, 500, 499, 16, 7, 97, 497, 376, 298, + 496, 495, 494, 492, 491, 0, 26, 489, 419, 4, + 488, 485, 10, 484, 483, 52, 2, } var yyR1 = [...]int{ - 0, 82, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 83, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 7, 7, 8, 8, 8, 9, 10, 10, - 10, 11, 12, 12, 12, 83, 13, 14, 14, 15, + 10, 11, 12, 12, 12, 84, 13, 14, 14, 15, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, - 19, 19, 20, 20, 76, 76, 76, 75, 75, 21, + 19, 19, 20, 20, 77, 77, 77, 76, 76, 21, 21, 22, 22, 23, 23, 24, 24, 24, 25, 25, - 25, 25, 80, 80, 79, 79, 79, 78, 78, 26, + 25, 25, 81, 81, 80, 80, 80, 79, 79, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 29, 29, 30, 30, 30, 30, 31, 31, 32, 32, 33, - 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 40, 40, - 40, 40, 40, 40, 35, 35, 35, 35, 35, 35, - 35, 41, 41, 41, 45, 42, 42, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 54, 54, 54, 54, 47, 50, - 50, 48, 48, 49, 51, 51, 46, 46, 46, 37, - 37, 37, 37, 37, 37, 37, 39, 39, 39, 52, - 52, 53, 53, 55, 55, 56, 56, 57, 58, 58, - 58, 59, 59, 59, 60, 60, 60, 61, 61, 62, - 62, 63, 63, 36, 36, 43, 43, 44, 64, 64, - 65, 66, 66, 68, 68, 69, 69, 67, 67, 70, - 70, 70, 70, 70, 70, 71, 71, 72, 72, 73, - 73, 74, 77, 84, 85, 81, + 33, 33, 33, 33, 33, 35, 35, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 41, 41, 41, 41, 41, 41, 36, 36, 36, 36, + 36, 36, 36, 42, 42, 42, 46, 43, 43, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 55, 55, 55, 55, + 48, 51, 51, 49, 49, 50, 52, 52, 47, 47, + 47, 38, 38, 38, 38, 38, 38, 38, 40, 40, + 40, 53, 53, 54, 54, 56, 56, 57, 57, 58, + 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, + 62, 63, 63, 64, 64, 37, 37, 44, 44, 45, + 65, 65, 66, 67, 67, 69, 69, 70, 70, 68, + 68, 71, 71, 71, 71, 71, 71, 72, 72, 73, + 73, 74, 74, 75, 78, 85, 86, 82, } var yyR2 = [...]int{ @@ -514,117 +511,117 @@ var yyR2 = [...]int{ 5, 3, 0, 1, 0, 1, 2, 1, 1, 1, 2, 2, 1, 2, 3, 2, 3, 2, 2, 1, 3, 0, 5, 5, 5, 1, 3, 0, 2, 1, - 3, 3, 2, 3, 3, 1, 1, 3, 3, 4, - 3, 4, 3, 4, 5, 6, 3, 2, 1, 2, - 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 1, 3, 1, 3, 1, 1, 1, - 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 3, 3, 4, - 5, 3, 4, 1, 1, 1, 1, 1, 5, 0, - 1, 1, 2, 4, 0, 2, 1, 3, 5, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, - 3, 0, 2, 0, 3, 1, 3, 2, 0, 1, - 1, 0, 2, 4, 0, 2, 4, 0, 3, 1, - 3, 0, 5, 2, 1, 1, 3, 3, 1, 3, - 3, 1, 1, 0, 2, 0, 3, 0, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, - 2, 1, 1, 1, 1, 0, + 3, 3, 2, 3, 3, 1, 1, 1, 3, 3, + 3, 4, 3, 4, 3, 4, 5, 6, 3, 2, + 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 1, 3, 1, 3, 1, + 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 3, + 3, 4, 5, 3, 4, 1, 1, 1, 1, 1, + 5, 0, 1, 1, 2, 4, 0, 2, 1, 3, + 5, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 0, 3, 0, 2, 0, 3, 1, 3, 2, + 0, 1, 1, 0, 2, 4, 0, 2, 4, 0, + 3, 1, 3, 0, 5, 2, 1, 1, 3, 3, + 1, 3, 3, 1, 1, 0, 2, 0, 3, 0, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, + 1, 0, 2, 1, 1, 1, 1, 0, } var yyChk = [...]int{ - -1000, -82, -1, -2, -3, -4, -5, -6, -7, -8, + -1000, -83, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, 6, 7, 8, 9, 28, 97, 98, 100, 99, 101, 110, 111, 112, -15, 5, -13, - -83, -13, -13, -13, -13, 102, -72, 104, 108, -67, - 104, 106, 102, 102, 103, 104, 102, -81, -81, -81, - -2, 18, 19, -16, 32, 19, -14, -67, -29, -77, - 48, 10, -64, -65, -74, 48, -69, 107, 103, -74, - 102, -74, -77, -68, 107, 48, -68, -77, -17, 35, - -39, -74, 51, 54, 56, 24, 28, 94, -29, 46, - 69, -77, 62, 48, -81, -77, -81, 105, -77, 21, - 44, -74, -18, -19, 86, -20, -77, -33, -38, 48, - -34, 62, -84, -37, -46, -44, -45, 84, 85, 91, - 93, -74, -54, -47, 58, 59, 21, 45, 50, 49, - 51, 52, 53, 54, 57, 107, 113, 114, 89, 64, - -66, 17, 10, 30, 30, -29, -64, -77, -32, 11, - -65, -38, -77, -84, -81, 21, -73, 109, -70, 100, - 98, 27, 99, 14, 115, 48, -77, -77, -81, -21, - 46, 10, -76, -75, 20, -74, 50, 94, 61, 60, - 76, -35, 79, 62, 77, 78, 63, 76, 81, 80, - 90, 84, 85, 86, 87, 88, 89, 82, 83, 69, - 70, 71, 72, 73, 74, 75, -33, -38, -33, -2, - -42, -38, 95, 96, -38, -38, -38, -38, -84, -84, - -45, -84, -50, -38, -29, -61, 28, -84, -32, -55, - 14, -33, 94, -38, 44, -74, -81, -71, 105, -32, - -19, -22, -23, -24, -25, -29, -45, -84, -75, 86, - -77, -74, -33, -33, -40, 57, 62, 58, 59, -38, - -41, -84, -45, 55, 79, 77, 78, 63, -38, -38, - -38, -40, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -85, 47, -85, 46, -85, -37, -37, - -74, -85, -18, 19, -85, -18, -48, -49, 65, -36, - 30, -2, -64, -62, -74, -55, -59, 16, 15, -77, - -77, -77, -52, 12, 46, -26, -27, -28, 34, 38, - 40, 35, 36, 37, 41, -79, -78, 20, -77, 50, - -80, 20, -22, 94, 57, 58, 59, -42, -41, -38, - -38, -38, 61, -38, -85, -18, -85, -51, -49, 67, - -33, -63, 44, -43, -44, -84, -63, -85, 46, -59, - -38, -56, -57, -38, 94, -81, -53, 13, 15, -23, - -24, -23, -24, 34, 34, 34, 39, 34, 39, 34, - -27, -30, 42, 106, 43, -78, -77, -85, 86, -74, - -85, 61, -38, -85, 68, -38, 66, 25, 46, -74, - 46, 46, -58, 22, 23, -55, -33, -42, 44, 44, - 34, 34, 103, 103, 103, -38, -38, 26, -44, -38, - -57, -59, -33, -33, -84, -84, -84, 8, -60, 17, - 29, -31, -74, -31, -31, -64, 8, 79, -85, 46, - -85, -85, -74, -74, -74, + -84, -13, -13, -13, -13, 102, -73, 104, 108, -68, + 104, 106, 102, 102, 103, 104, 102, -82, -82, -82, + -2, 18, 19, -16, 32, 19, -14, -68, -29, -78, + 48, 10, -65, -66, -75, 48, -70, 107, 103, -75, + 102, -75, -78, -69, 107, 48, -69, -78, -17, 35, + -40, -75, 51, 54, 56, 24, 28, 94, -29, 46, + 69, -78, 62, 48, -82, -78, -82, 105, -78, 21, + 44, -75, -18, -19, 86, -20, -78, -33, -39, 48, + -34, 62, -85, -38, -47, -45, -46, 84, 85, 91, + 93, -75, -55, -48, -35, 21, 45, 50, 49, 51, + 52, 53, 54, 57, 107, 113, 114, 89, 64, 58, + 59, -67, 17, 10, 30, 30, -29, -65, -78, -32, + 11, -66, -39, -78, -85, -82, 21, -74, 109, -71, + 100, 98, 27, 99, 14, 115, 48, -78, -78, -82, + -21, 46, 10, -77, -76, 20, -75, 50, 94, 61, + 60, 76, -36, 79, 62, 77, 78, 63, 76, 81, + 80, 90, 84, 85, 86, 87, 88, 89, 82, 83, + 69, 70, 71, 72, 73, 74, 75, -33, -39, -33, + -2, -43, -39, 95, 96, -39, -39, -39, -39, -85, + -85, -46, -85, -51, -39, -29, -62, 28, -85, -32, + -56, 14, -33, 94, -39, 44, -75, -82, -72, 105, + -32, -19, -22, -23, -24, -25, -29, -46, -85, -76, + 86, -78, -75, -33, -33, -41, 57, 62, 58, 59, + -35, -39, -42, -85, -46, 55, 79, 77, 78, 63, + -39, -39, -39, -41, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -86, 47, -86, 46, -86, + -38, -38, -75, -86, -18, 19, -86, -18, -49, -50, + 65, -37, 30, -2, -65, -63, -75, -56, -60, 16, + 15, -78, -78, -78, -53, 12, 46, -26, -27, -28, + 34, 38, 40, 35, 36, 37, 41, -80, -79, 20, + -78, 50, -81, 20, -22, 94, 57, 58, 59, -43, + -42, -39, -39, -39, 61, -39, -86, -18, -86, -52, + -50, 67, -33, -64, 44, -44, -45, -85, -64, -86, + 46, -60, -39, -57, -58, -39, 94, -82, -54, 13, + 15, -23, -24, -23, -24, 34, 34, 34, 39, 34, + 39, 34, -27, -30, 42, 106, 43, -79, -78, -86, + 86, -75, -86, 61, -39, -86, 68, -39, 66, 25, + 46, -75, 46, 46, -59, 22, 23, -56, -33, -43, + 44, 44, 34, 34, 103, 103, 103, -39, -39, 26, + -45, -39, -58, -60, -33, -33, -85, -85, -85, 8, + -61, 17, 29, -31, -75, -31, -31, -65, 8, 79, + -86, 46, -86, -86, -75, -75, -75, } var yyDef = [...]int{ 0, -2, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 35, 35, 35, 35, 35, 237, - 227, 0, 0, 0, 245, 245, 245, 0, 39, 42, - 37, 227, 0, 0, 0, 225, 0, 0, 238, 0, - 0, 228, 0, 223, 0, 223, 0, 32, 33, 34, + 9, 10, 11, 12, 35, 35, 35, 35, 35, 239, + 229, 0, 0, 0, 247, 247, 247, 0, 39, 42, + 37, 229, 0, 0, 0, 227, 0, 0, 240, 0, + 0, 230, 0, 225, 0, 225, 0, 32, 33, 34, 15, 40, 41, 44, 0, 43, 36, 0, 0, 89, - 242, 0, 20, 218, 0, 241, 0, 0, 0, 245, - 0, 245, 0, 0, 0, 0, 0, 31, 0, 45, - 0, 186, 0, 0, 38, 0, 0, 0, 97, 0, - 0, 245, 0, 239, 23, 0, 26, 0, 28, 224, - 0, 245, 59, 46, 48, 54, 0, 52, 53, -2, - 99, 0, 0, 137, 138, 139, 140, 0, 0, 0, - 0, 176, 0, 163, 105, 106, 0, 243, 179, 180, - 181, 182, 183, 184, 185, 164, 165, 166, 167, 169, - 0, 221, 222, 187, 188, 207, 97, 90, 193, 0, - 219, 220, 0, 0, 21, 226, 0, 0, 245, 235, - 229, 230, 231, 232, 233, 234, 27, 29, 30, 97, - 0, 0, 49, 55, 0, 57, 58, 0, 0, 0, + 244, 0, 20, 220, 0, 243, 0, 0, 0, 247, + 0, 247, 0, 0, 0, 0, 0, 31, 0, 45, + 0, 188, 0, 0, 38, 0, 0, 0, 97, 0, + 0, 247, 0, 241, 23, 0, 26, 0, 28, 226, + 0, 247, 59, 46, 48, 54, 0, 52, 53, -2, + 99, 0, 0, 139, 140, 141, 142, 0, 0, 0, + 0, 178, 0, 165, 107, 0, 245, 181, 182, 183, + 184, 185, 186, 187, 166, 167, 168, 169, 171, 105, + 106, 0, 223, 224, 189, 190, 209, 97, 90, 195, + 0, 221, 222, 0, 0, 21, 228, 0, 0, 247, + 237, 231, 232, 233, 234, 235, 236, 27, 29, 30, + 97, 0, 0, 49, 55, 0, 57, 58, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, - 125, 126, 127, 128, 129, 130, 102, 0, 0, 0, - 0, 135, 0, 0, 154, 155, 156, 0, 0, 0, - 117, 0, 0, 170, 14, 0, 0, 0, 193, 201, - 0, 98, 0, 135, 0, 240, 24, 0, 236, 189, - 47, 60, 61, 63, 64, 74, 72, 0, 56, 50, - 0, 177, 100, 101, 104, 118, 0, 120, 122, 107, - 108, 0, 132, 133, 0, 0, 0, 0, 110, 112, - 0, 116, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 103, 244, 134, 0, 217, 152, 153, - 157, 158, 0, 0, 161, 0, 174, 171, 0, 211, - 0, 214, 211, 0, 209, 201, 19, 0, 0, 0, - 245, 25, 191, 0, 0, 0, 0, 0, 79, 0, - 0, 82, 0, 0, 0, 91, 75, 0, 77, 78, - 0, 73, 0, 0, 119, 121, 123, 0, 109, 111, - 113, 0, 0, 136, 159, 0, 162, 0, 172, 0, - 0, 16, 0, 213, 215, 0, 17, 208, 0, 18, - 202, 194, 195, 198, 0, 22, 193, 0, 0, 62, - 68, 0, 71, 80, 81, 83, 0, 85, 0, 87, - 88, 65, 0, 0, 0, 76, 66, 67, 51, 178, - 131, 0, 114, 160, 168, 175, 0, 0, 0, 210, - 0, 0, 197, 199, 200, 201, 192, 190, 0, 0, - 84, 86, 0, 0, 0, 115, 173, 0, 216, 203, - 196, 204, 69, 70, 0, 0, 0, 0, 13, 0, - 0, 0, 95, 0, 0, 212, 205, 0, 92, 0, - 93, 94, 0, 96, 206, + 126, 127, 128, 129, 130, 131, 132, 102, 0, 0, + 0, 0, 137, 0, 0, 156, 157, 158, 0, 0, + 0, 119, 0, 0, 172, 14, 0, 0, 0, 195, + 203, 0, 98, 0, 137, 0, 242, 24, 0, 238, + 191, 47, 60, 61, 63, 64, 74, 72, 0, 56, + 50, 0, 179, 100, 101, 104, 120, 0, 122, 124, + 108, 109, 110, 0, 134, 135, 0, 0, 0, 0, + 112, 114, 0, 118, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 103, 246, 136, 0, 219, + 154, 155, 159, 160, 0, 0, 163, 0, 176, 173, + 0, 213, 0, 216, 213, 0, 211, 203, 19, 0, + 0, 0, 247, 25, 193, 0, 0, 0, 0, 0, + 79, 0, 0, 82, 0, 0, 0, 91, 75, 0, + 77, 78, 0, 73, 0, 0, 121, 123, 125, 0, + 111, 113, 115, 0, 0, 138, 161, 0, 164, 0, + 174, 0, 0, 16, 0, 215, 217, 0, 17, 210, + 0, 18, 204, 196, 197, 200, 0, 22, 195, 0, + 0, 62, 68, 0, 71, 80, 81, 83, 0, 85, + 0, 87, 88, 65, 0, 0, 0, 76, 66, 67, + 51, 180, 133, 0, 116, 162, 170, 177, 0, 0, + 0, 212, 0, 0, 199, 201, 202, 203, 194, 192, + 0, 0, 84, 86, 0, 0, 0, 117, 175, 0, + 218, 205, 198, 206, 69, 70, 0, 0, 0, 0, + 13, 0, 0, 0, 95, 0, 0, 214, 207, 0, + 92, 0, 93, 94, 0, 96, 208, } var yyTok1 = [...]int{ @@ -998,43 +995,43 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:179 + //line ./go/vt/sqlparser/sql.y:181 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:185 + //line ./go/vt/sqlparser/sql.y:187 { yyVAL.statement = yyDollar[1].selStmt } case 13: yyDollar = yyS[yypt-12 : yypt+1] - //line sql.y:201 + //line ./go/vt/sqlparser/sql.y:203 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Distinct: yyDollar[3].str, Hints: yyDollar[4].str, SelectExprs: yyDollar[5].selectExprs, From: yyDollar[6].tableExprs, Where: NewWhere(WhereStr, yyDollar[7].boolExpr), GroupBy: GroupBy(yyDollar[8].valExprs), Having: NewWhere(HavingStr, yyDollar[9].boolExpr), OrderBy: yyDollar[10].orderBy, Limit: yyDollar[11].limit, Lock: yyDollar[12].str} } case 14: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:205 + //line ./go/vt/sqlparser/sql.y:207 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), SelectExprs: SelectExprs{Nextval{Expr: yyDollar[4].valExpr}}, From: TableExprs{&AliasedTableExpr{Expr: yyDollar[6].tableName}}} } case 15: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:209 + //line ./go/vt/sqlparser/sql.y:211 { yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt} } case 16: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:215 + //line ./go/vt/sqlparser/sql.y:217 { yyVAL.statement = &Insert{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, Table: yyDollar[5].tableName, Columns: yyDollar[6].columns, Rows: yyDollar[7].insRows, OnDup: OnDup(yyDollar[8].updateExprs)} } case 17: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:219 + //line ./go/vt/sqlparser/sql.y:221 { cols := make(Columns, 0, len(yyDollar[7].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[7].updateExprs)) @@ -1046,69 +1043,69 @@ yydefault: } case 18: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:231 + //line ./go/vt/sqlparser/sql.y:233 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Table: yyDollar[3].tableName, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].boolExpr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 19: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:237 + //line ./go/vt/sqlparser/sql.y:239 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Table: yyDollar[4].tableName, Where: NewWhere(WhereStr, yyDollar[5].boolExpr), OrderBy: yyDollar[6].orderBy, Limit: yyDollar[7].limit} } case 20: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:243 + //line ./go/vt/sqlparser/sql.y:245 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].updateExprs} } case 21: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:249 + //line ./go/vt/sqlparser/sql.y:251 { yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[4].tableIdent} } case 22: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:253 + //line ./go/vt/sqlparser/sql.y:255 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableIdent, NewName: yyDollar[7].tableIdent} } case 23: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:258 + //line ./go/vt/sqlparser/sql.y:260 { yyVAL.statement = &DDL{Action: CreateStr, NewName: NewTableIdent(yyDollar[3].colIdent.Lowered())} } case 24: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:264 + //line ./go/vt/sqlparser/sql.y:266 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableIdent, NewName: yyDollar[4].tableIdent} } case 25: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:268 + //line ./go/vt/sqlparser/sql.y:270 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableIdent, NewName: yyDollar[7].tableIdent} } case 26: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:273 + //line ./go/vt/sqlparser/sql.y:275 { yyVAL.statement = &DDL{Action: AlterStr, Table: NewTableIdent(yyDollar[3].colIdent.Lowered()), NewName: NewTableIdent(yyDollar[3].colIdent.Lowered())} } case 27: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:279 + //line ./go/vt/sqlparser/sql.y:281 { yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[3].tableIdent, NewName: yyDollar[5].tableIdent} } case 28: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:285 + //line ./go/vt/sqlparser/sql.y:287 { var exists bool if yyDollar[3].byt != 0 { @@ -1118,14 +1115,14 @@ yydefault: } case 29: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:293 + //line ./go/vt/sqlparser/sql.y:295 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableIdent, NewName: yyDollar[5].tableIdent} } case 30: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:298 + //line ./go/vt/sqlparser/sql.y:300 { var exists bool if yyDollar[3].byt != 0 { @@ -1135,326 +1132,326 @@ yydefault: } case 31: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:308 + //line ./go/vt/sqlparser/sql.y:310 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableIdent, NewName: yyDollar[3].tableIdent} } case 32: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:314 + //line ./go/vt/sqlparser/sql.y:316 { yyVAL.statement = &Other{} } case 33: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:318 + //line ./go/vt/sqlparser/sql.y:320 { yyVAL.statement = &Other{} } case 34: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:322 + //line ./go/vt/sqlparser/sql.y:324 { yyVAL.statement = &Other{} } case 35: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:327 + //line ./go/vt/sqlparser/sql.y:329 { setAllowComments(yylex, true) } case 36: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:331 + //line ./go/vt/sqlparser/sql.y:333 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } case 37: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:337 + //line ./go/vt/sqlparser/sql.y:339 { yyVAL.bytes2 = nil } case 38: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:341 + //line ./go/vt/sqlparser/sql.y:343 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } case 39: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:347 + //line ./go/vt/sqlparser/sql.y:349 { yyVAL.str = UnionStr } case 40: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:351 + //line ./go/vt/sqlparser/sql.y:353 { yyVAL.str = UnionAllStr } case 41: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:355 + //line ./go/vt/sqlparser/sql.y:357 { yyVAL.str = UnionDistinctStr } case 42: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:360 + //line ./go/vt/sqlparser/sql.y:362 { yyVAL.str = "" } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:364 + //line ./go/vt/sqlparser/sql.y:366 { yyVAL.str = DistinctStr } case 44: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:369 + //line ./go/vt/sqlparser/sql.y:371 { yyVAL.str = "" } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:373 + //line ./go/vt/sqlparser/sql.y:375 { yyVAL.str = StraightJoinHint } case 46: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:379 + //line ./go/vt/sqlparser/sql.y:381 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } case 47: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:383 + //line ./go/vt/sqlparser/sql.y:385 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } case 48: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:389 + //line ./go/vt/sqlparser/sql.y:391 { yyVAL.selectExpr = &StarExpr{} } case 49: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:393 + //line ./go/vt/sqlparser/sql.y:395 { yyVAL.selectExpr = &NonStarExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } case 50: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:397 + //line ./go/vt/sqlparser/sql.y:399 { yyVAL.selectExpr = &StarExpr{TableName: &TableName{Name: yyDollar[1].tableIdent}} } case 51: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:401 + //line ./go/vt/sqlparser/sql.y:403 { yyVAL.selectExpr = &StarExpr{TableName: &TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } case 52: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:407 + //line ./go/vt/sqlparser/sql.y:409 { yyVAL.expr = yyDollar[1].boolExpr } case 53: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:411 + //line ./go/vt/sqlparser/sql.y:413 { yyVAL.expr = yyDollar[1].valExpr } case 54: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:416 + //line ./go/vt/sqlparser/sql.y:418 { yyVAL.colIdent = ColIdent{} } case 55: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:420 + //line ./go/vt/sqlparser/sql.y:422 { yyVAL.colIdent = yyDollar[1].colIdent } case 56: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:424 + //line ./go/vt/sqlparser/sql.y:426 { yyVAL.colIdent = yyDollar[2].colIdent } case 58: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:431 + //line ./go/vt/sqlparser/sql.y:433 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 59: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:436 + //line ./go/vt/sqlparser/sql.y:438 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: &TableName{Name: NewTableIdent("dual")}}} } case 60: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:440 + //line ./go/vt/sqlparser/sql.y:442 { yyVAL.tableExprs = yyDollar[2].tableExprs } case 61: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:446 + //line ./go/vt/sqlparser/sql.y:448 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } case 62: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:450 + //line ./go/vt/sqlparser/sql.y:452 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } case 65: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:460 + //line ./go/vt/sqlparser/sql.y:462 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } case 66: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:464 + //line ./go/vt/sqlparser/sql.y:466 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } case 67: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:468 + //line ./go/vt/sqlparser/sql.y:470 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } case 68: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:481 + //line ./go/vt/sqlparser/sql.y:483 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } case 69: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:485 + //line ./go/vt/sqlparser/sql.y:487 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].boolExpr} } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:489 + //line ./go/vt/sqlparser/sql.y:491 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].boolExpr} } case 71: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:493 + //line ./go/vt/sqlparser/sql.y:495 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } case 72: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:498 + //line ./go/vt/sqlparser/sql.y:500 { yyVAL.empty = struct{}{} } case 73: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:500 + //line ./go/vt/sqlparser/sql.y:502 { yyVAL.empty = struct{}{} } case 74: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:503 + //line ./go/vt/sqlparser/sql.y:505 { yyVAL.tableIdent = NewTableIdent("") } case 75: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:507 + //line ./go/vt/sqlparser/sql.y:509 { yyVAL.tableIdent = yyDollar[1].tableIdent } case 76: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:511 + //line ./go/vt/sqlparser/sql.y:513 { yyVAL.tableIdent = yyDollar[2].tableIdent } case 78: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:518 + //line ./go/vt/sqlparser/sql.y:520 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:524 + //line ./go/vt/sqlparser/sql.y:526 { yyVAL.str = JoinStr } case 80: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:528 + //line ./go/vt/sqlparser/sql.y:530 { yyVAL.str = JoinStr } case 81: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:532 + //line ./go/vt/sqlparser/sql.y:534 { yyVAL.str = JoinStr } case 82: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:536 + //line ./go/vt/sqlparser/sql.y:538 { yyVAL.str = StraightJoinStr } case 83: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:542 + //line ./go/vt/sqlparser/sql.y:544 { yyVAL.str = LeftJoinStr } case 84: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:546 + //line ./go/vt/sqlparser/sql.y:548 { yyVAL.str = LeftJoinStr } case 85: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:550 + //line ./go/vt/sqlparser/sql.y:552 { yyVAL.str = RightJoinStr } case 86: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:554 + //line ./go/vt/sqlparser/sql.y:556 { yyVAL.str = RightJoinStr } case 87: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:560 + //line ./go/vt/sqlparser/sql.y:562 { yyVAL.str = NaturalJoinStr } case 88: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:564 + //line ./go/vt/sqlparser/sql.y:566 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -1464,391 +1461,403 @@ yydefault: } case 89: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:574 + //line ./go/vt/sqlparser/sql.y:576 { yyVAL.tableName = &TableName{Name: yyDollar[1].tableIdent} } case 90: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:578 + //line ./go/vt/sqlparser/sql.y:580 { yyVAL.tableName = &TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:583 + //line ./go/vt/sqlparser/sql.y:585 { yyVAL.indexHints = nil } case 92: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:587 + //line ./go/vt/sqlparser/sql.y:589 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].colIdents} } case 93: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:591 + //line ./go/vt/sqlparser/sql.y:593 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].colIdents} } case 94: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:595 + //line ./go/vt/sqlparser/sql.y:597 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].colIdents} } case 95: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:601 + //line ./go/vt/sqlparser/sql.y:603 { yyVAL.colIdents = []ColIdent{yyDollar[1].colIdent} } case 96: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:605 + //line ./go/vt/sqlparser/sql.y:607 { yyVAL.colIdents = append(yyDollar[1].colIdents, yyDollar[3].colIdent) } case 97: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:610 + //line ./go/vt/sqlparser/sql.y:612 { yyVAL.boolExpr = nil } case 98: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:614 + //line ./go/vt/sqlparser/sql.y:616 { yyVAL.boolExpr = yyDollar[2].boolExpr } case 100: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:621 + //line ./go/vt/sqlparser/sql.y:623 { yyVAL.boolExpr = &AndExpr{Left: yyDollar[1].boolExpr, Right: yyDollar[3].boolExpr} } case 101: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:625 + //line ./go/vt/sqlparser/sql.y:627 { yyVAL.boolExpr = &OrExpr{Left: yyDollar[1].boolExpr, Right: yyDollar[3].boolExpr} } case 102: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:629 + //line ./go/vt/sqlparser/sql.y:631 { yyVAL.boolExpr = &NotExpr{Expr: yyDollar[2].boolExpr} } case 103: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:633 + //line ./go/vt/sqlparser/sql.y:635 { yyVAL.boolExpr = &ParenBoolExpr{Expr: yyDollar[2].boolExpr} } case 104: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:637 + //line ./go/vt/sqlparser/sql.y:639 { yyVAL.boolExpr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].boolExpr} } case 105: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:643 + //line ./go/vt/sqlparser/sql.y:645 { - yyVAL.boolExpr = BoolVal(true) + yyVAL.boolVal = BoolVal(true) } case 106: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:647 + //line ./go/vt/sqlparser/sql.y:649 { - yyVAL.boolExpr = BoolVal(false) + yyVAL.boolVal = BoolVal(false) } case 107: + yyDollar = yyS[yypt-1 : yypt+1] + //line ./go/vt/sqlparser/sql.y:655 + { + yyVAL.boolExpr = yyDollar[1].boolVal + } + case 108: + yyDollar = yyS[yypt-3 : yypt+1] + //line ./go/vt/sqlparser/sql.y:659 + { + yyVAL.boolExpr = &ComparisonExpr{Left: yyDollar[1].valExpr, Operator: yyDollar[2].str, Right: yyDollar[3].boolVal} + } + case 109: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:651 + //line ./go/vt/sqlparser/sql.y:663 { yyVAL.boolExpr = &ComparisonExpr{Left: yyDollar[1].valExpr, Operator: yyDollar[2].str, Right: yyDollar[3].valExpr} } - case 108: + case 110: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:655 + //line ./go/vt/sqlparser/sql.y:667 { yyVAL.boolExpr = &ComparisonExpr{Left: yyDollar[1].valExpr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 109: + case 111: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:659 + //line ./go/vt/sqlparser/sql.y:671 { yyVAL.boolExpr = &ComparisonExpr{Left: yyDollar[1].valExpr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 110: + case 112: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:663 + //line ./go/vt/sqlparser/sql.y:675 { yyVAL.boolExpr = &ComparisonExpr{Left: yyDollar[1].valExpr, Operator: LikeStr, Right: yyDollar[3].valExpr} } - case 111: + case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:667 + //line ./go/vt/sqlparser/sql.y:679 { yyVAL.boolExpr = &ComparisonExpr{Left: yyDollar[1].valExpr, Operator: NotLikeStr, Right: yyDollar[4].valExpr} } - case 112: + case 114: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:671 + //line ./go/vt/sqlparser/sql.y:683 { yyVAL.boolExpr = &ComparisonExpr{Left: yyDollar[1].valExpr, Operator: RegexpStr, Right: yyDollar[3].valExpr} } - case 113: + case 115: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:675 + //line ./go/vt/sqlparser/sql.y:687 { yyVAL.boolExpr = &ComparisonExpr{Left: yyDollar[1].valExpr, Operator: NotRegexpStr, Right: yyDollar[4].valExpr} } - case 114: + case 116: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:679 + //line ./go/vt/sqlparser/sql.y:691 { yyVAL.boolExpr = &RangeCond{Left: yyDollar[1].valExpr, Operator: BetweenStr, From: yyDollar[3].valExpr, To: yyDollar[5].valExpr} } - case 115: + case 117: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:683 + //line ./go/vt/sqlparser/sql.y:695 { yyVAL.boolExpr = &RangeCond{Left: yyDollar[1].valExpr, Operator: NotBetweenStr, From: yyDollar[4].valExpr, To: yyDollar[6].valExpr} } - case 116: + case 118: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:687 + //line ./go/vt/sqlparser/sql.y:699 { yyVAL.boolExpr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].valExpr} } - case 117: + case 119: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:691 + //line ./go/vt/sqlparser/sql.y:703 { yyVAL.boolExpr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 118: + case 120: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:697 + //line ./go/vt/sqlparser/sql.y:709 { yyVAL.str = IsNullStr } - case 119: + case 121: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:701 + //line ./go/vt/sqlparser/sql.y:713 { yyVAL.str = IsNotNullStr } - case 120: + case 122: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:705 + //line ./go/vt/sqlparser/sql.y:717 { yyVAL.str = IsTrueStr } - case 121: + case 123: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:709 + //line ./go/vt/sqlparser/sql.y:721 { yyVAL.str = IsNotTrueStr } - case 122: + case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:713 + //line ./go/vt/sqlparser/sql.y:725 { yyVAL.str = IsFalseStr } - case 123: + case 125: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:717 + //line ./go/vt/sqlparser/sql.y:729 { yyVAL.str = IsNotFalseStr } - case 124: + case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:723 + //line ./go/vt/sqlparser/sql.y:735 { yyVAL.str = EqualStr } - case 125: + case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:727 + //line ./go/vt/sqlparser/sql.y:739 { yyVAL.str = LessThanStr } - case 126: + case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:731 + //line ./go/vt/sqlparser/sql.y:743 { yyVAL.str = GreaterThanStr } - case 127: + case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:735 + //line ./go/vt/sqlparser/sql.y:747 { yyVAL.str = LessEqualStr } - case 128: + case 130: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:739 + //line ./go/vt/sqlparser/sql.y:751 { yyVAL.str = GreaterEqualStr } - case 129: + case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:743 + //line ./go/vt/sqlparser/sql.y:755 { yyVAL.str = NotEqualStr } - case 130: + case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:747 + //line ./go/vt/sqlparser/sql.y:759 { yyVAL.str = NullSafeEqualStr } - case 131: + case 133: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:753 + //line ./go/vt/sqlparser/sql.y:765 { yyVAL.colTuple = ValTuple(yyDollar[2].valExprs) } - case 132: + case 134: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:757 + //line ./go/vt/sqlparser/sql.y:769 { yyVAL.colTuple = yyDollar[1].subquery } - case 133: + case 135: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:761 + //line ./go/vt/sqlparser/sql.y:773 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 134: + case 136: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:767 + //line ./go/vt/sqlparser/sql.y:779 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 135: + case 137: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:773 + //line ./go/vt/sqlparser/sql.y:785 { yyVAL.valExprs = ValExprs{yyDollar[1].valExpr} } - case 136: + case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:777 + //line ./go/vt/sqlparser/sql.y:789 { yyVAL.valExprs = append(yyDollar[1].valExprs, yyDollar[3].valExpr) } - case 137: + case 139: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:783 + //line ./go/vt/sqlparser/sql.y:795 { yyVAL.valExpr = yyDollar[1].valExpr } - case 138: + case 140: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:787 + //line ./go/vt/sqlparser/sql.y:799 { yyVAL.valExpr = yyDollar[1].colName } - case 139: + case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:791 + //line ./go/vt/sqlparser/sql.y:803 { yyVAL.valExpr = yyDollar[1].valTuple } - case 140: + case 142: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:795 + //line ./go/vt/sqlparser/sql.y:807 { yyVAL.valExpr = yyDollar[1].subquery } - case 141: + case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:799 + //line ./go/vt/sqlparser/sql.y:811 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: BitAndStr, Right: yyDollar[3].valExpr} } - case 142: + case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:803 + //line ./go/vt/sqlparser/sql.y:815 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: BitOrStr, Right: yyDollar[3].valExpr} } - case 143: + case 145: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:807 + //line ./go/vt/sqlparser/sql.y:819 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: BitXorStr, Right: yyDollar[3].valExpr} } - case 144: + case 146: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:811 + //line ./go/vt/sqlparser/sql.y:823 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: PlusStr, Right: yyDollar[3].valExpr} } - case 145: + case 147: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:815 + //line ./go/vt/sqlparser/sql.y:827 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: MinusStr, Right: yyDollar[3].valExpr} } - case 146: + case 148: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:819 + //line ./go/vt/sqlparser/sql.y:831 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: MultStr, Right: yyDollar[3].valExpr} } - case 147: + case 149: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:823 + //line ./go/vt/sqlparser/sql.y:835 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: DivStr, Right: yyDollar[3].valExpr} } - case 148: + case 150: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:827 + //line ./go/vt/sqlparser/sql.y:839 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: ModStr, Right: yyDollar[3].valExpr} } - case 149: + case 151: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:831 + //line ./go/vt/sqlparser/sql.y:843 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: ModStr, Right: yyDollar[3].valExpr} } - case 150: + case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:835 + //line ./go/vt/sqlparser/sql.y:847 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: ShiftLeftStr, Right: yyDollar[3].valExpr} } - case 151: + case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:839 + //line ./go/vt/sqlparser/sql.y:851 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].valExpr, Operator: ShiftRightStr, Right: yyDollar[3].valExpr} } - case 152: + case 154: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:843 + //line ./go/vt/sqlparser/sql.y:855 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].valExpr} } - case 153: + case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:847 + //line ./go/vt/sqlparser/sql.y:859 { yyVAL.valExpr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].valExpr} } - case 154: + case 156: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:851 + //line ./go/vt/sqlparser/sql.y:863 { if num, ok := yyDollar[2].valExpr.(*SQLVal); ok && num.Type == IntVal { yyVAL.valExpr = num @@ -1856,9 +1865,9 @@ yydefault: yyVAL.valExpr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].valExpr} } } - case 155: + case 157: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:859 + //line ./go/vt/sqlparser/sql.y:871 { if num, ok := yyDollar[2].valExpr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -1872,15 +1881,15 @@ yydefault: yyVAL.valExpr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].valExpr} } } - case 156: + case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:873 + //line ./go/vt/sqlparser/sql.y:885 { yyVAL.valExpr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].valExpr} } - case 157: + case 159: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:877 + //line ./go/vt/sqlparser/sql.y:889 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -1888,177 +1897,177 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.valExpr = &IntervalExpr{Expr: yyDollar[2].valExpr, Unit: yyDollar[3].colIdent} } - case 158: + case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:885 + //line ./go/vt/sqlparser/sql.y:897 { yyVAL.valExpr = &FuncExpr{Name: yyDollar[1].colIdent} } - case 159: + case 161: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:889 + //line ./go/vt/sqlparser/sql.y:901 { yyVAL.valExpr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 160: + case 162: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:893 + //line ./go/vt/sqlparser/sql.y:905 { yyVAL.valExpr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 161: + case 163: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:897 + //line ./go/vt/sqlparser/sql.y:909 { yyVAL.valExpr = &FuncExpr{Name: yyDollar[1].colIdent} } - case 162: + case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:901 + //line ./go/vt/sqlparser/sql.y:913 { yyVAL.valExpr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 163: + case 165: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:905 + //line ./go/vt/sqlparser/sql.y:917 { yyVAL.valExpr = yyDollar[1].caseExpr } - case 164: + case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:911 + //line ./go/vt/sqlparser/sql.y:923 { yyVAL.colIdent = NewColIdent("if") } - case 165: + case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:915 + //line ./go/vt/sqlparser/sql.y:927 { yyVAL.colIdent = NewColIdent("current_timestamp") } - case 166: + case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:919 + //line ./go/vt/sqlparser/sql.y:931 { yyVAL.colIdent = NewColIdent("database") } - case 167: + case 169: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:923 + //line ./go/vt/sqlparser/sql.y:935 { yyVAL.colIdent = NewColIdent("mod") } - case 168: + case 170: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:929 + //line ./go/vt/sqlparser/sql.y:941 { yyVAL.caseExpr = &CaseExpr{Expr: yyDollar[2].valExpr, Whens: yyDollar[3].whens, Else: yyDollar[4].valExpr} } - case 169: + case 171: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:934 + //line ./go/vt/sqlparser/sql.y:946 { yyVAL.valExpr = nil } - case 170: + case 172: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:938 + //line ./go/vt/sqlparser/sql.y:950 { yyVAL.valExpr = yyDollar[1].valExpr } - case 171: + case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:944 + //line ./go/vt/sqlparser/sql.y:956 { yyVAL.whens = []*When{yyDollar[1].when} } - case 172: + case 174: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:948 + //line ./go/vt/sqlparser/sql.y:960 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 173: + case 175: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:954 + //line ./go/vt/sqlparser/sql.y:966 { yyVAL.when = &When{Cond: yyDollar[2].boolExpr, Val: yyDollar[4].valExpr} } - case 174: + case 176: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:959 + //line ./go/vt/sqlparser/sql.y:971 { yyVAL.valExpr = nil } - case 175: + case 177: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:963 + //line ./go/vt/sqlparser/sql.y:975 { yyVAL.valExpr = yyDollar[2].valExpr } - case 176: + case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:969 + //line ./go/vt/sqlparser/sql.y:981 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 177: + case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:973 + //line ./go/vt/sqlparser/sql.y:985 { yyVAL.colName = &ColName{Qualifier: &TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 178: + case 180: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:977 + //line ./go/vt/sqlparser/sql.y:989 { yyVAL.colName = &ColName{Qualifier: &TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 179: + case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:983 + //line ./go/vt/sqlparser/sql.y:995 { yyVAL.valExpr = NewStrVal(yyDollar[1].bytes) } - case 180: + case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:987 + //line ./go/vt/sqlparser/sql.y:999 { yyVAL.valExpr = NewHexVal(yyDollar[1].bytes) } - case 181: + case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:991 + //line ./go/vt/sqlparser/sql.y:1003 { yyVAL.valExpr = NewIntVal(yyDollar[1].bytes) } - case 182: + case 184: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:995 + //line ./go/vt/sqlparser/sql.y:1007 { yyVAL.valExpr = NewFloatVal(yyDollar[1].bytes) } - case 183: + case 185: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:999 + //line ./go/vt/sqlparser/sql.y:1011 { yyVAL.valExpr = NewHexNum(yyDollar[1].bytes) } - case 184: + case 186: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1003 + //line ./go/vt/sqlparser/sql.y:1015 { yyVAL.valExpr = NewValArg(yyDollar[1].bytes) } - case 185: + case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1007 + //line ./go/vt/sqlparser/sql.y:1019 { yyVAL.valExpr = &NullVal{} } - case 186: + case 188: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1013 + //line ./go/vt/sqlparser/sql.y:1025 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -2067,123 +2076,123 @@ yydefault: } yyVAL.valExpr = NewIntVal([]byte("1")) } - case 187: + case 189: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1022 + //line ./go/vt/sqlparser/sql.y:1034 { yyVAL.valExpr = NewIntVal(yyDollar[1].bytes) } - case 188: + case 190: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1026 + //line ./go/vt/sqlparser/sql.y:1038 { yyVAL.valExpr = NewValArg(yyDollar[1].bytes) } - case 189: + case 191: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1031 + //line ./go/vt/sqlparser/sql.y:1043 { yyVAL.valExprs = nil } - case 190: + case 192: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1035 + //line ./go/vt/sqlparser/sql.y:1047 { yyVAL.valExprs = yyDollar[3].valExprs } - case 191: + case 193: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1040 + //line ./go/vt/sqlparser/sql.y:1052 { yyVAL.boolExpr = nil } - case 192: + case 194: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1044 + //line ./go/vt/sqlparser/sql.y:1056 { yyVAL.boolExpr = yyDollar[2].boolExpr } - case 193: + case 195: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1049 + //line ./go/vt/sqlparser/sql.y:1061 { yyVAL.orderBy = nil } - case 194: + case 196: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1053 + //line ./go/vt/sqlparser/sql.y:1065 { yyVAL.orderBy = yyDollar[3].orderBy } - case 195: + case 197: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1059 + //line ./go/vt/sqlparser/sql.y:1071 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 196: + case 198: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1063 + //line ./go/vt/sqlparser/sql.y:1075 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 197: + case 199: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1069 + //line ./go/vt/sqlparser/sql.y:1081 { yyVAL.order = &Order{Expr: yyDollar[1].valExpr, Direction: yyDollar[2].str} } - case 198: + case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1074 + //line ./go/vt/sqlparser/sql.y:1086 { yyVAL.str = AscScr } - case 199: + case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1078 + //line ./go/vt/sqlparser/sql.y:1090 { yyVAL.str = AscScr } - case 200: + case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1082 + //line ./go/vt/sqlparser/sql.y:1094 { yyVAL.str = DescScr } - case 201: + case 203: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1087 + //line ./go/vt/sqlparser/sql.y:1099 { yyVAL.limit = nil } - case 202: + case 204: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1091 + //line ./go/vt/sqlparser/sql.y:1103 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].valExpr} } - case 203: + case 205: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1095 + //line ./go/vt/sqlparser/sql.y:1107 { yyVAL.limit = &Limit{Offset: yyDollar[2].valExpr, Rowcount: yyDollar[4].valExpr} } - case 204: + case 206: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1100 + //line ./go/vt/sqlparser/sql.y:1112 { yyVAL.str = "" } - case 205: + case 207: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1104 + //line ./go/vt/sqlparser/sql.y:1116 { yyVAL.str = ForUpdateStr } - case 206: + case 208: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1108 + //line ./go/vt/sqlparser/sql.y:1120 { if yyDollar[3].colIdent.Lowered() != "share" { yylex.Error("expecting share") @@ -2195,228 +2204,228 @@ yydefault: } yyVAL.str = ShareModeStr } - case 207: + case 209: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1121 + //line ./go/vt/sqlparser/sql.y:1133 { yyVAL.columns = nil } - case 208: + case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1125 + //line ./go/vt/sqlparser/sql.y:1137 { yyVAL.columns = yyDollar[2].columns } - case 209: + case 211: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1131 + //line ./go/vt/sqlparser/sql.y:1143 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 210: + case 212: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1135 + //line ./go/vt/sqlparser/sql.y:1147 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 211: + case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1140 + //line ./go/vt/sqlparser/sql.y:1152 { yyVAL.updateExprs = nil } - case 212: + case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1144 + //line ./go/vt/sqlparser/sql.y:1156 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 213: + case 215: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1150 + //line ./go/vt/sqlparser/sql.y:1162 { yyVAL.insRows = yyDollar[2].values } - case 214: + case 216: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1154 + //line ./go/vt/sqlparser/sql.y:1166 { yyVAL.insRows = yyDollar[1].selStmt } - case 215: + case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1160 + //line ./go/vt/sqlparser/sql.y:1172 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 216: + case 218: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1164 + //line ./go/vt/sqlparser/sql.y:1176 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 217: + case 219: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1170 + //line ./go/vt/sqlparser/sql.y:1182 { yyVAL.valTuple = ValTuple(yyDollar[2].valExprs) } - case 218: + case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1176 + //line ./go/vt/sqlparser/sql.y:1188 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 219: + case 221: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1180 + //line ./go/vt/sqlparser/sql.y:1192 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 220: + case 222: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1186 + //line ./go/vt/sqlparser/sql.y:1198 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].valExpr} } - case 223: + case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1195 + //line ./go/vt/sqlparser/sql.y:1207 { yyVAL.byt = 0 } - case 224: + case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1197 + //line ./go/vt/sqlparser/sql.y:1209 { yyVAL.byt = 1 } - case 225: + case 227: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1200 + //line ./go/vt/sqlparser/sql.y:1212 { yyVAL.empty = struct{}{} } - case 226: + case 228: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1202 + //line ./go/vt/sqlparser/sql.y:1214 { yyVAL.empty = struct{}{} } - case 227: + case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1205 + //line ./go/vt/sqlparser/sql.y:1217 { yyVAL.str = "" } - case 228: - yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1207 - { - yyVAL.str = IgnoreStr - } - case 229: - yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1211 - { - yyVAL.empty = struct{}{} - } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1213 + //line ./go/vt/sqlparser/sql.y:1219 { - yyVAL.empty = struct{}{} + yyVAL.str = IgnoreStr } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1215 + //line ./go/vt/sqlparser/sql.y:1223 { yyVAL.empty = struct{}{} } case 232: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1217 + //line ./go/vt/sqlparser/sql.y:1225 { yyVAL.empty = struct{}{} } case 233: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1219 + //line ./go/vt/sqlparser/sql.y:1227 { yyVAL.empty = struct{}{} } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1221 + //line ./go/vt/sqlparser/sql.y:1229 { yyVAL.empty = struct{}{} } case 235: - yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1224 + yyDollar = yyS[yypt-1 : yypt+1] + //line ./go/vt/sqlparser/sql.y:1231 { yyVAL.empty = struct{}{} } case 236: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1226 + //line ./go/vt/sqlparser/sql.y:1233 { yyVAL.empty = struct{}{} } case 237: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1229 + //line ./go/vt/sqlparser/sql.y:1236 { yyVAL.empty = struct{}{} } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1231 + //line ./go/vt/sqlparser/sql.y:1238 { yyVAL.empty = struct{}{} } case 239: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1234 + //line ./go/vt/sqlparser/sql.y:1241 { yyVAL.empty = struct{}{} } case 240: - yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1236 + yyDollar = yyS[yypt-1 : yypt+1] + //line ./go/vt/sqlparser/sql.y:1243 { yyVAL.empty = struct{}{} } case 241: + yyDollar = yyS[yypt-0 : yypt+1] + //line ./go/vt/sqlparser/sql.y:1246 + { + yyVAL.empty = struct{}{} + } + case 242: + yyDollar = yyS[yypt-2 : yypt+1] + //line ./go/vt/sqlparser/sql.y:1248 + { + yyVAL.empty = struct{}{} + } + case 243: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1240 + //line ./go/vt/sqlparser/sql.y:1252 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 242: + case 244: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1246 + //line ./go/vt/sqlparser/sql.y:1258 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 243: + case 245: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1252 + //line ./go/vt/sqlparser/sql.y:1264 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 244: + case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1261 + //line ./go/vt/sqlparser/sql.y:1273 { decNesting(yylex) } - case 245: + case 247: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1266 + //line ./go/vt/sqlparser/sql.y:1278 { forceEOF(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 2a9b7af962e..ccf32d1c652 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -49,6 +49,7 @@ func forceEOF(yylex interface{}) { indexHints *IndexHints expr Expr boolExpr BoolExpr + boolVal BoolVal valExpr ValExpr colTuple ColTuple valExprs ValExprs @@ -135,6 +136,7 @@ func forceEOF(yylex interface{}) { %type index_list %type where_expression_opt %type boolean_expression condition +%type boolean_value %type compare %type row_list %type value value_expression num_val @@ -638,7 +640,7 @@ boolean_expression: $$ = &IsExpr{Operator: $3, Expr: $1} } -condition: +boolean_value: TRUE { $$ = BoolVal(true) @@ -647,6 +649,16 @@ condition: { $$ = BoolVal(false) } + +condition: + boolean_value + { + $$ = $1 + } +| value_expression compare boolean_value + { + $$ = &ComparisonExpr{Left: $1, Operator: $2, Right: $3} + } | value_expression compare value_expression { $$ = &ComparisonExpr{Left: $1, Operator: $2, Right: $3}