Support Multiple Tuple Inserts

Update Fetch
diff --git a/parser/ParseStatement.hpp b/parser/ParseStatement.hpp
index cee7221..456bdc2 100644
--- a/parser/ParseStatement.hpp
+++ b/parser/ParseStatement.hpp
@@ -653,9 +653,9 @@
   ParseStatementInsertTuple(const int line_number,
                             const int column_number,
                             const ParseString *relation_name,
-                            PtrList<ParseScalarLiteral> *literal_values)
+                            PtrList<PtrList<ParseScalarLiteral>> *literal_values_list)
       : ParseStatementInsert(line_number, column_number, relation_name),
-        literal_values_(literal_values) {
+        literal_values_(literal_values_list) {
   }
 
   ~ParseStatementInsertTuple() override {
@@ -666,11 +666,11 @@
   }
 
   /**
-   * @brief Get the parsed literal attribute values to insert.
+   * @brief Get the list of list of parsed literal attribute values to insert.
    *
-   * @return The list of literal values to insert.
+   * @return The list of lists of literal values to insert.
    **/
-  const PtrList<ParseScalarLiteral>& getLiteralValues() const {
+  const PtrList<PtrList<ParseScalarLiteral>>& getLiteralValues() const {
     return *literal_values_;
   }
 
@@ -685,15 +685,17 @@
     inline_field_names->push_back("relation_name");
     inline_field_values->push_back(relation_name()->value());
 
-    container_child_field_names->push_back("tuple");
-    container_child_fields->emplace_back();
-    for (const ParseScalarLiteral& literal_value : *literal_values_) {
-      container_child_fields->back().push_back(&literal_value);
+    for (const PtrList<ParseScalarLiteral>& literal_values_single_tuple : *literal_values_) {
+      container_child_field_names->push_back("tuple");
+      container_child_fields->emplace_back();
+      for (const ParseScalarLiteral& literal_value : literal_values_single_tuple) {
+        container_child_fields->back().push_back(&literal_value);
+      }
     }
   }
 
  private:
-  std::unique_ptr<PtrList<ParseScalarLiteral> > literal_values_;
+  std::unique_ptr<PtrList<PtrList<ParseScalarLiteral>>> literal_values_;
 
   DISALLOW_COPY_AND_ASSIGN(ParseStatementInsertTuple);
 };
diff --git a/parser/SqlParser.ypp b/parser/SqlParser.ypp
index 8fbcdd7..ba69b3d 100644
--- a/parser/SqlParser.ypp
+++ b/parser/SqlParser.ypp
@@ -128,6 +128,7 @@
   quickstep::NumericParseLiteralValue *numeric_literal_value_;
   quickstep::ParseLiteralValue *literal_value_;
   quickstep::PtrList<quickstep::ParseScalarLiteral> *literal_value_list_;
+  quickstep::PtrList<quickstep::PtrList<quickstep::ParseScalarLiteral>> *literal_value_list_multiple_;
 
   quickstep::ParseExpression *expression_;
 
@@ -387,6 +388,9 @@
 %type <literal_value_list_>
   literal_value_commalist
 
+%type <literal_value_list_multiple_>
+  literal_value_commalist_multiple
+
 %type <expression_>
   expression_base
   unary_expression
@@ -1101,8 +1105,8 @@
     NotSupported(&@4, yyscanner, "list of column names in INSERT statement");
     YYERROR;
   }
-  | TOKEN_INSERT TOKEN_INTO any_name TOKEN_VALUES '(' literal_value_commalist ')' {
-    $$ = new quickstep::ParseStatementInsertTuple(@1.first_line, @1.first_column, $3, $6);
+  | TOKEN_INSERT TOKEN_INTO any_name TOKEN_VALUES literal_value_commalist_multiple {
+    $$ = new quickstep::ParseStatementInsertTuple(@1.first_line, @1.first_column, $3, $5);
   }
   | TOKEN_INSERT TOKEN_INTO any_name select_query {
     $$ = new quickstep::ParseStatementInsertSelection(@1.first_line, @2.first_column, $3, $4, nullptr);
@@ -1921,6 +1925,16 @@
     $$->push_back(new quickstep::ParseScalarLiteral($3));
   };
 
+literal_value_commalist_multiple:
+  '(' literal_value_commalist ')' {
+    $$ = new quickstep::PtrList<quickstep::PtrList<quickstep::ParseScalarLiteral>>();
+    $$->push_back($2);
+  }
+  | literal_value_commalist_multiple ',' '(' literal_value_commalist ')' {
+    $$ = $1;
+    $$->push_back($4);
+  };
+
 attribute_ref:
   any_name {
     $$ = new quickstep::ParseAttribute(@1.first_line, @1.first_column, $1);
diff --git a/parser/preprocessed/SqlParser_gen.cpp b/parser/preprocessed/SqlParser_gen.cpp
index 72c61dd..9b77875 100644
--- a/parser/preprocessed/SqlParser_gen.cpp
+++ b/parser/preprocessed/SqlParser_gen.cpp
@@ -341,6 +341,7 @@
   quickstep::NumericParseLiteralValue *numeric_literal_value_;
   quickstep::ParseLiteralValue *literal_value_;
   quickstep::PtrList<quickstep::ParseScalarLiteral> *literal_value_list_;
+  quickstep::PtrList<quickstep::PtrList<quickstep::ParseScalarLiteral>> *literal_value_list_multiple_;
 
   quickstep::ParseExpression *expression_;
 
@@ -431,7 +432,7 @@
 
   quickstep::ParsePriority *opt_priority_clause_;
 
-#line 435 "SqlParser_gen.cpp" /* yacc.c:355  */
+#line 436 "SqlParser_gen.cpp" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -460,13 +461,13 @@
 #endif /* !YY_QUICKSTEP_YY_SQLPARSER_GEN_HPP_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
-#line 222 "../SqlParser.ypp" /* yacc.c:358  */
+#line 223 "../SqlParser.ypp" /* yacc.c:358  */
 
 /* This header needs YYSTYPE, which is defined by the %union directive above */
 #include "SqlLexer_gen.hpp"
 void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string &feature);
 
-#line 470 "SqlParser_gen.cpp" /* yacc.c:358  */
+#line 471 "SqlParser_gen.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -710,16 +711,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  50
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1391
+#define YYLAST   1327
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  148
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  110
+#define YYNNTS  111
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  298
+#define YYNRULES  300
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  550
+#define YYNSTATES  555
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -779,36 +780,37 @@
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   640,   640,   644,   648,   652,   656,   659,   666,   669,
-     672,   675,   678,   681,   684,   687,   690,   693,   699,   705,
-     712,   718,   725,   734,   739,   748,   753,   758,   762,   768,
-     773,   776,   779,   784,   787,   790,   793,   796,   799,   802,
-     805,   808,   811,   823,   826,   829,   847,   867,   870,   873,
-     878,   883,   889,   895,   904,   908,   914,   917,   922,   927,
-     932,   939,   946,   950,   956,   959,   964,   967,   972,   975,
-     980,   983,  1002,  1005,  1010,  1014,  1020,  1023,  1026,  1029,
-    1034,  1037,  1040,  1047,  1052,  1063,  1068,  1073,  1077,  1081,
-    1087,  1090,  1096,  1104,  1107,  1110,  1116,  1121,  1126,  1130,
-    1136,  1140,  1143,  1148,  1151,  1156,  1161,  1166,  1170,  1176,
-    1185,  1188,  1193,  1196,  1215,  1220,  1224,  1230,  1236,  1245,
-    1250,  1258,  1264,  1270,  1273,  1276,  1281,  1284,  1289,  1293,
-    1299,  1302,  1305,  1310,  1315,  1320,  1323,  1326,  1331,  1334,
-    1337,  1340,  1343,  1346,  1349,  1352,  1357,  1360,  1365,  1369,
-    1373,  1376,  1380,  1383,  1388,  1391,  1396,  1399,  1404,  1408,
-    1414,  1417,  1422,  1425,  1430,  1433,  1438,  1441,  1460,  1463,
-    1468,  1472,  1478,  1484,  1489,  1492,  1497,  1500,  1505,  1508,
-    1513,  1516,  1521,  1522,  1525,  1530,  1531,  1534,  1539,  1543,
-    1549,  1556,  1559,  1562,  1567,  1570,  1573,  1579,  1582,  1587,
-    1592,  1601,  1606,  1615,  1620,  1623,  1628,  1631,  1636,  1642,
-    1648,  1651,  1654,  1657,  1660,  1663,  1669,  1678,  1681,  1686,
-    1689,  1694,  1697,  1702,  1705,  1708,  1711,  1715,  1719,  1722,
-    1725,  1728,  1731,  1736,  1740,  1744,  1747,  1752,  1757,  1761,
-    1767,  1770,  1775,  1779,  1785,  1790,  1794,  1800,  1805,  1808,
-    1813,  1817,  1823,  1826,  1829,  1832,  1844,  1848,  1867,  1880,
-    1895,  1898,  1901,  1904,  1907,  1910,  1915,  1919,  1925,  1928,
-    1933,  1937,  1944,  1947,  1950,  1953,  1956,  1959,  1962,  1965,
-    1968,  1971,  1976,  1987,  1990,  1995,  1998,  2001,  2007,  2011,
-    2017,  2020,  2028,  2031,  2034,  2037,  2043,  2048,  2053
+       0,   644,   644,   648,   652,   656,   660,   663,   670,   673,
+     676,   679,   682,   685,   688,   691,   694,   697,   703,   709,
+     716,   722,   729,   738,   743,   752,   757,   762,   766,   772,
+     777,   780,   783,   788,   791,   794,   797,   800,   803,   806,
+     809,   812,   815,   827,   830,   833,   851,   871,   874,   877,
+     882,   887,   893,   899,   908,   912,   918,   921,   926,   931,
+     936,   943,   950,   954,   960,   963,   968,   971,   976,   979,
+     984,   987,  1006,  1009,  1014,  1018,  1024,  1027,  1030,  1033,
+    1038,  1041,  1044,  1051,  1056,  1067,  1072,  1077,  1081,  1085,
+    1091,  1094,  1100,  1108,  1111,  1114,  1120,  1125,  1130,  1134,
+    1140,  1144,  1147,  1152,  1155,  1160,  1165,  1170,  1174,  1180,
+    1189,  1192,  1197,  1200,  1219,  1224,  1228,  1234,  1240,  1249,
+    1254,  1262,  1268,  1274,  1277,  1280,  1285,  1288,  1293,  1297,
+    1303,  1306,  1309,  1314,  1319,  1324,  1327,  1330,  1335,  1338,
+    1341,  1344,  1347,  1350,  1353,  1356,  1361,  1364,  1369,  1373,
+    1377,  1380,  1384,  1387,  1392,  1395,  1400,  1403,  1408,  1412,
+    1418,  1421,  1426,  1429,  1434,  1437,  1442,  1445,  1464,  1467,
+    1472,  1476,  1482,  1488,  1493,  1496,  1501,  1504,  1509,  1512,
+    1517,  1520,  1525,  1526,  1529,  1534,  1535,  1538,  1543,  1547,
+    1553,  1560,  1563,  1566,  1571,  1574,  1577,  1583,  1586,  1591,
+    1596,  1605,  1610,  1619,  1624,  1627,  1632,  1635,  1640,  1646,
+    1652,  1655,  1658,  1661,  1664,  1667,  1673,  1682,  1685,  1690,
+    1693,  1698,  1701,  1706,  1709,  1712,  1715,  1719,  1723,  1726,
+    1729,  1732,  1735,  1740,  1744,  1748,  1751,  1756,  1761,  1765,
+    1771,  1774,  1779,  1783,  1789,  1794,  1798,  1804,  1809,  1812,
+    1817,  1821,  1827,  1830,  1833,  1836,  1848,  1852,  1871,  1884,
+    1899,  1902,  1905,  1908,  1911,  1914,  1919,  1923,  1929,  1933,
+    1939,  1942,  1947,  1951,  1958,  1961,  1964,  1967,  1970,  1973,
+    1976,  1979,  1982,  1985,  1990,  2001,  2004,  2009,  2012,  2015,
+    2021,  2025,  2031,  2034,  2042,  2045,  2048,  2051,  2057,  2062,
+    2067
 };
 #endif
 
@@ -883,10 +885,11 @@
   "simple_when_clause_list", "simple_when_clause",
   "searched_when_clause_list", "searched_when_clause", "opt_else_clause",
   "expression_list", "literal_value", "datetime_unit",
-  "literal_value_commalist", "attribute_ref", "attribute_ref_list",
-  "comparison_operation", "unary_operation", "add_operation",
-  "multiply_operation", "name_commalist", "any_name", "boolean_value",
-  "command", "command_argument_list", YY_NULLPTR
+  "literal_value_commalist", "literal_value_commalist_multiple",
+  "attribute_ref", "attribute_ref_list", "comparison_operation",
+  "unary_operation", "add_operation", "multiply_operation",
+  "name_commalist", "any_name", "boolean_value", "command",
+  "command_argument_list", YY_NULLPTR
 };
 #endif
 
@@ -913,10 +916,10 @@
 };
 # endif
 
-#define YYPACT_NINF -395
+#define YYPACT_NINF -410
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-395)))
+  (!!((Yystate) == (-410)))
 
 #define YYTABLE_NINF -139
 
@@ -927,61 +930,62 @@
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     174,  -395,  -395,   -64,    85,   -26,    14,   -31,   -16,  -395,
-      40,   196,   196,  -395,   109,   102,  -395,  -395,  -395,  -395,
-    -395,  -395,  -395,  -395,  -395,  -395,   148,    -3,    87,  -395,
-     -40,   121,   196,  -395,  -395,     1,    -5,   196,   196,   196,
-     196,   196,  -395,  -395,   716,    82,     2,  -395,   153,    63,
-    -395,  -395,  -395,    98,   152,    -3,    40,   141,  -395,    98,
-    -395,  -395,  -395,    12,    97,   116,   261,   116,   169,   126,
-     138,  -395,   176,  -395,  -395,   270,   274,  -395,  -395,  -395,
-     807,   139,  -395,   210,  -395,  -395,   154,  -395,  -395,   297,
-    -395,  -395,  -395,  -395,   172,  -395,  -395,   177,   231,   901,
-     313,   265,   192,  -395,  -395,   338,    23,  -395,  -395,   243,
-    -395,  -395,  -395,  -395,  -395,  1083,    -7,   196,   196,   214,
-     196,     1,   196,  -395,    98,   363,  -395,   205,   263,  -395,
-    -395,  -395,   255,  -395,   116,  -395,   196,   196,   625,  -395,
-    -395,   262,   196,  -395,  -395,  -395,   625,    33,   -29,  -395,
-     409,  -395,   165,   165,  1174,   411,  -395,   -14,    28,  -395,
-      13,   138,  1174,  -395,  -395,   196,  1174,  -395,  -395,  -395,
-    -395,  1174,    18,   274,  -395,   196,   398,    59,  -395,   417,
-    -395,    98,  -395,   202,  -395,   116,    98,    87,  -395,   196,
-      80,   196,   196,   196,  -395,   285,  -395,   211,  1241,   992,
-     214,   534,   422,   423,  -395,  -395,   312,   415,  1252,   219,
-      43,  1174,    61,  -395,  1174,  -395,   369,   292,  -395,  -395,
-    -395,  -395,  -395,  -395,   367,  -395,   216,   294,  -395,  -395,
-       7,   186,   267,  -395,   298,   186,     3,   372,  -395,  -395,
-      23,  -395,   347,  -395,  -395,   295,  1174,  -395,   351,   229,
-     196,  -395,  1174,  -395,   196,  -395,  -395,  -395,   303,   366,
-     368,   304,  -395,  -395,  -395,   232,  -395,  -395,  -395,  -395,
-    -395,    34,   196,   323,    80,   196,  -395,   188,  -395,  -395,
-       4,    65,   625,   625,   276,  -395,  -395,  -395,  -395,  -395,
-    -395,  -395,  -395,  1174,   311,  1174,    51,  -395,   234,   326,
-    1174,    71,  -395,   399,   351,  -395,  -395,  1174,   453,  -395,
-     160,   196,  -395,  -395,   370,  -395,   373,   374,   379,    13,
-    -395,   457,   462,   186,   430,   400,   431,   329,   380,  -395,
-     236,  -395,  1174,  -395,   351,  -395,   625,   333,   334,   196,
-    -395,   196,  -395,  -395,  -395,  -395,  -395,  -395,  -395,   196,
-    -395,  -395,  -395,   238,   454,   184,  -395,   336,   348,  -395,
-     391,   342,  1252,  -395,   403,   196,  -395,  -395,   188,  -395,
-    -395,   423,  -395,  -395,  -395,  1174,   345,   341,   901,  -395,
-     351,   401,  -395,  -395,  1252,   350,   351,  1174,  -395,    37,
-      35,  -395,  -395,  -395,  -395,  -395,    13,   267,   390,   395,
-    -395,  1174,   625,   396,  1174,  -395,   455,   108,  -395,   351,
-       8,   196,   196,   240,  -395,   242,  -395,   196,  -395,  -395,
-    -395,  -395,   354,    80,   461,   402,  -395,   625,  -395,  -395,
-     356,  -395,   346,   901,  -395,  1174,   245,  -395,  -395,  1252,
-     351,  -395,   495,  -395,   408,  -395,  -395,   358,   422,   464,
-     420,   358,  1174,  -395,  -395,  -395,   490,  -395,   249,   251,
-    -395,  -395,  -395,   196,  -395,  -395,   375,   468,  -395,    19,
-     196,  1174,   264,   351,  -395,   266,   371,   625,  1174,   504,
-     376,   377,  -395,   227,    46,   405,  -395,   269,   196,    -9,
-    -395,   381,   351,  -395,  -395,  -395,   422,   377,  -395,   196,
-    -395,   376,  -395,  1174,  -395,  -395,   421,   418,   407,   425,
-     515,   196,  -395,   277,  -395,  -395,   384,  -395,   496,  -395,
-    -395,    49,  -395,  -395,  -395,  -395,    56,   386,  -395,   196,
-     388,  -395,  -395,   466,   426,   467,  -395,   196,   279,   347,
-    -395,  -395,  -395,   281,   445,   404,  -395,   539,  -395,  -395
+     405,  -410,  -410,   -52,    43,   -13,    34,   -38,   116,  -410,
+      48,   231,   231,  -410,   115,   119,  -410,  -410,  -410,  -410,
+    -410,  -410,  -410,  -410,  -410,  -410,   166,    46,    49,  -410,
+     -36,   205,   231,  -410,  -410,    38,   132,   231,   231,   231,
+     231,   231,  -410,  -410,   652,    97,    72,  -410,   203,    95,
+    -410,  -410,  -410,   130,   175,    46,    48,   158,  -410,   130,
+    -410,  -410,  -410,    25,    61,   128,   270,   128,   184,   142,
+     149,  -410,   106,  -410,  -410,   309,   313,  -410,  -410,  -410,
+     743,   153,  -410,   218,  -410,  -410,   189,  -410,  -410,   331,
+    -410,  -410,  -410,  -410,   199,  -410,  -410,   207,   272,   837,
+     347,   305,   211,  -410,  -410,   328,    19,  -410,  -410,   262,
+    -410,  -410,  -410,  -410,  -410,  1019,     5,   231,   231,   220,
+     231,    38,   231,  -410,   130,   373,  -410,   148,   243,  -410,
+    -410,  -410,   244,  -410,   128,  -410,   231,   231,   561,  -410,
+    -410,   245,   231,  -410,  -410,  -410,   561,    52,    17,  -410,
+     400,  -410,   140,   140,  1110,   402,  -410,     1,    29,  -410,
+      20,   149,  1110,  -410,  -410,   231,  1110,  -410,  -410,  -410,
+    -410,  1110,    21,   313,  -410,   231,   323,   -64,  -410,   416,
+    -410,   130,  -410,   167,  -410,   128,   130,    49,  -410,   231,
+     152,   231,   231,   231,  -410,   269,  -410,   169,  1177,   928,
+     220,   470,   426,   433,  -410,  -410,   407,   428,  1188,   303,
+     173,    23,  1110,    64,  -410,  1110,  -410,   388,   306,  -410,
+    -410,  -410,  -410,  -410,  -410,   381,  -410,    66,   310,  -410,
+    -410,     8,   209,   215,  -410,   311,   209,     9,   385,  -410,
+    -410,    19,  -410,   360,  -410,  -410,   315,  1110,  -410,   301,
+     180,   231,  -410,  1110,  -410,   231,  -410,  -410,  -410,   320,
+     384,   386,   329,  -410,  -410,  -410,   196,  -410,  -410,  -410,
+    -410,  -410,    16,   231,   341,   152,   231,  -410,   174,  -410,
+    -410,     2,    81,   561,   561,   206,  -410,  -410,  -410,  -410,
+    -410,  -410,  -410,  -410,  1110,   334,  1110,    58,  -410,   210,
+     335,   349,  1110,    68,  -410,   420,   301,  -410,  -410,  1110,
+     476,  -410,   162,   231,  -410,  -410,   389,  -410,   390,   391,
+     406,    20,  -410,   486,   487,   209,   453,   421,   455,   353,
+     403,  -410,   223,  -410,  1110,  -410,   301,  -410,   561,   357,
+     358,   231,  -410,   231,  -410,  -410,  -410,  -410,  -410,  -410,
+    -410,   231,  -410,  -410,  -410,   225,   477,    86,  -410,   361,
+     366,  -410,   417,   364,  1188,  -410,   430,   231,  -410,  -410,
+     174,  -410,  -410,   433,  -410,  -410,  -410,  1110,   367,   284,
+     837,  -410,   301,   424,  -410,  -410,  1188,  1188,   374,   301,
+    1110,  -410,    33,   -16,  -410,  -410,  -410,  -410,  -410,    20,
+     215,   419,   422,  -410,  1110,   561,   429,  1110,  -410,   475,
+      18,  -410,   301,    31,   231,   231,   227,  -410,   233,  -410,
+     231,  -410,  -410,  -410,  -410,   382,   152,   489,   432,  -410,
+     561,  -410,  -410,   392,  -410,   289,   837,  -410,  1110,   238,
+    -410,  -410,   240,  1188,   301,  -410,   521,  -410,   437,  -410,
+    -410,   393,   426,   498,   456,   393,  1110,  -410,  -410,  -410,
+     522,  -410,   246,   252,  -410,  -410,  -410,   231,  -410,  -410,
+     399,   504,  -410,    32,   231,  1110,   254,   301,  -410,  -410,
+     257,   404,   561,  1110,   540,   412,   408,  -410,   274,    11,
+     442,  -410,   286,   231,   127,  -410,   410,   301,  -410,  -410,
+    -410,   426,   408,  -410,   231,  -410,   412,  -410,  1110,  -410,
+    -410,   460,   454,   447,   458,   549,   231,  -410,   290,  -410,
+    -410,   425,  -410,   528,  -410,  -410,    -6,  -410,  -410,  -410,
+    -410,    12,   431,  -410,   231,   434,  -410,  -410,   495,   462,
+     496,  -410,   231,   293,   360,  -410,  -410,  -410,   299,   473,
+     435,  -410,   563,  -410,  -410
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -989,93 +993,96 @@
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     6,   298,     0,     0,     0,     0,     0,     0,    18,
+       0,     6,   300,     0,     0,     0,     0,     0,     0,    18,
      123,     0,     0,     7,     0,     0,    15,     8,    10,    11,
       13,    14,     9,    17,    12,    16,     0,   112,   119,   121,
-       0,   296,     0,   290,   291,     0,     0,     0,     0,     0,
+       0,   298,     0,   292,   293,     0,     0,     0,     0,     0,
        0,     0,   124,   125,     0,     0,   114,   115,     0,   156,
        1,     3,     2,     0,     0,   112,   123,     0,   110,     0,
-       5,     4,   297,     0,     0,   103,     0,   103,     0,     0,
-     197,    25,     0,   256,   253,     0,   282,   126,    40,    29,
+       5,     4,   299,     0,     0,   103,     0,   103,     0,     0,
+     197,    25,     0,   256,   253,     0,   284,   126,    40,    29,
        0,     0,    30,    31,    34,    36,     0,    37,    39,     0,
       41,   252,    35,    38,     0,    32,    33,     0,     0,     0,
        0,     0,   127,   128,   232,   132,   218,   220,   222,   225,
-     228,   229,   230,   224,   223,     0,   268,     0,     0,     0,
+     228,   229,   230,   224,   223,     0,   270,     0,     0,     0,
        0,     0,     0,   111,     0,     0,   120,     0,     0,   100,
      102,   101,     0,    98,   103,    97,     0,     0,     0,   106,
      198,     0,     0,    94,   254,   255,     0,     0,   248,   245,
        0,    43,     0,   257,     0,     0,    44,     0,     0,   259,
-       0,   197,     0,   283,   284,     0,     0,   131,   286,   287,
-     285,     0,     0,     0,   221,     0,     0,   197,   108,     0,
-     116,     0,   117,     0,   288,   103,     0,   118,   113,     0,
+       0,   197,     0,   285,   286,     0,     0,   131,   288,   289,
+     287,     0,     0,     0,   221,     0,     0,   197,   108,     0,
+     116,     0,   117,     0,   290,   103,     0,   118,   113,     0,
        0,     0,     0,     0,    96,    66,    27,     0,     0,     0,
-       0,     0,   199,   201,   203,   205,     0,   223,     0,     0,
-       0,     0,   248,   242,     0,   246,     0,     0,   262,   263,
-     264,   261,   265,   260,     0,   258,     0,     0,   134,   231,
-       0,     0,   158,   147,   133,   152,   135,   160,   129,   130,
-     217,   219,   174,   226,   269,     0,     0,   233,   250,     0,
-       0,   105,     0,   157,     0,    99,    95,    19,     0,     0,
-       0,     0,    20,    21,    22,     0,    74,    76,    77,    78,
-      79,     0,     0,     0,    64,     0,    42,    56,   204,   212,
-       0,     0,     0,     0,     0,   272,   274,   275,   276,   277,
-     273,   278,   280,     0,     0,     0,     0,   266,     0,     0,
-       0,     0,   243,     0,   249,   241,    45,     0,     0,    46,
-     138,     0,   148,   154,   144,   139,   140,   142,     0,     0,
-     151,     0,     0,   150,     0,   162,     0,     0,   176,   234,
-       0,   235,     0,   107,   109,   289,     0,     0,     0,     0,
-     104,     0,    81,    84,    82,   294,   295,   293,   292,     0,
-      80,    85,   270,     0,   268,     0,    63,    65,    68,    28,
-       0,     0,     0,    47,     0,     0,    49,    55,    57,    26,
-     211,   200,   202,   279,   281,     0,     0,     0,     0,   213,
-     210,     0,   209,    93,     0,     0,   247,     0,   240,     0,
-       0,   153,   155,   145,   141,   143,     0,   159,     0,     0,
-     149,     0,     0,   164,     0,   227,     0,   178,   236,   251,
-       0,     0,     0,     0,    75,     0,    67,     0,    86,    87,
-      88,    89,    90,     0,     0,    70,    48,     0,    51,    50,
-       0,    54,     0,     0,   215,     0,     0,   208,   267,     0,
-     244,   237,     0,   238,     0,   136,   137,   161,   163,     0,
-     166,   175,     0,   181,   180,   173,     0,    61,     0,     0,
-      58,    83,   271,     0,    24,    62,     0,     0,    23,     0,
-       0,     0,     0,   206,   214,     0,     0,     0,     0,     0,
-     168,   177,   188,   191,     0,     0,    59,     0,     0,     0,
-      52,     0,   207,   216,    92,   239,   146,   165,   167,     0,
-     122,   169,   170,     0,   192,   193,   194,     0,     0,     0,
-       0,     0,    91,     0,    72,    73,     0,    53,     0,   171,
-     189,     0,   190,   182,   184,   183,     0,     0,    69,     0,
-       0,   195,   196,     0,     0,     0,   179,     0,     0,   174,
-     185,   187,   186,     0,     0,     0,    60,     0,   172,    71
+       0,     0,   199,   201,   203,   205,     0,   223,     0,    93,
+       0,     0,     0,   248,   242,     0,   246,     0,     0,   262,
+     263,   264,   261,   265,   260,     0,   258,     0,     0,   134,
+     231,     0,     0,   158,   147,   133,   152,   135,   160,   129,
+     130,   217,   219,   174,   226,   271,     0,     0,   233,   250,
+       0,     0,   105,     0,   157,     0,    99,    95,    19,     0,
+       0,     0,     0,    20,    21,    22,     0,    74,    76,    77,
+      78,    79,     0,     0,     0,    64,     0,    42,    56,   204,
+     212,     0,     0,     0,     0,     0,   274,   276,   277,   278,
+     279,   275,   280,   282,     0,     0,     0,     0,   266,     0,
+       0,     0,     0,     0,   243,     0,   249,   241,    45,     0,
+       0,    46,   138,     0,   148,   154,   144,   139,   140,   142,
+       0,     0,   151,     0,     0,   150,     0,   162,     0,     0,
+     176,   234,     0,   235,     0,   107,   109,   291,     0,     0,
+       0,     0,   104,     0,    81,    84,    82,   296,   297,   295,
+     294,     0,    80,    85,   272,     0,   270,     0,    63,    65,
+      68,    28,     0,     0,     0,    47,     0,     0,    49,    55,
+      57,    26,   211,   200,   202,   281,   283,     0,     0,     0,
+       0,   213,   210,     0,   209,   268,     0,     0,     0,   247,
+       0,   240,     0,     0,   153,   155,   145,   141,   143,     0,
+     159,     0,     0,   149,     0,     0,   164,     0,   227,     0,
+     178,   236,   251,     0,     0,     0,     0,    75,     0,    67,
+       0,    86,    87,    88,    89,    90,     0,     0,    70,    48,
+       0,    51,    50,     0,    54,     0,     0,   215,     0,     0,
+     208,   267,     0,     0,   244,   237,     0,   238,     0,   136,
+     137,   161,   163,     0,   166,   175,     0,   181,   180,   173,
+       0,    61,     0,     0,    58,    83,   273,     0,    24,    62,
+       0,     0,    23,     0,     0,     0,     0,   206,   214,   269,
+       0,     0,     0,     0,     0,   168,   177,   188,   191,     0,
+       0,    59,     0,     0,     0,    52,     0,   207,   216,    92,
+     239,   146,   165,   167,     0,   122,   169,   170,     0,   192,
+     193,   194,     0,     0,     0,     0,     0,    91,     0,    72,
+      73,     0,    53,     0,   171,   189,     0,   190,   182,   184,
+     183,     0,     0,    69,     0,     0,   195,   196,     0,     0,
+       0,   179,     0,     0,   174,   185,   187,   186,     0,     0,
+       0,    60,     0,   172,    71
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -395,  -395,  -395,  -395,  -395,  -395,  -395,  -395,  -164,  -395,
-     349,   180,  -395,  -395,  -271,  -395,  -395,  -395,  -395,  -395,
-    -395,  -394,   209,  -395,  -395,  -395,  -395,  -395,  -395,  -395,
-    -395,    24,   -46,  -395,  -395,  -395,   301,  -395,   497,  -395,
-    -395,   435,   259,   433,   -28,   498,  -395,  -395,   397,  -395,
-     -90,  -395,  -395,  -207,   162,  -187,   -10,  -395,  -395,  -395,
-    -395,  -395,  -395,  -395,    60,    21,  -395,  -395,  -395,  -395,
-    -395,  -395,    84,    62,  -395,  -395,   -54,  -395,  -145,   282,
-     280,   382,   -35,   406,   412,   451,  -156,  -395,  -395,  -395,
-    -395,   355,  -395,   427,   359,  -232,  -203,   429,   129,  -128,
-    -395,  -395,  -395,  -395,  -395,  -136,    -4,  -395,  -395,  -395
+    -410,  -410,  -410,  -410,  -410,  -410,  -410,  -410,  -148,  -410,
+     376,   216,  -410,  -410,  -264,  -410,  -410,  -410,  -410,  -410,
+    -410,  -409,   236,  -410,  -410,  -410,  -410,  -410,  -410,  -410,
+    -410,    85,    -3,  -410,  -410,  -410,   325,  -410,   526,  -410,
+    -410,   467,   217,   464,   -43,   533,  -410,  -410,   436,  -410,
+    -114,  -410,  -410,  -186,   192,  -184,    -9,  -410,  -410,  -410,
+    -410,  -410,  -410,  -410,    89,    55,  -410,  -410,  -410,  -410,
+    -410,  -410,   109,    92,  -410,  -410,    79,  -410,  -142,   318,
+     322,   409,   -42,   441,   439,   501,  -154,  -410,  -410,  -410,
+    -410,   398,  -410,   469,   413,  -232,  -195,   449,  -324,  -410,
+    -129,  -410,  -410,  -410,  -410,  -410,  -141,    -4,  -410,  -410,
+    -410
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,    14,    15,    16,    17,    18,    19,    20,   196,   197,
-     100,   367,   368,   369,   262,   357,   358,   273,   425,   468,
-     516,   265,   266,   267,   268,   269,   270,   422,   464,    21,
+     100,   369,   370,   371,   263,   359,   360,   274,   428,   472,
+     521,   266,   267,   268,   269,   270,   271,   425,   468,    21,
       22,    65,   133,    23,    24,   177,   178,    25,    58,    26,
       46,    47,   157,    28,    29,    44,   101,   102,   103,   161,
-     104,   323,   318,   232,   233,   312,   313,   234,   325,   403,
-     450,   480,   500,   501,   502,   327,   328,   407,   455,   456,
-     510,   536,   481,   482,   506,   522,   139,   140,   202,   203,
+     104,   325,   320,   233,   234,   314,   315,   235,   327,   406,
+     454,   485,   505,   506,   507,   329,   330,   410,   459,   460,
+     515,   541,   486,   487,   511,   527,   139,   140,   202,   203,
      204,   205,   206,   106,   107,   108,   109,   110,   111,   112,
-     212,   213,   148,   149,   216,   249,   113,   224,   298,   114,
-     353,   295,   115,   166,   171,   183,   116,   351,    30,    31
+     213,   214,   148,   149,   217,   250,   113,   225,   299,   209,
+     114,   355,   296,   115,   166,   171,   183,   116,   353,    30,
+      31
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1083,256 +1090,215 @@
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      36,   210,    48,   356,   235,   297,   209,    45,    49,   105,
-     207,    33,   282,    34,   330,    56,   282,    33,   207,    34,
-     175,   135,    33,   310,    34,   257,    56,   282,    63,   182,
-      56,   126,   214,    68,    69,    70,    71,    72,    33,   342,
-      34,   343,   321,   127,   143,   147,   168,   169,   320,   163,
-     164,   282,    37,   507,   163,   164,   280,    32,   163,   164,
-      67,   381,   344,   533,   158,   514,    66,    41,    42,   487,
-     231,   207,   128,   207,   235,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,    39,   163,   164,   194,    33,
-      40,    34,   163,   164,   513,    38,   508,   515,    43,   345,
-      60,   167,   129,    61,   442,   146,   534,   237,    48,    50,
-     279,   359,   397,   179,    49,   531,   184,    59,   186,   226,
-      64,    10,   214,   251,    62,   258,    64,   105,   346,   347,
-     322,   228,   195,   198,    57,   532,   400,   176,   184,   255,
-     231,   248,   294,   382,   352,   185,   436,   176,   118,   370,
-     259,   230,   465,   457,   207,   207,   236,   230,   256,   428,
-     348,   239,   242,   235,   490,   300,   281,   211,   243,   447,
-     170,   244,   451,   229,   509,     1,   301,     2,   349,   304,
-     443,   438,   441,   260,   535,   198,   119,   263,   264,   271,
-      33,   410,    34,   387,   138,   211,    53,   117,   360,    10,
-      33,   472,    34,   413,   379,   250,     3,   120,   207,   261,
-     229,   248,    10,   415,   453,   130,   131,   334,   218,   311,
-     454,   418,     4,     5,   419,   420,   236,    49,    54,   231,
-       6,    49,   314,   361,     7,   122,   297,   163,   164,   315,
-     235,   219,    51,   362,    52,   125,   179,   316,   163,   164,
-     335,   189,   190,   132,     8,   220,   221,   448,   377,    27,
-     380,   504,    10,    35,   136,   386,   134,   350,   354,   317,
-     137,   198,   389,   138,   207,   458,   459,   144,   222,     9,
-     363,   145,   469,   150,   505,    55,   434,   308,    10,   462,
-      10,   364,   151,   373,   374,   375,   365,   409,   152,   207,
-     421,   392,   153,   223,    11,   391,   231,    49,   141,   191,
-     192,    12,   121,   156,    13,   236,   154,   366,   159,    49,
-     142,   155,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   293,   496,   163,   164,   184,   160,   271,   162,   314,
-     432,   172,    33,   248,    34,   184,   315,   253,   254,   207,
-     435,  -138,   440,   376,   316,   471,   274,   275,   181,   163,
-     164,   430,   163,   164,   299,   254,   248,   163,   164,   248,
-     188,   165,   163,   164,   331,   332,   317,   340,   341,   383,
-     384,   408,   332,   416,   417,   460,   254,   461,   254,   294,
-     474,   332,   236,   538,   485,   254,   486,   254,   248,   193,
-     473,   543,    33,    73,    34,    74,   208,   184,   184,   493,
-     332,   494,   384,   354,   512,   341,   217,   483,   227,    75,
-      76,   245,   528,   341,   544,   254,   546,   254,   252,   272,
-     282,   305,   283,    78,    79,   296,   492,   306,   307,   309,
-     329,    80,    81,   483,   319,   324,   326,   336,   339,    82,
-      83,   337,    84,   338,   355,   378,   246,    85,   385,   271,
-     390,   388,    86,   396,   398,    87,   491,   393,   483,   399,
-     394,   395,   401,   404,   405,   402,   406,   411,   412,    88,
-      89,   175,   423,   426,   271,   424,   427,    90,   429,   433,
-      91,   445,   449,   437,   439,   518,   446,   452,   463,   466,
-     470,   467,   476,   477,   332,    92,   478,   527,   479,   484,
-     489,   498,   499,   511,   521,    93,   495,   524,    94,   488,
-     523,    95,    96,   503,   526,   184,   517,   525,   529,   530,
-     537,    97,   539,   184,   540,   542,   541,    98,    33,    73,
-      34,    74,    99,   247,   199,   547,   549,   277,   431,   548,
-     414,   333,   123,   180,   124,    75,    76,   187,   444,   238,
-     545,   519,   497,   372,   371,   520,   174,   302,   475,    78,
-      79,   303,   240,     0,     0,   215,     0,    80,    81,     0,
-       0,   278,   225,   241,     0,    82,    83,     0,    84,     0,
-       0,     0,     0,    85,     0,     0,     0,   200,    86,     0,
-       0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    88,    89,     0,     0,     0,
-       0,     0,     0,    90,     0,     0,    91,     0,     0,    33,
-      73,    34,    74,     0,     0,   199,     0,     0,     0,     0,
-       0,    92,     0,     0,     0,     0,    75,    76,    10,     0,
-       0,    93,     0,     0,    94,     0,     0,    95,    96,     0,
-      78,    79,     0,     0,     0,     0,     0,    97,    80,    81,
-       0,     0,     0,    98,     0,     0,    82,    83,   201,    84,
-       0,     0,     0,     0,    85,     0,     0,     0,   200,    86,
-       0,     0,    87,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    88,    89,     0,     0,
-       0,     0,     0,     0,    90,     0,     0,    91,     0,     0,
-      33,    73,    34,    74,     0,     0,     0,     0,     0,     0,
-       0,     0,    92,     0,     0,     0,     0,    75,    76,    77,
-       0,     0,    93,     0,     0,    94,     0,     0,    95,    96,
-       0,    78,    79,     0,     0,     0,     0,     0,    97,    80,
-      81,     0,     0,     0,    98,     0,     0,    82,    83,   201,
-      84,     0,     0,     0,     0,    85,     0,     0,     0,     0,
-      86,     0,     0,    87,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    88,    89,     0,
-       0,     0,     0,     0,     0,    90,     0,     0,    91,     0,
-       0,    33,    73,    34,    74,     0,     0,     0,     0,     0,
-       0,     0,     0,    92,     0,     0,     0,     0,    75,    76,
-       0,     0,     0,    93,     0,     0,    94,     0,     0,    95,
-      96,     0,    78,    79,     0,     0,     0,     0,     0,    97,
-      80,    81,     0,     0,     0,    98,     0,     0,    82,    83,
-      99,    84,     0,     0,     0,     0,    85,     0,     0,     0,
-       0,    86,     0,     0,    87,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    88,    89,
-       0,     0,     0,     0,     0,     0,    90,     0,     0,    91,
-       0,     0,     0,     0,     0,    33,    73,    34,    74,     0,
-       0,     0,     0,     0,    92,     0,     0,     0,     0,     0,
-       0,     0,    75,    76,    93,     0,     0,    94,     0,     0,
-      95,    96,     0,     0,     0,     0,    78,    79,     0,     0,
-      97,   146,     0,     0,    80,    81,    98,     0,     0,     0,
-       0,    99,    82,    83,     0,    84,     0,     0,     0,     0,
-      85,     0,     0,     0,     0,    86,     0,     0,    87,     0,
+      36,   210,   105,    48,   211,   182,   236,    45,    49,   207,
+     283,   358,    33,   298,    34,   332,   126,   207,   512,   538,
+      33,   344,    34,   345,    33,    33,    34,    34,    63,   143,
+      56,   283,   175,    68,    69,    70,    71,    72,   147,   283,
+     283,   258,   168,   169,   346,   312,   232,    33,   323,    34,
+     163,   164,   322,   446,   163,   164,   127,   158,   492,   281,
+     536,   513,   539,   442,   135,    37,   129,    56,   383,    32,
+     207,   138,   207,   163,   164,    56,    42,   236,   215,    59,
+     537,   347,   251,    40,   518,   128,   280,   163,   164,   163,
+     164,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   167,   163,   164,    60,    39,    43,    61,    38,    48,
+     348,   349,   227,   179,    49,    50,   184,   232,   186,   480,
+     105,    67,    10,   421,   457,   215,   422,   423,   361,   447,
+     458,   194,   195,   198,   249,   400,   324,   310,   184,   514,
+     540,   403,   350,   257,   354,   302,   229,   372,   439,   176,
+     384,   146,   231,   176,   207,   207,   237,    10,   295,   282,
+     351,   240,   469,    64,   231,   243,   170,   236,   244,   431,
+     303,   245,   451,   306,   230,   455,   461,   495,   445,   130,
+     131,   381,   256,    57,   362,   198,   212,   264,   265,   272,
+     390,   441,   298,   219,   189,   190,   413,   259,   212,    41,
+     416,   519,   424,    66,   476,   249,   185,   232,    62,   207,
+     418,   336,   117,    33,    53,    34,   220,    27,   118,   363,
+      10,    35,   260,   375,   376,   377,   230,   237,    49,   364,
+     221,   222,    49,   520,   316,    33,   119,    34,   141,   120,
+     238,   317,   313,    55,    10,   236,    54,   179,   298,   318,
+     142,   337,   379,   223,   382,   261,   252,    64,   122,    51,
+     389,    52,   125,   452,   437,   132,   365,   392,   352,   356,
+     121,   319,   198,   462,   463,   134,   207,   366,   224,   136,
+      10,   262,   367,   378,   138,   232,   137,   316,   473,   191,
+     192,   466,   412,   438,   317,   163,   164,   150,   475,  -138,
+     151,   207,   318,   368,   395,   163,   164,   394,   509,    49,
+     163,   164,   254,   255,   275,   276,   144,   237,   301,   255,
+     145,    49,   163,   164,   319,   333,   334,    33,    73,    34,
+      74,   510,    33,   152,    34,   435,   153,   184,   249,   272,
+     501,   342,   343,   154,    75,    76,   246,   184,   444,   163,
+     164,   155,   159,   207,   156,   385,   386,   162,    78,    79,
+     172,   165,   249,   433,   181,   249,    80,    81,   411,   334,
+     419,   420,   464,   255,    82,    83,   160,    84,   465,   255,
+     188,   247,    85,   478,   334,   479,   386,    86,   193,   208,
+      87,   490,   255,   543,   249,   237,   477,   491,   255,   498,
+     334,   548,   499,   386,    88,    89,     1,   218,     2,   228,
+     184,   184,    90,   273,   488,    91,   356,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   253,   163,   164,
+      92,   517,   343,   497,   283,   533,   343,     3,   549,   255,
+      93,   488,   284,    94,   551,   255,    95,    96,   297,   300,
+     307,   308,   309,     4,     5,   311,    97,   321,   326,   328,
+     331,     6,    98,   272,   338,     7,   488,    99,   248,   339,
+     496,   340,   357,   341,    33,    73,    34,    74,   380,   387,
+     199,   388,   391,   393,   295,     8,   396,   397,   398,   272,
+     399,    75,    76,   401,   402,   404,   405,   407,   408,   409,
+     523,   414,   415,   427,   175,    78,    79,   426,   430,   429,
+       9,   436,   532,    80,    81,   432,   440,   456,   443,    10,
+     449,    82,    83,   450,    84,   453,   467,   470,   481,    85,
+     184,   471,   482,   200,    86,    11,   474,    87,   184,   334,
+     483,   489,    12,   493,   484,    13,   494,   503,   504,   500,
+     516,    88,    89,   526,   508,   522,   528,   529,   531,    90,
+     530,   535,    91,   545,   547,    33,    73,    34,    74,   534,
+     554,   199,   546,   552,   278,   542,   335,    92,   544,   417,
+     553,   123,    75,    76,    10,   180,   434,    93,   187,   124,
+      94,   448,   502,    95,    96,   524,    78,    79,   239,   550,
+     525,   373,   226,    97,    80,    81,   374,   241,   279,    98,
+     242,   304,    82,    83,   201,    84,   174,   216,     0,     0,
+      85,     0,     0,     0,   200,    86,   305,     0,    87,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    88,    89,     0,     0,     0,     0,     0,     0,
       90,     0,     0,    91,     0,     0,    33,    73,    34,    74,
        0,     0,     0,     0,     0,     0,     0,     0,    92,     0,
-       0,     0,     0,    75,    76,    10,     0,     0,    93,     0,
+       0,     0,     0,    75,    76,    77,     0,     0,    93,     0,
        0,    94,     0,     0,    95,    96,     0,    78,    79,     0,
        0,     0,     0,     0,    97,    80,    81,     0,     0,     0,
-      98,     0,     0,    82,    83,    99,    84,     0,     0,     0,
-       0,    85,     0,     0,     0,   200,    86,     0,     0,    87,
+      98,     0,     0,    82,    83,   201,    84,     0,     0,     0,
+       0,    85,     0,     0,     0,     0,    86,     0,     0,    87,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    88,    89,     0,     0,     0,     0,     0,
        0,    90,     0,     0,    91,     0,     0,    33,    73,    34,
       74,     0,     0,     0,     0,     0,     0,     0,     0,    92,
-       0,     0,     0,     0,    75,   173,     0,     0,     0,    93,
+       0,     0,     0,     0,    75,    76,     0,     0,     0,    93,
        0,     0,    94,     0,     0,    95,    96,     0,    78,    79,
        0,     0,     0,     0,     0,    97,    80,    81,     0,     0,
-       0,    98,     0,     0,    82,    83,   201,    84,     0,     0,
+       0,    98,     0,     0,    82,    83,    99,    84,     0,     0,
        0,     0,    85,     0,     0,     0,     0,    86,     0,     0,
       87,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    88,    89,     0,     0,     0,     0,
-       0,     0,    90,     0,     0,    91,     0,     0,    33,    73,
-      34,    74,     0,     0,     0,     0,     0,     0,     0,     0,
-      92,     0,     0,     0,     0,    75,    76,     0,     0,     0,
-      93,     0,     0,    94,     0,     0,    95,    96,     0,    78,
-      79,     0,     0,     0,     0,     0,    97,    80,    81,     0,
-       0,     0,    98,     0,     0,    82,    83,    99,    84,     0,
-       0,     0,     0,    85,     0,     0,     0,     0,    86,     0,
-       0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    88,    89,    73,     0,    74,
-       0,     0,     0,    90,     0,     0,    91,     0,     0,     0,
-       0,     0,     0,    75,   173,     0,    78,    79,     0,     0,
-       0,    92,     0,     0,     0,    81,     0,    78,    79,     0,
-       0,    93,    82,    83,    94,    84,    81,    95,    96,     0,
-      85,     0,     0,    82,    83,     0,    84,    97,    87,     0,
-       0,    85,     0,    98,     0,     0,     0,     0,    99,    87,
-       0,     0,    88,   276,     0,     0,     0,     0,     0,     0,
-      90,     0,     0,    88,    89,     0,     0,     0,     0,     0,
-       0,    90,     0,     0,    91,     0,     0,     0,    92,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    93,    92,
-       0,     0,     0,     0,    95,    96,     0,     0,     0,    93,
-       0,     0,     0,     0,    97,    95,    96,     0,     0,     0,
-      98,     0,     0,     0,     0,    97,     0,     0,     0,     0,
-       0,    98
+       0,     0,    90,     0,     0,    91,     0,     0,     0,     0,
+       0,    33,    73,    34,    74,     0,     0,     0,     0,     0,
+      92,     0,     0,     0,     0,     0,     0,     0,    75,    76,
+      93,     0,     0,    94,     0,     0,    95,    96,     0,     0,
+       0,     0,    78,    79,     0,     0,    97,   146,     0,     0,
+      80,    81,    98,     0,     0,     0,     0,    99,    82,    83,
+       0,    84,     0,     0,     0,     0,    85,     0,     0,     0,
+       0,    86,     0,     0,    87,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    88,    89,
+       0,     0,     0,     0,     0,     0,    90,     0,     0,    91,
+       0,     0,    33,    73,    34,    74,     0,     0,     0,     0,
+       0,     0,     0,     0,    92,     0,     0,     0,     0,    75,
+      76,    10,     0,     0,    93,     0,     0,    94,     0,     0,
+      95,    96,     0,    78,    79,     0,     0,     0,     0,     0,
+      97,    80,    81,     0,     0,     0,    98,     0,     0,    82,
+      83,    99,    84,     0,     0,     0,     0,    85,     0,     0,
+       0,   200,    86,     0,     0,    87,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    88,
+      89,     0,     0,     0,     0,     0,     0,    90,     0,     0,
+      91,     0,     0,    33,    73,    34,    74,     0,     0,     0,
+       0,     0,     0,     0,     0,    92,     0,     0,     0,     0,
+      75,   173,     0,     0,     0,    93,     0,     0,    94,     0,
+       0,    95,    96,     0,    78,    79,     0,     0,     0,     0,
+       0,    97,    80,    81,     0,     0,     0,    98,     0,     0,
+      82,    83,   201,    84,     0,     0,     0,     0,    85,     0,
+       0,     0,     0,    86,     0,     0,    87,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      88,    89,     0,     0,     0,     0,     0,     0,    90,     0,
+       0,    91,     0,     0,    33,    73,    34,    74,     0,     0,
+       0,     0,     0,     0,     0,     0,    92,     0,     0,     0,
+       0,    75,    76,     0,     0,     0,    93,     0,     0,    94,
+       0,     0,    95,    96,     0,    78,    79,     0,     0,     0,
+       0,     0,    97,    80,    81,     0,     0,     0,    98,     0,
+       0,    82,    83,    99,    84,     0,     0,     0,     0,    85,
+       0,     0,     0,     0,    86,     0,     0,    87,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    88,    89,    73,     0,    74,     0,     0,     0,    90,
+       0,     0,    91,     0,     0,     0,     0,     0,     0,    75,
+     173,     0,    78,    79,     0,     0,     0,    92,     0,     0,
+       0,    81,     0,    78,    79,     0,     0,    93,    82,    83,
+      94,    84,    81,    95,    96,     0,    85,     0,     0,    82,
+      83,     0,    84,    97,    87,     0,     0,    85,     0,    98,
+       0,     0,     0,     0,    99,    87,     0,     0,    88,   277,
+       0,     0,     0,     0,     0,     0,    90,     0,     0,    88,
+      89,     0,     0,     0,     0,     0,     0,    90,     0,     0,
+      91,     0,     0,     0,    92,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    93,    92,     0,     0,     0,     0,
+      95,    96,     0,     0,     0,    93,     0,     0,     0,     0,
+      97,    95,    96,     0,     0,     0,    98,     0,     0,     0,
+       0,    97,     0,     0,     0,     0,     0,    98
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,   146,    12,   274,   160,   208,   142,    11,    12,    44,
-     138,     4,     8,     6,   246,    29,     8,     4,   146,     6,
-      27,    67,     4,   230,     6,   189,    29,     8,    32,   119,
-      29,    59,    61,    37,    38,    39,    40,    41,     4,     5,
-       6,     7,    39,    31,    72,    80,    23,    24,   235,    21,
-      22,     8,    78,     7,    21,    22,   201,   121,    21,    22,
-      36,    10,    28,     7,    99,    74,    71,    83,    28,   463,
-     160,   199,    60,   201,   230,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    71,    21,    22,   134,     4,
-     121,     6,    21,    22,   488,   121,    50,   106,    58,    65,
-     140,   105,     5,   143,    69,   134,    50,   161,   118,     0,
-     200,   275,   319,   117,   118,    66,   120,    30,   122,   154,
-     125,   114,    61,   177,     3,    45,   125,   162,    94,    95,
-     127,   145,   136,   137,   137,    86,   323,   144,   142,   185,
-     230,   176,    77,    92,   272,   121,   378,   144,   146,   145,
-      70,   144,   423,   145,   282,   283,   160,   144,   186,   362,
-     126,   165,   144,   319,   145,   122,   201,   134,   172,   401,
-     147,   175,   404,   145,   128,     1,   211,     3,   144,   214,
-     145,   384,   145,   103,   128,   189,    33,   191,   192,   193,
-       4,   336,     6,   122,   135,   134,    48,   115,    10,   114,
-       4,   433,     6,   339,   294,   146,    32,   144,   336,   129,
-     145,   246,   114,   349,   106,   118,   119,   252,    53,    33,
-     112,    37,    48,    49,    40,    41,   230,   231,    80,   319,
-      56,   235,    72,    45,    60,    83,   439,    21,    22,    79,
-     396,    76,   140,    55,   142,   104,   250,    87,    21,    22,
-     254,    46,    47,   137,    80,    90,    91,   402,   293,     0,
-     295,    34,   114,     4,    95,   300,     5,   271,   272,   109,
-     144,   275,   307,   135,   402,   411,   412,     7,   113,   105,
-      92,     7,   427,   144,    57,    26,   376,    71,   114,   417,
-     114,   103,    82,    17,    18,    19,   108,   332,   144,   427,
-     116,   311,     5,   138,   130,   145,   396,   311,   132,    46,
-      47,   137,    53,    82,   140,   319,   144,   129,     5,   323,
-     144,   144,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,   477,    21,    22,   339,    71,   341,   146,    72,
-     375,    98,     4,   378,     6,   349,    79,   145,   146,   477,
-       9,    84,   387,    77,    87,     9,   145,   146,   144,    21,
-      22,   365,    21,    22,   145,   146,   401,    21,    22,   404,
-       7,    33,    21,    22,   145,   146,   109,   145,   146,   145,
-     146,   145,   146,   145,   146,   145,   146,   145,   146,    77,
-     145,   146,   396,   529,   145,   146,   145,   146,   433,   144,
-     435,   537,     4,     5,     6,     7,   144,   411,   412,   145,
-     146,   145,   146,   417,   145,   146,     7,   452,     7,    21,
-      22,    23,   145,   146,   145,   146,   145,   146,    11,   144,
-       8,    62,     9,    35,    36,    20,   471,   145,    71,   145,
-     145,    43,    44,   478,   146,    73,    99,   144,   144,    51,
-      52,    85,    54,    85,   131,   144,    58,    59,   132,   463,
-       7,    62,    64,    84,     7,    67,   470,    97,   503,     7,
-      97,    97,    42,    42,   145,    75,    96,   144,   144,    81,
-      82,    27,   146,    92,   488,   137,   144,    89,    85,   144,
-      92,   101,    96,    92,   144,   499,   101,    42,   144,    38,
-     144,    99,     7,    95,   146,   107,    42,   511,    88,    19,
-      42,     7,   136,   108,    93,   117,   145,   110,   120,   144,
-     102,   123,   124,   146,     9,   529,   145,   102,   144,    33,
-     144,   133,   144,   537,    68,    68,   110,   139,     4,     5,
-       6,     7,   144,   145,    10,   100,     7,   198,   368,   145,
-     341,   250,    55,   118,    56,    21,    22,   124,   396,   162,
-     539,   501,   478,   283,   282,   503,   115,   212,   439,    35,
-      36,   212,   166,    -1,    -1,   148,    -1,    43,    44,    -1,
-      -1,   199,   153,   171,    -1,    51,    52,    -1,    54,    -1,
-      -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,
-      -1,    -1,    -1,    89,    -1,    -1,    92,    -1,    -1,     4,
-       5,     6,     7,    -1,    -1,    10,    -1,    -1,    -1,    -1,
-      -1,   107,    -1,    -1,    -1,    -1,    21,    22,   114,    -1,
-      -1,   117,    -1,    -1,   120,    -1,    -1,   123,   124,    -1,
-      35,    36,    -1,    -1,    -1,    -1,    -1,   133,    43,    44,
-      -1,    -1,    -1,   139,    -1,    -1,    51,    52,   144,    54,
-      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
-      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,
-      -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    -1,    -1,
-       4,     5,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   107,    -1,    -1,    -1,    -1,    21,    22,    23,
-      -1,    -1,   117,    -1,    -1,   120,    -1,    -1,   123,   124,
-      -1,    35,    36,    -1,    -1,    -1,    -1,    -1,   133,    43,
-      44,    -1,    -1,    -1,   139,    -1,    -1,    51,    52,   144,
-      54,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
-      64,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,
-      -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    -1,
-      -1,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    21,    22,
-      -1,    -1,    -1,   117,    -1,    -1,   120,    -1,    -1,   123,
-     124,    -1,    35,    36,    -1,    -1,    -1,    -1,    -1,   133,
-      43,    44,    -1,    -1,    -1,   139,    -1,    -1,    51,    52,
-     144,    54,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,
-      -1,    64,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,
-      -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
-      -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,    -1,
-      -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    21,    22,   117,    -1,    -1,   120,    -1,    -1,
-     123,   124,    -1,    -1,    -1,    -1,    35,    36,    -1,    -1,
-     133,   134,    -1,    -1,    43,    44,   139,    -1,    -1,    -1,
-      -1,   144,    51,    52,    -1,    54,    -1,    -1,    -1,    -1,
-      59,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
+       4,   142,    44,    12,   146,   119,   160,    11,    12,   138,
+       8,   275,     4,   208,     6,   247,    59,   146,     7,     7,
+       4,     5,     6,     7,     4,     4,     6,     6,    32,    72,
+      29,     8,    27,    37,    38,    39,    40,    41,    80,     8,
+       8,   189,    23,    24,    28,   231,   160,     4,    39,     6,
+      21,    22,   236,    69,    21,    22,    31,    99,   467,   201,
+      66,    50,    50,   387,    67,    78,     5,    29,    10,   121,
+     199,   135,   201,    21,    22,    29,    28,   231,    61,    30,
+      86,    65,   146,   121,   493,    60,   200,    21,    22,    21,
+      22,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,   105,    21,    22,   140,    71,    58,   143,   121,   118,
+      94,    95,   154,   117,   118,     0,   120,   231,   122,   443,
+     162,    36,   114,    37,   106,    61,    40,    41,   276,   145,
+     112,   134,   136,   137,   176,   321,   127,    71,   142,   128,
+     128,   325,   126,   186,   273,   122,   145,   145,   380,   144,
+      92,   134,   144,   144,   283,   284,   160,   114,    77,   201,
+     144,   165,   426,   125,   144,   144,   147,   321,   172,   364,
+     212,   175,   404,   215,   145,   407,   145,   145,   145,   118,
+     119,   295,   185,   137,    10,   189,   134,   191,   192,   193,
+     122,   386,   387,    53,    46,    47,   338,    45,   134,    83,
+     341,    74,   116,    71,   436,   247,   121,   321,     3,   338,
+     351,   253,   115,     4,    48,     6,    76,     0,   146,    45,
+     114,     4,    70,    17,    18,    19,   145,   231,   232,    55,
+      90,    91,   236,   106,    72,     4,    33,     6,   132,   144,
+     161,    79,    33,    26,   114,   399,    80,   251,   443,    87,
+     144,   255,   294,   113,   296,   103,   177,   125,    83,   140,
+     302,   142,   104,   405,   378,   137,    92,   309,   272,   273,
+      53,   109,   276,   414,   415,     5,   405,   103,   138,    95,
+     114,   129,   108,    77,   135,   399,   144,    72,   430,    46,
+      47,   420,   334,     9,    79,    21,    22,   144,     9,    84,
+      82,   430,    87,   129,   313,    21,    22,   145,    34,   313,
+      21,    22,   145,   146,   145,   146,     7,   321,   145,   146,
+       7,   325,    21,    22,   109,   145,   146,     4,     5,     6,
+       7,    57,     4,   144,     6,   377,     5,   341,   380,   343,
+     482,   145,   146,   144,    21,    22,    23,   351,   390,    21,
+      22,   144,     5,   482,    82,   145,   146,   146,    35,    36,
+      98,    33,   404,   367,   144,   407,    43,    44,   145,   146,
+     145,   146,   145,   146,    51,    52,    71,    54,   145,   146,
+       7,    58,    59,   145,   146,   145,   146,    64,   144,   144,
+      67,   145,   146,   534,   436,   399,   438,   145,   146,   145,
+     146,   542,   145,   146,    81,    82,     1,     7,     3,     7,
+     414,   415,    89,   144,   456,    92,   420,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    11,    21,    22,
+     107,   145,   146,   475,     8,   145,   146,    32,   145,   146,
+     117,   483,     9,   120,   145,   146,   123,   124,    20,   146,
+      62,   145,    71,    48,    49,   145,   133,   146,    73,    99,
+     145,    56,   139,   467,   144,    60,   508,   144,   145,    85,
+     474,    85,   131,   144,     4,     5,     6,     7,   144,   144,
+      10,   132,    62,     7,    77,    80,    97,    97,    97,   493,
+      84,    21,    22,     7,     7,    42,    75,    42,   145,    96,
+     504,   144,   144,   137,    27,    35,    36,   146,   144,    92,
+     105,   144,   516,    43,    44,    85,    92,    42,   144,   114,
+     101,    51,    52,   101,    54,    96,   144,    38,     7,    59,
+     534,    99,    95,    63,    64,   130,   144,    67,   542,   146,
+      42,    19,   137,   144,    88,   140,    42,     7,   136,   145,
+     108,    81,    82,    93,   146,   145,   102,   110,     9,    89,
+     102,    33,    92,    68,    68,     4,     5,     6,     7,   144,
+       7,    10,   110,   100,   198,   144,   251,   107,   144,   343,
+     145,    55,    21,    22,   114,   118,   370,   117,   124,    56,
+     120,   399,   483,   123,   124,   506,    35,    36,   162,   544,
+     508,   283,   153,   133,    43,    44,   284,   166,   199,   139,
+     171,   213,    51,    52,   144,    54,   115,   148,    -1,    -1,
+      59,    -1,    -1,    -1,    63,    64,   213,    -1,    67,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,
       89,    -1,    -1,    92,    -1,    -1,     4,     5,     6,     7,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,
-      -1,    -1,    -1,    21,    22,   114,    -1,    -1,   117,    -1,
+      -1,    -1,    -1,    21,    22,    23,    -1,    -1,   117,    -1,
       -1,   120,    -1,    -1,   123,   124,    -1,    35,    36,    -1,
       -1,    -1,    -1,    -1,   133,    43,    44,    -1,    -1,    -1,
      139,    -1,    -1,    51,    52,   144,    54,    -1,    -1,    -1,
-      -1,    59,    -1,    -1,    -1,    63,    64,    -1,    -1,    67,
+      -1,    59,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
       -1,    89,    -1,    -1,    92,    -1,    -1,     4,     5,     6,
@@ -1344,29 +1310,56 @@
       -1,    -1,    59,    -1,    -1,    -1,    -1,    64,    -1,    -1,
       67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,
-      -1,    -1,    89,    -1,    -1,    92,    -1,    -1,     4,     5,
-       6,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     107,    -1,    -1,    -1,    -1,    21,    22,    -1,    -1,    -1,
-     117,    -1,    -1,   120,    -1,    -1,   123,   124,    -1,    35,
-      36,    -1,    -1,    -1,    -1,    -1,   133,    43,    44,    -1,
-      -1,    -1,   139,    -1,    -1,    51,    52,   144,    54,    -1,
-      -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    64,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    81,    82,     5,    -1,     7,
-      -1,    -1,    -1,    89,    -1,    -1,    92,    -1,    -1,    -1,
-      -1,    -1,    -1,    21,    22,    -1,    35,    36,    -1,    -1,
-      -1,   107,    -1,    -1,    -1,    44,    -1,    35,    36,    -1,
-      -1,   117,    51,    52,   120,    54,    44,   123,   124,    -1,
-      59,    -1,    -1,    51,    52,    -1,    54,   133,    67,    -1,
-      -1,    59,    -1,   139,    -1,    -1,    -1,    -1,   144,    67,
-      -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,
-      89,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
-      -1,    89,    -1,    -1,    92,    -1,    -1,    -1,   107,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   107,
-      -1,    -1,    -1,    -1,   123,   124,    -1,    -1,    -1,   117,
-      -1,    -1,    -1,    -1,   133,   123,   124,    -1,    -1,    -1,
-     139,    -1,    -1,    -1,    -1,   133,    -1,    -1,    -1,    -1,
-      -1,   139
+      -1,    -1,    89,    -1,    -1,    92,    -1,    -1,    -1,    -1,
+      -1,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    -1,
+     107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,
+     117,    -1,    -1,   120,    -1,    -1,   123,   124,    -1,    -1,
+      -1,    -1,    35,    36,    -1,    -1,   133,   134,    -1,    -1,
+      43,    44,   139,    -1,    -1,    -1,    -1,   144,    51,    52,
+      -1,    54,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,
+      -1,    64,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
+      -1,    -1,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    21,
+      22,   114,    -1,    -1,   117,    -1,    -1,   120,    -1,    -1,
+     123,   124,    -1,    35,    36,    -1,    -1,    -1,    -1,    -1,
+     133,    43,    44,    -1,    -1,    -1,   139,    -1,    -1,    51,
+      52,   144,    54,    -1,    -1,    -1,    -1,    59,    -1,    -1,
+      -1,    63,    64,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
+      82,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
+      92,    -1,    -1,     4,     5,     6,     7,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,
+      21,    22,    -1,    -1,    -1,   117,    -1,    -1,   120,    -1,
+      -1,   123,   124,    -1,    35,    36,    -1,    -1,    -1,    -1,
+      -1,   133,    43,    44,    -1,    -1,    -1,   139,    -1,    -1,
+      51,    52,   144,    54,    -1,    -1,    -1,    -1,    59,    -1,
+      -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      81,    82,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
+      -1,    92,    -1,    -1,     4,     5,     6,     7,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,
+      -1,    21,    22,    -1,    -1,    -1,   117,    -1,    -1,   120,
+      -1,    -1,   123,   124,    -1,    35,    36,    -1,    -1,    -1,
+      -1,    -1,   133,    43,    44,    -1,    -1,    -1,   139,    -1,
+      -1,    51,    52,   144,    54,    -1,    -1,    -1,    -1,    59,
+      -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    81,    82,     5,    -1,     7,    -1,    -1,    -1,    89,
+      -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    21,
+      22,    -1,    35,    36,    -1,    -1,    -1,   107,    -1,    -1,
+      -1,    44,    -1,    35,    36,    -1,    -1,   117,    51,    52,
+     120,    54,    44,   123,   124,    -1,    59,    -1,    -1,    51,
+      52,    -1,    54,   133,    67,    -1,    -1,    59,    -1,   139,
+      -1,    -1,    -1,    -1,   144,    67,    -1,    -1,    81,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    81,
+      82,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
+      92,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   117,   107,    -1,    -1,    -1,    -1,
+     123,   124,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,
+     133,   123,   124,    -1,    -1,    -1,   139,    -1,    -1,    -1,
+      -1,   133,    -1,    -1,    -1,    -1,    -1,   139
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1376,58 +1369,59 @@
        0,     1,     3,    32,    48,    49,    56,    60,    80,   105,
      114,   130,   137,   140,   149,   150,   151,   152,   153,   154,
      155,   177,   178,   181,   182,   185,   187,   190,   191,   192,
-     256,   257,   121,     4,     6,   190,   254,    78,   121,    71,
-     121,    83,    28,    58,   193,   254,   188,   189,   204,   254,
+     257,   258,   121,     4,     6,   190,   255,    78,   121,    71,
+     121,    83,    28,    58,   193,   255,   188,   189,   204,   255,
        0,   140,   142,    48,    80,   190,    29,   137,   186,    30,
-     140,   143,     3,   254,   125,   179,    71,   179,   254,   254,
-     254,   254,   254,     5,     7,    21,    22,    23,    35,    36,
+     140,   143,     3,   255,   125,   179,    71,   179,   255,   255,
+     255,   255,   255,     5,     7,    21,    22,    23,    35,    36,
       43,    44,    51,    52,    54,    59,    64,    67,    81,    82,
       89,    92,   107,   117,   120,   123,   124,   133,   139,   144,
      158,   194,   195,   196,   198,   230,   231,   232,   233,   234,
-     235,   236,   237,   244,   247,   250,   254,   115,   146,    33,
+     235,   236,   237,   244,   248,   251,   255,   115,   146,    33,
      144,   190,    83,   186,   193,   104,   192,    31,    60,     5,
      118,   119,   137,   180,     5,   180,    95,   144,   135,   224,
      225,   132,   144,   192,     7,     7,   134,   230,   240,   241,
      144,    82,   144,     5,   144,   144,    82,   190,   230,     5,
-      71,   197,   146,    21,    22,    33,   251,   254,    23,    24,
-     147,   252,    98,    22,   233,    27,   144,   183,   184,   254,
-     189,   144,   198,   253,   254,   179,   254,   191,     7,    46,
-      47,    46,    47,   144,   180,   254,   156,   157,   254,    10,
-      63,   144,   226,   227,   228,   229,   230,   247,   144,   253,
-     226,   134,   238,   239,    61,   241,   242,     7,    53,    76,
-      90,    91,   113,   138,   245,   245,   230,     7,   145,   145,
-     144,   198,   201,   202,   205,   234,   254,   224,   196,   254,
-     231,   232,   144,   254,   254,    23,    58,   145,   230,   243,
-     146,   224,    11,   145,   146,   180,   192,   156,    45,    70,
-     103,   129,   162,   254,   254,   169,   170,   171,   172,   173,
-     174,   254,   144,   165,   145,   146,    82,   158,   229,   198,
-     226,   230,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    77,   249,    20,   244,   246,   145,
-     122,   230,   239,   242,   230,    62,   145,    71,    71,   145,
-     201,    33,   203,   204,    72,    79,    87,   109,   200,   146,
-     203,    39,   127,   199,    73,   206,    99,   213,   214,   145,
-     243,   145,   146,   184,   230,   254,   144,    85,    85,   144,
-     145,   146,     5,     7,    28,    65,    94,    95,   126,   144,
-     254,   255,   247,   248,   254,   131,   162,   163,   164,   156,
-      10,    45,    55,    92,   103,   108,   129,   159,   160,   161,
-     145,   227,   228,    17,    18,    19,    77,   230,   144,   198,
-     230,    10,    92,   145,   146,   132,   230,   122,    62,   230,
-       7,   145,   204,    97,    97,    97,    84,   201,     7,     7,
-     203,    42,    75,   207,    42,   145,    96,   215,   145,   230,
-     226,   144,   144,   253,   170,   253,   145,   146,    37,    40,
-      41,   116,   175,   146,   137,   166,    92,   144,   244,    85,
-     254,   159,   230,   144,   198,     9,   243,    92,   244,   144,
-     230,   145,    69,   145,   202,   101,   101,   243,   226,    96,
-     208,   243,    42,   106,   112,   216,   217,   145,   253,   253,
-     145,   145,   247,   144,   176,   162,    38,    99,   167,   226,
-     144,     9,   243,   230,   145,   246,     7,    95,    42,    88,
-     209,   220,   221,   230,    19,   145,   145,   169,   144,    42,
-     145,   254,   230,   145,   145,   145,   226,   220,     7,   136,
-     210,   211,   212,   146,    34,    57,   222,     7,    50,   128,
-     218,   108,   145,   169,    74,   106,   168,   145,   254,   212,
-     221,    93,   223,   102,   110,   102,     9,   254,   145,   144,
-      33,    66,    86,     7,    50,   128,   219,   144,   253,   144,
-      68,   110,    68,   253,   145,   213,   145,   100,   145,     7
+      71,   197,   146,    21,    22,    33,   252,   255,    23,    24,
+     147,   253,    98,    22,   233,    27,   144,   183,   184,   255,
+     189,   144,   198,   254,   255,   179,   255,   191,     7,    46,
+      47,    46,    47,   144,   180,   255,   156,   157,   255,    10,
+      63,   144,   226,   227,   228,   229,   230,   248,   144,   247,
+     254,   226,   134,   238,   239,    61,   241,   242,     7,    53,
+      76,    90,    91,   113,   138,   245,   245,   230,     7,   145,
+     145,   144,   198,   201,   202,   205,   234,   255,   224,   196,
+     255,   231,   232,   144,   255,   255,    23,    58,   145,   230,
+     243,   146,   224,    11,   145,   146,   180,   192,   156,    45,
+      70,   103,   129,   162,   255,   255,   169,   170,   171,   172,
+     173,   174,   255,   144,   165,   145,   146,    82,   158,   229,
+     198,   226,   230,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    77,   250,    20,   244,   246,
+     146,   145,   122,   230,   239,   242,   230,    62,   145,    71,
+      71,   145,   201,    33,   203,   204,    72,    79,    87,   109,
+     200,   146,   203,    39,   127,   199,    73,   206,    99,   213,
+     214,   145,   243,   145,   146,   184,   230,   255,   144,    85,
+      85,   144,   145,   146,     5,     7,    28,    65,    94,    95,
+     126,   144,   255,   256,   248,   249,   255,   131,   162,   163,
+     164,   156,    10,    45,    55,    92,   103,   108,   129,   159,
+     160,   161,   145,   227,   228,    17,    18,    19,    77,   230,
+     144,   198,   230,    10,    92,   145,   146,   144,   132,   230,
+     122,    62,   230,     7,   145,   204,    97,    97,    97,    84,
+     201,     7,     7,   203,    42,    75,   207,    42,   145,    96,
+     215,   145,   230,   226,   144,   144,   254,   170,   254,   145,
+     146,    37,    40,    41,   116,   175,   146,   137,   166,    92,
+     144,   244,    85,   255,   159,   230,   144,   198,     9,   243,
+      92,   244,   246,   144,   230,   145,    69,   145,   202,   101,
+     101,   243,   226,    96,   208,   243,    42,   106,   112,   216,
+     217,   145,   254,   254,   145,   145,   248,   144,   176,   162,
+      38,    99,   167,   226,   144,     9,   243,   230,   145,   145,
+     246,     7,    95,    42,    88,   209,   220,   221,   230,    19,
+     145,   145,   169,   144,    42,   145,   255,   230,   145,   145,
+     145,   226,   220,     7,   136,   210,   211,   212,   146,    34,
+      57,   222,     7,    50,   128,   218,   108,   145,   169,    74,
+     106,   168,   145,   255,   212,   221,    93,   223,   102,   110,
+     102,     9,   255,   145,   144,    33,    66,    86,     7,    50,
+     128,   219,   144,   254,   144,    68,   110,    68,   254,   145,
+     213,   145,   100,   145,     7
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1460,9 +1454,10 @@
      237,   237,   238,   238,   239,   240,   240,   241,   242,   242,
      243,   243,   244,   244,   244,   244,   244,   244,   244,   244,
      245,   245,   245,   245,   245,   245,   246,   246,   247,   247,
-     248,   248,   249,   249,   249,   249,   249,   249,   249,   249,
-     249,   249,   250,   251,   251,   252,   252,   252,   253,   253,
-     254,   254,   255,   255,   255,   255,   256,   257,   257
+     248,   248,   249,   249,   250,   250,   250,   250,   250,   250,
+     250,   250,   250,   250,   251,   252,   252,   253,   253,   253,
+     254,   254,   255,   255,   256,   256,   256,   256,   257,   258,
+     258
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1477,7 +1472,7 @@
       10,     4,     3,     1,     0,     1,     0,     3,     0,     5,
        0,     8,     1,     1,     1,     3,     1,     1,     1,     1,
        2,     2,     2,     4,     2,     2,     1,     1,     1,     1,
-       0,     3,    10,     7,     4,     5,     5,     4,     4,     5,
+       0,     3,    10,     5,     4,     5,     5,     4,     4,     5,
        2,     2,     2,     0,     4,     5,     4,     3,     1,     3,
        2,     3,     0,     3,     2,     1,     3,     3,     4,     1,
        3,     1,    10,     0,     1,     1,     1,     1,     1,     3,
@@ -1494,10 +1489,11 @@
        1,     3,     1,     3,     4,     4,     5,     6,     6,     8,
        5,     4,     1,     2,     4,     1,     2,     4,     0,     2,
        1,     3,     1,     1,     2,     2,     1,     2,     3,     2,
-       1,     1,     1,     1,     1,     1,     1,     3,     1,     3,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     2,
-       1,     2,     1,     1,     1,     1,     1,     1,     1,     3,
-       1,     1,     1,     1,     1,     1,     2,     2,     0
+       1,     1,     1,     1,     1,     1,     1,     3,     3,     5,
+       1,     3,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     2,     1,     2,     1,     1,     1,     1,     1,     1,
+       1,     3,     1,     1,     1,     1,     1,     1,     2,     2,
+       0
 };
 
 
@@ -1994,1071 +1990,1081 @@
   switch (yytype)
     {
           case 3: /* TOKEN_COMMAND  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2004 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2000 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 4: /* TOKEN_NAME  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2014 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2010 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 5: /* TOKEN_STRING_SINGLE_QUOTED  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2024 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2020 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 6: /* TOKEN_STRING_DOUBLE_QUOTED  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2034 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2030 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 7: /* TOKEN_UNSIGNED_NUMVAL  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).numeric_literal_value_) != nullptr) {
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2044 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2040 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 150: /* sql_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2054 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2050 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 151: /* quit_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).quit_statement_) != nullptr) {
     delete ((*yyvaluep).quit_statement_);
   }
 }
-#line 2064 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2060 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 152: /* alter_table_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2074 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2070 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 153: /* create_table_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).create_table_statement_) != nullptr) {
     delete ((*yyvaluep).create_table_statement_);
   }
 }
-#line 2084 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2080 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 154: /* create_index_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2094 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2090 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 155: /* drop_table_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).drop_table_statement_) != nullptr) {
     delete ((*yyvaluep).drop_table_statement_);
   }
 }
-#line 2104 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2100 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 156: /* column_def  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_definition_) != nullptr) {
     delete ((*yyvaluep).attribute_definition_);
   }
 }
-#line 2114 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2110 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 157: /* column_def_commalist  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_definition_list_) != nullptr) {
     delete ((*yyvaluep).attribute_definition_list_);
   }
 }
-#line 2124 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2120 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 158: /* data_type  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).data_type_) != nullptr) {
     delete ((*yyvaluep).data_type_);
   }
 }
-#line 2134 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2130 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 159: /* column_constraint_def  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_) != nullptr) {
     delete ((*yyvaluep).column_constraint_);
   }
 }
-#line 2144 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2140 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 160: /* column_constraint_def_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_list_) != nullptr) {
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2154 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2150 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 161: /* opt_column_constraint_def_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_list_) != nullptr) {
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2164 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2160 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 165: /* opt_column_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_list_) != nullptr) {
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2174 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2170 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 166: /* opt_block_properties  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).block_properties_) != nullptr) {
     delete ((*yyvaluep).block_properties_);
   }
 }
-#line 2184 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2180 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 167: /* opt_partition_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).partition_clause_) != nullptr) {
     delete ((*yyvaluep).partition_clause_);
   }
 }
-#line 2194 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2190 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 168: /* partition_type  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2204 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2200 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 169: /* key_value_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_list_) != nullptr) {
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2214 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2210 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 170: /* key_value  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_) != nullptr) {
     delete ((*yyvaluep).key_value_);
   }
 }
-#line 2224 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2220 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 171: /* key_string_value  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_string_value_) != nullptr) {
     delete ((*yyvaluep).key_string_value_);
   }
 }
-#line 2234 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2230 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 172: /* key_string_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_string_list_) != nullptr) {
     delete ((*yyvaluep).key_string_list_);
   }
 }
-#line 2244 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2240 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 173: /* key_integer_value  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_integer_value_) != nullptr) {
     delete ((*yyvaluep).key_integer_value_);
   }
 }
-#line 2254 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2250 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 174: /* key_bool_value  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_bool_value_) != nullptr) {
     delete ((*yyvaluep).key_bool_value_);
   }
 }
-#line 2264 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2260 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 175: /* index_type  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2274 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2270 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 176: /* opt_index_properties  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_list_) != nullptr) {
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2284 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2280 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 177: /* insert_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).insert_statement_) != nullptr) {
     delete ((*yyvaluep).insert_statement_);
   }
 }
-#line 2294 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2290 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 178: /* copy_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).copy_statement_) != nullptr) {
     delete ((*yyvaluep).copy_statement_);
   }
 }
-#line 2304 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2300 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 179: /* copy_to_target  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2314 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2310 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 180: /* opt_copy_params  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_list_) != nullptr) {
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2324 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2320 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 181: /* update_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).update_statement_) != nullptr) {
     delete ((*yyvaluep).update_statement_);
   }
 }
-#line 2334 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2330 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 182: /* delete_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).delete_statement_) != nullptr) {
     delete ((*yyvaluep).delete_statement_);
   }
 }
-#line 2344 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2340 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 183: /* assignment_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).assignment_list_) != nullptr) {
     delete ((*yyvaluep).assignment_list_);
   }
 }
-#line 2354 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2350 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 184: /* assignment_item  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).assignment_) != nullptr) {
     delete ((*yyvaluep).assignment_);
   }
 }
-#line 2364 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2360 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 185: /* set_operation_statement  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).set_operation_statement_) != nullptr) {
     delete ((*yyvaluep).set_operation_statement_);
   }
 }
-#line 2374 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2370 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 186: /* opt_priority_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_priority_clause_) != nullptr) {
     delete ((*yyvaluep).opt_priority_clause_);
   }
 }
-#line 2384 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2380 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 187: /* with_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).with_list_) != nullptr) {
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2394 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2390 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 188: /* with_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).with_list_) != nullptr) {
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2404 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2400 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 189: /* with_list_element  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).with_list_element_) != nullptr) {
     delete ((*yyvaluep).with_list_element_);
   }
 }
-#line 2414 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2410 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 190: /* set_operation_union  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).set_operation_) != nullptr) {
     delete ((*yyvaluep).set_operation_);
   }
 }
-#line 2424 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2420 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 191: /* set_operation_intersect  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).set_operation_) != nullptr) {
     delete ((*yyvaluep).set_operation_);
   }
 }
-#line 2434 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2430 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 192: /* select_query  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).select_query_) != nullptr) {
     delete ((*yyvaluep).select_query_);
   }
 }
-#line 2444 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2440 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 193: /* opt_all_distinct  */
-#line 625 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 629 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2450 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2446 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 194: /* selection  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).selection_) != nullptr) {
     delete ((*yyvaluep).selection_);
   }
 }
-#line 2460 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2456 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 195: /* selection_item_commalist  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).selection_list_) != nullptr) {
     delete ((*yyvaluep).selection_list_);
   }
 }
-#line 2470 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2466 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 196: /* selection_item  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).selection_item_) != nullptr) {
     delete ((*yyvaluep).selection_item_);
   }
 }
-#line 2480 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2476 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 197: /* from_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_list_) != nullptr) {
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2490 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2486 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 198: /* subquery_expression  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).subquery_expression_) != nullptr) {
     delete ((*yyvaluep).subquery_expression_);
   }
 }
-#line 2500 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2496 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 199: /* opt_sample_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_sample_clause_) != nullptr) {
     delete ((*yyvaluep).opt_sample_clause_);
   }
 }
-#line 2510 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2506 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 200: /* join_type  */
-#line 629 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 633 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2516 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2512 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 201: /* joined_table_reference  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_) != nullptr) {
     delete ((*yyvaluep).table_reference_);
   }
 }
-#line 2526 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2522 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 202: /* table_reference  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_) != nullptr) {
     delete ((*yyvaluep).table_reference_);
   }
 }
-#line 2536 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2532 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 203: /* table_reference_signature  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_signature_) != nullptr) {
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2546 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2542 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 204: /* table_reference_signature_primary  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_signature_) != nullptr) {
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2556 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2552 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 205: /* joined_table_reference_commalist  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_list_) != nullptr) {
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2566 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2562 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 206: /* opt_group_by_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_group_by_clause_) != nullptr) {
     delete ((*yyvaluep).opt_group_by_clause_);
   }
 }
-#line 2576 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2572 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 207: /* opt_having_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_having_clause_) != nullptr) {
     delete ((*yyvaluep).opt_having_clause_);
   }
 }
-#line 2586 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2582 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 208: /* opt_order_by_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_order_by_clause_) != nullptr) {
     delete ((*yyvaluep).opt_order_by_clause_);
   }
 }
-#line 2596 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2592 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 209: /* opt_limit_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_limit_clause_) != nullptr) {
     delete ((*yyvaluep).opt_limit_clause_);
   }
 }
-#line 2606 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2602 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 210: /* opt_window_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_window_clause_) != nullptr) {
     delete ((*yyvaluep).opt_window_clause_);
   }
 }
-#line 2616 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2612 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 211: /* window_declaration_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_window_clause_) != nullptr) {
     delete ((*yyvaluep).opt_window_clause_);
   }
 }
-#line 2626 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2622 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 212: /* window_declaration  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_definition_) != nullptr) {
     delete ((*yyvaluep).window_definition_);
   }
 }
-#line 2636 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2632 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 213: /* window_definition  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_definition_) != nullptr) {
     delete ((*yyvaluep).window_definition_);
   }
 }
-#line 2646 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2642 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 214: /* opt_window_partition  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_partition_by_list_) != nullptr) {
     delete ((*yyvaluep).window_partition_by_list_);
   }
 }
-#line 2656 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2652 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 215: /* opt_window_order  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_order_by_list_) != nullptr) {
     delete ((*yyvaluep).window_order_by_list_);
   }
 }
-#line 2666 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2662 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 216: /* opt_window_frame  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_frame_info_) != nullptr) {
     delete ((*yyvaluep).window_frame_info_);
   }
 }
-#line 2676 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2672 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 217: /* frame_mode  */
-#line 625 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 629 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2682 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2678 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 218: /* frame_preceding  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).numeric_literal_value_) != nullptr) {
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2692 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2688 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 219: /* frame_following  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).numeric_literal_value_) != nullptr) {
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2702 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2698 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 220: /* order_commalist  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).order_commalist_) != nullptr) {
     delete ((*yyvaluep).order_commalist_);
   }
 }
-#line 2712 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2708 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 221: /* order_item  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).order_item_) != nullptr) {
     delete ((*yyvaluep).order_item_);
   }
 }
-#line 2722 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2718 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 222: /* opt_order_direction  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).order_direction_) != nullptr) {
     delete ((*yyvaluep).order_direction_);
   }
 }
-#line 2732 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2728 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 223: /* opt_nulls_first  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).order_direction_) != nullptr) {
     delete ((*yyvaluep).order_direction_);
   }
 }
-#line 2742 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2738 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 224: /* opt_where_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2752 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2748 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 225: /* where_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2762 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2758 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 226: /* or_expression  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2772 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2768 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 227: /* and_expression  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2782 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2778 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 228: /* not_expression  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2792 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2788 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 229: /* predicate_expression_base  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2802 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2798 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 230: /* add_expression  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2812 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2808 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 231: /* multiply_expression  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2822 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2818 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 232: /* unary_expression  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2832 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2828 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 233: /* expression_base  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2842 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2838 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 234: /* function_call  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).function_call_) != nullptr) {
     delete ((*yyvaluep).function_call_);
   }
 }
-#line 2852 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2848 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 235: /* extract_function  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2862 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2858 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 236: /* substr_function  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2872 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2868 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 237: /* case_expression  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2882 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2878 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 238: /* simple_when_clause_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).simple_when_clause_list_) != nullptr) {
     delete ((*yyvaluep).simple_when_clause_list_);
   }
 }
-#line 2892 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2888 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 239: /* simple_when_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).simple_when_clause_) != nullptr) {
     delete ((*yyvaluep).simple_when_clause_);
   }
 }
-#line 2902 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2898 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 240: /* searched_when_clause_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).searched_when_clause_list_) != nullptr) {
     delete ((*yyvaluep).searched_when_clause_list_);
   }
 }
-#line 2912 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2908 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 241: /* searched_when_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).searched_when_clause_) != nullptr) {
     delete ((*yyvaluep).searched_when_clause_);
   }
 }
-#line 2922 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2918 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 242: /* opt_else_clause  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2932 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2928 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 243: /* expression_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_list_) != nullptr) {
     delete ((*yyvaluep).expression_list_);
   }
 }
-#line 2942 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2938 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 244: /* literal_value  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).literal_value_) != nullptr) {
     delete ((*yyvaluep).literal_value_);
   }
 }
-#line 2952 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2948 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 245: /* datetime_unit  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2962 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2958 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 246: /* literal_value_commalist  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).literal_value_list_) != nullptr) {
     delete ((*yyvaluep).literal_value_list_);
   }
 }
-#line 2972 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2968 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 247: /* attribute_ref  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 247: /* literal_value_commalist_multiple  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
+      {
+  if (((*yyvaluep).literal_value_list_multiple_) != nullptr) {
+    delete ((*yyvaluep).literal_value_list_multiple_);
+  }
+}
+#line 2978 "SqlParser_gen.cpp" /* yacc.c:1257  */
+        break;
+
+    case 248: /* attribute_ref  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_) != nullptr) {
     delete ((*yyvaluep).attribute_);
   }
 }
-#line 2982 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2988 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 248: /* attribute_ref_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 249: /* attribute_ref_list  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_list_) != nullptr) {
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2992 "SqlParser_gen.cpp" /* yacc.c:1257  */
-        break;
-
-    case 249: /* comparison_operation  */
-#line 626 "../SqlParser.ypp" /* yacc.c:1257  */
-      { }
 #line 2998 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 250: /* unary_operation  */
-#line 627 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 250: /* comparison_operation  */
+#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
 #line 3004 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 251: /* add_operation  */
-#line 628 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 251: /* unary_operation  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
 #line 3010 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 252: /* multiply_operation  */
-#line 628 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 252: /* add_operation  */
+#line 632 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
 #line 3016 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 253: /* name_commalist  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 253: /* multiply_operation  */
+#line 632 "../SqlParser.ypp" /* yacc.c:1257  */
+      { }
+#line 3022 "SqlParser_gen.cpp" /* yacc.c:1257  */
+        break;
+
+    case 254: /* name_commalist  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_list_) != nullptr) {
     delete ((*yyvaluep).string_list_);
   }
 }
-#line 3026 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3032 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 254: /* any_name  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 255: /* any_name  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 3036 "SqlParser_gen.cpp" /* yacc.c:1257  */
-        break;
-
-    case 255: /* boolean_value  */
-#line 625 "../SqlParser.ypp" /* yacc.c:1257  */
-      { }
 #line 3042 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 256: /* command  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 256: /* boolean_value  */
+#line 629 "../SqlParser.ypp" /* yacc.c:1257  */
+      { }
+#line 3048 "SqlParser_gen.cpp" /* yacc.c:1257  */
+        break;
+
+    case 257: /* command  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).command_) != nullptr) {
     delete ((*yyvaluep).command_);
   }
 }
-#line 3052 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3058 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 257: /* command_argument_list  */
-#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 258: /* command_argument_list  */
+#line 635 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).command_argument_list_) != nullptr) {
     delete ((*yyvaluep).command_argument_list_);
   }
 }
-#line 3062 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3068 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
 
@@ -3350,148 +3356,148 @@
   switch (yyn)
     {
         case 2:
-#line 640 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    *parsedStatement = (yyvsp[-1].statement_);
-    YYACCEPT;
-  }
-#line 3359 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 3:
 #line 644 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].statement_);
     YYACCEPT;
   }
-#line 3368 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3365 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 3:
+#line 648 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    *parsedStatement = (yyvsp[-1].statement_);
+    YYACCEPT;
+  }
+#line 3374 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 4:
-#line 648 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    *parsedStatement = (yyvsp[-1].command_);
-    YYACCEPT;
-  }
-#line 3377 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 5:
 #line 652 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].command_);
     YYACCEPT;
   }
-#line 3386 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3383 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 5:
+#line 656 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    *parsedStatement = (yyvsp[-1].command_);
+    YYACCEPT;
+  }
+#line 3392 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 6:
-#line 656 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 660 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     YYABORT;
   }
-#line 3394 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3400 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 7:
-#line 659 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 663 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     // Regular yyparse() return codes are non-negative, so use a negative one here.
     return -1;
   }
-#line 3403 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3409 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 8:
-#line 666 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 670 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].statement_);
   }
-#line 3411 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3417 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 9:
-#line 669 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 673 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].copy_statement_);
   }
-#line 3419 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3425 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 10:
-#line 672 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 676 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].create_table_statement_);
   }
-#line 3427 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3433 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 11:
-#line 675 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 679 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].statement_);
   }
-#line 3435 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3441 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 12:
-#line 678 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 682 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].delete_statement_);
   }
-#line 3443 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3449 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 13:
-#line 681 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 685 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].drop_table_statement_);
   }
-#line 3451 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3457 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 14:
-#line 684 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 688 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].insert_statement_);
   }
-#line 3459 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3465 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 15:
-#line 687 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 691 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].quit_statement_);
   }
-#line 3467 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3473 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 16:
-#line 690 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 694 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].set_operation_statement_);
   }
-#line 3475 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3481 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 17:
-#line 693 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 697 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].update_statement_);
   }
-#line 3483 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3489 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 18:
-#line 699 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 703 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.quit_statement_) = new quickstep::ParseStatementQuit((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 3491 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3497 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 19:
-#line 705 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 709 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     delete (yyvsp[0].attribute_definition_);
@@ -3499,22 +3505,22 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3503 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3509 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 20:
-#line 712 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 716 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     (yyval.statement_) = nullptr;
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3514 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3520 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 21:
-#line 718 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 722 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     delete (yyvsp[0].string_value_);
@@ -3522,11 +3528,11 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3526 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3532 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 22:
-#line 725 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 729 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     delete (yyvsp[0].string_value_);
@@ -3534,19 +3540,19 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3538 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3544 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 23:
-#line 734 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 738 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.create_table_statement_) = new quickstep::ParseStatementCreateTable((yylsp[-8]).first_line, (yylsp[-8]).first_column, (yyvsp[-6].string_value_), (yyvsp[-4].attribute_definition_list_), (yyvsp[-1].block_properties_), (yyvsp[0].partition_clause_));
   }
-#line 3546 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3552 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 24:
-#line 739 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 743 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].key_value_list_)) {
       (yyval.statement_) = new quickstep::ParseStatementCreateIndex((yylsp[-8]).first_line, (yylsp[-8]).first_column, (yyvsp[-6].string_value_), (yyvsp[-4].string_value_), (yyvsp[-3].attribute_list_), (yyvsp[-1].string_value_), (yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].key_value_list_));
@@ -3554,153 +3560,153 @@
       (yyval.statement_) = new quickstep::ParseStatementCreateIndex((yylsp[-8]).first_line, (yylsp[-8]).first_column, (yyvsp[-6].string_value_), (yyvsp[-4].string_value_), (yyvsp[-3].attribute_list_), (yyvsp[-1].string_value_));
     }
   }
-#line 3558 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3564 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 25:
-#line 748 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 752 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.drop_table_statement_) = new quickstep::ParseStatementDropTable((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].string_value_));
   }
-#line 3566 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3572 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 26:
-#line 753 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 757 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.attribute_definition_) = new quickstep::ParseAttributeDefinition((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].string_value_), (yyvsp[-1].data_type_), (yyvsp[0].column_constraint_list_));
   }
-#line 3574 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3580 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 27:
-#line 758 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 762 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.attribute_definition_list_) = new quickstep::PtrList<quickstep::ParseAttributeDefinition>();
     (yyval.attribute_definition_list_)->push_back((yyvsp[0].attribute_definition_));
   }
-#line 3583 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3589 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 28:
-#line 762 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 766 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.attribute_definition_list_) = (yyvsp[-2].attribute_definition_list_);
     (yyval.attribute_definition_list_)->push_back((yyvsp[0].attribute_definition_));
   }
-#line 3592 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3598 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 29:
-#line 768 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 772 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = nullptr;
     NotSupported(&(yylsp[0]), yyscanner, "BIT data type");
     YYERROR;
   }
-#line 3602 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3608 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 30:
-#line 773 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 777 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDate));
   }
-#line 3610 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3616 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 31:
-#line 776 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 780 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetime));
   }
-#line 3618 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3624 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 32:
-#line 779 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 783 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = nullptr;
     NotSupported(&(yylsp[0]), yyscanner, "TIME data type");
     YYERROR;
   }
-#line 3628 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3634 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 33:
-#line 784 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 788 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetime));
   }
-#line 3636 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3642 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 34:
-#line 787 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 791 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
-#line 3644 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3650 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 35:
-#line 790 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 794 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
-#line 3652 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3658 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 36:
-#line 793 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 797 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
-#line 3660 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3666 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 37:
-#line 796 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 800 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kFloat));
   }
-#line 3668 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3674 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 38:
-#line 799 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 803 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
   }
-#line 3676 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3682 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 39:
-#line 802 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 806 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
   }
-#line 3684 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3690 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 40:
-#line 805 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 809 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
   }
-#line 3692 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3698 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 41:
-#line 808 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 812 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
   }
-#line 3700 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3706 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 42:
-#line 811 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 815 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /**
      * NOTE(chasseur): This pattern exhibits a shift/reduce conflict with the
@@ -3713,27 +3719,27 @@
         "or YEARMONTH INTERVAL");
     YYERROR;
   }
-#line 3717 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3723 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 43:
-#line 823 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 827 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetimeInterval));
   }
-#line 3725 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3731 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 44:
-#line 826 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 830 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kYearMonthInterval));
   }
-#line 3733 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3739 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 45:
-#line 829 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 833 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-1].numeric_literal_value_)->float_like()) {
       delete (yyvsp[-1].numeric_literal_value_);
@@ -3752,11 +3758,11 @@
       }
     }
   }
-#line 3756 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3762 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 46:
-#line 847 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 851 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-1].numeric_literal_value_)->float_like()) {
       delete (yyvsp[-1].numeric_literal_value_);
@@ -3775,69 +3781,69 @@
       }
     }
   }
-#line 3779 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3785 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 47:
-#line 867 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 871 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = new quickstep::ParseColumnConstraintNull((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 3787 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3793 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 48:
-#line 870 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 874 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = new quickstep::ParseColumnConstraintNotNull((yylsp[-1]).first_line, (yylsp[-1]).first_column);
   }
-#line 3795 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3801 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 49:
-#line 873 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 877 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     NotSupported(&(yylsp[0]), yyscanner, "Column Constraints (UNIQUE)");
     YYERROR;
   }
-#line 3805 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3811 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 50:
-#line 878 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 882 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     NotSupported(&(yylsp[-1]), yyscanner, "Column Constraints (PRIMARY KEY)");
     YYERROR;
   }
-#line 3815 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3821 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 51:
-#line 883 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 887 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     delete (yyvsp[0].literal_value_);
     NotSupported(&(yylsp[-1]), yyscanner, "Column Constraints (DEFAULT)");
     YYERROR;
   }
-#line 3826 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3832 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 52:
-#line 889 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 893 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     delete (yyvsp[-1].predicate_);
     NotSupported(&(yylsp[-3]), yyscanner, "Column Constraints (CHECK)");
     YYERROR;
   }
-#line 3837 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3843 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 53:
-#line 895 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 899 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     delete (yyvsp[-3].string_value_);
@@ -3845,65 +3851,65 @@
     NotSupported(&(yylsp[-4]), yyscanner, "Foreign Keys");
     YYERROR;
   }
-#line 3849 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3855 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 54:
-#line 904 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 908 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_list_) = (yyvsp[-1].column_constraint_list_);
     (yyval.column_constraint_list_)->push_back((yyvsp[0].column_constraint_));
   }
-#line 3858 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3864 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 55:
-#line 908 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 912 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_list_) = new quickstep::PtrList<quickstep::ParseColumnConstraint>();
     (yyval.column_constraint_list_)->push_back((yyvsp[0].column_constraint_));
   }
-#line 3867 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3873 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 56:
-#line 914 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 918 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_list_) = nullptr;
   }
-#line 3875 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3881 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 57:
-#line 917 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 921 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_list_) = (yyvsp[0].column_constraint_list_);
   }
-#line 3883 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3889 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 58:
-#line 922 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 926 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-1].string_list_);
     NotSupported(&(yylsp[-3]), yyscanner, "Table Constraints (UNIQUE)");
     YYERROR;
   }
-#line 3893 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3899 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 59:
-#line 927 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 931 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-1].string_list_);
     NotSupported(&(yylsp[-4]), yyscanner, "Table Constraints (PRIMARY KEY)");
     YYERROR;
   }
-#line 3903 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3909 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 60:
-#line 932 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 936 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-6].string_list_);
     delete (yyvsp[-3].string_value_);
@@ -3911,95 +3917,95 @@
     NotSupported(&(yylsp[-9]), yyscanner, "Table Constraints (FOREIGN KEY)");
     YYERROR;
   }
-#line 3915 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3921 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 61:
-#line 939 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 943 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-1].predicate_);
     NotSupported(&(yylsp[-3]), yyscanner, "Table Constraints (CHECK)");
     YYERROR;
   }
-#line 3925 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3931 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 62:
-#line 946 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 950 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     NotSupported(&(yylsp[-2]), yyscanner, "Table Constraints");
     YYERROR;
   }
-#line 3934 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3940 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 63:
-#line 950 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 954 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     NotSupported(&(yylsp[0]), yyscanner, "Table Constraints");
     YYERROR;
   }
-#line 3943 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3949 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 64:
-#line 956 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 960 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /* $$ = nullptr; */
   }
-#line 3951 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3957 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 65:
-#line 959 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 963 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /* $$ = $1; */
   }
-#line 3959 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3965 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 66:
-#line 964 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 968 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.attribute_list_) = nullptr;
   }
-#line 3967 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3973 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 67:
-#line 967 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 971 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.attribute_list_) = (yyvsp[-1].attribute_list_);
   }
-#line 3975 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3981 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 68:
-#line 972 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 976 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.block_properties_) = nullptr;
   }
-#line 3983 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3989 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 69:
-#line 975 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 979 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.block_properties_) = new quickstep::ParseBlockProperties((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-1].key_value_list_));
   }
-#line 3991 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3997 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 70:
-#line 980 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 984 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.partition_clause_) = nullptr;
   }
-#line 3999 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4005 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 71:
-#line 983 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 987 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -4017,111 +4023,111 @@
       }
     }
   }
-#line 4021 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4027 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 72:
-#line 1002 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1006 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::kHashPartitionType);
   }
-#line 4029 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4035 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 73:
-#line 1005 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1009 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::kRangePartitionType);
   }
-#line 4037 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4043 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 74:
-#line 1010 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1014 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = new quickstep::PtrList<quickstep::ParseKeyValue>();
     (yyval.key_value_list_)->push_back((yyvsp[0].key_value_));
   }
-#line 4046 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4052 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 75:
-#line 1014 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1018 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = (yyvsp[-2].key_value_list_);
     (yyval.key_value_list_)->push_back((yyvsp[0].key_value_));
   }
-#line 4055 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4061 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 76:
-#line 1020 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1024 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_string_value_);
   }
-#line 4063 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4069 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 77:
-#line 1023 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1027 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_string_list_);
   }
-#line 4071 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4077 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 78:
-#line 1026 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1030 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_integer_value_);
   }
-#line 4079 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4085 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 79:
-#line 1029 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1033 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_bool_value_);
   }
-#line 4087 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4093 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 80:
-#line 1034 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1038 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_string_value_) = new quickstep::ParseKeyStringValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].string_value_));
   }
-#line 4095 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4101 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 81:
-#line 1037 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1041 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_string_value_) = new quickstep::ParseKeyStringValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].string_value_));
   }
-#line 4103 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4109 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 82:
-#line 1040 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1044 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     // This is a special case to handle the COMPRESS ALL option of the BLOCK PROPERTIES.
     (yyval.key_string_value_) = new quickstep::ParseKeyStringValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_),
         new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, "ALL"));
   }
-#line 4113 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4119 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 83:
-#line 1047 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1051 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_string_list_) = new quickstep::ParseKeyStringList((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].string_list_));
   }
-#line 4121 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4127 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 84:
-#line 1052 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1056 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -4131,72 +4137,72 @@
     }
     (yyval.key_integer_value_) = new quickstep::ParseKeyIntegerValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].numeric_literal_value_));
   }
-#line 4135 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4141 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 85:
-#line 1063 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1067 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_bool_value_) = new quickstep::ParseKeyBoolValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].boolean_value_));
   }
-#line 4143 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4149 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 86:
-#line 1068 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1072 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     // Defaults to BitWeavingV, but IndexProperties can change this to H.
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kBitWeavingV));
   }
-#line 4153 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4159 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 87:
-#line 1073 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1077 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kBloomFilter));
   }
-#line 4162 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4168 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 88:
-#line 1077 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1081 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kCSBTree));
   }
-#line 4171 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4177 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 89:
-#line 1081 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1085 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kSMA));
   }
-#line 4180 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4186 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 90:
-#line 1087 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1091 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = nullptr;
   }
-#line 4188 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4194 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 91:
-#line 1090 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1094 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = (yyvsp[-1].key_value_list_);
   }
-#line 4196 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4202 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 92:
-#line 1096 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1100 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-7].string_value_);
     delete (yyvsp[-5].string_list_);
@@ -4205,180 +4211,180 @@
     NotSupported(&(yylsp[-6]), yyscanner, "list of column names in INSERT statement");
     YYERROR;
   }
-#line 4209 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4215 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 93:
-#line 1104 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1108 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.insert_statement_) = new quickstep::ParseStatementInsertTuple((yylsp[-6]).first_line, (yylsp[-6]).first_column, (yyvsp[-4].string_value_), (yyvsp[-1].literal_value_list_));
+    (yyval.insert_statement_) = new quickstep::ParseStatementInsertTuple((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-2].string_value_), (yyvsp[0].literal_value_list_multiple_));
   }
-#line 4217 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4223 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 94:
-#line 1107 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1111 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.insert_statement_) = new quickstep::ParseStatementInsertSelection((yylsp[-3]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].select_query_), nullptr);
   }
-#line 4225 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4231 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 95:
-#line 1110 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1114 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.insert_statement_) = new quickstep::ParseStatementInsertSelection((yylsp[-4]).first_line, (yylsp[-3]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].select_query_), (yyvsp[-4].with_list_));
   }
-#line 4233 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4239 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 96:
-#line 1116 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1120 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_statement_) = new quickstep::ParseStatementCopy((yylsp[-4]).first_line, (yylsp[-4]).first_column,
                                            quickstep::ParseStatementCopy::kFrom,
                                            (yyvsp[-3].string_value_), (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4243 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4249 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 97:
-#line 1121 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1125 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_statement_) = new quickstep::ParseStatementCopy((yylsp[-3]).first_line, (yylsp[-3]).first_column,
                                            quickstep::ParseStatementCopy::kTo,
                                            (yyvsp[-2].string_value_), (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4253 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4259 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 98:
-#line 1126 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1130 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_statement_) = new quickstep::ParseStatementCopy((yylsp[-3]).first_line, (yylsp[-3]).first_column,
                                            (yyvsp[-2].set_operation_), nullptr, (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4262 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4268 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 99:
-#line 1130 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1134 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_statement_) = new quickstep::ParseStatementCopy((yylsp[-4]).first_line, (yylsp[-4]).first_column,
                                            (yyvsp[-2].set_operation_), (yyvsp[-4].with_list_), (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4271 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4277 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 100:
-#line 1136 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1140 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yyvsp[0].string_value_)->line_number(), (yyvsp[0].string_value_)->column_number(), "@" + (yyvsp[0].string_value_)->value());
     delete (yyvsp[0].string_value_);
   }
-#line 4280 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4286 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 101:
-#line 1140 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1144 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, "$stdout");
   }
-#line 4288 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4294 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 102:
-#line 1143 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1147 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, "$stderr");
   }
-#line 4296 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4302 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 103:
-#line 1148 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1152 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = nullptr;
   }
-#line 4304 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4310 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 104:
-#line 1151 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1155 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = (yyvsp[-1].key_value_list_);
   }
-#line 4312 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4318 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 105:
-#line 1156 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1160 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.update_statement_) = new quickstep::ParseStatementUpdate((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].assignment_list_), (yyvsp[0].predicate_));
   }
-#line 4320 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4326 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 106:
-#line 1161 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1165 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.delete_statement_) = new quickstep::ParseStatementDelete((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].predicate_));
   }
-#line 4328 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4334 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 107:
-#line 1166 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1170 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.assignment_list_) = (yyvsp[-2].assignment_list_);
     (yyval.assignment_list_)->push_back((yyvsp[0].assignment_));
   }
-#line 4337 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4343 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 108:
-#line 1170 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1174 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.assignment_list_) = new quickstep::PtrList<quickstep::ParseAssignment>();
     (yyval.assignment_list_)->push_back((yyvsp[0].assignment_));
   }
-#line 4346 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4352 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 109:
-#line 1176 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1180 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.assignment_) = new quickstep::ParseAssignment((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].string_value_), (yyvsp[0].expression_));
   }
-#line 4354 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4360 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 110:
-#line 1185 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1189 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_statement_) = new quickstep::ParseStatementSetOperation((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].set_operation_), nullptr, (yyvsp[0].opt_priority_clause_));
   }
-#line 4362 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4368 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 111:
-#line 1188 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1192 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_statement_) = new quickstep::ParseStatementSetOperation((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].set_operation_), (yyvsp[-2].with_list_), (yyvsp[0].opt_priority_clause_));
   }
-#line 4370 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4376 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 112:
-#line 1193 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1197 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_priority_clause_) = nullptr;
   }
-#line 4378 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4384 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 113:
-#line 1196 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1200 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -4396,46 +4402,46 @@
       }
     }
   }
-#line 4400 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4406 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 114:
-#line 1215 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1219 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_) = (yyvsp[0].with_list_);
   }
-#line 4408 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4414 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 115:
-#line 1220 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1224 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_) = new quickstep::PtrVector<quickstep::ParseSubqueryTableReference>();
     (yyval.with_list_)->push_back((yyvsp[0].with_list_element_));
   }
-#line 4417 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4423 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 116:
-#line 1224 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1228 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_) = (yyvsp[-2].with_list_);
     (yyval.with_list_)->push_back((yyvsp[0].with_list_element_));
   }
-#line 4426 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4432 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 117:
-#line 1230 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1234 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_element_) = new quickstep::ParseSubqueryTableReference((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].subquery_expression_));
     (yyval.with_list_element_)->set_table_reference_signature((yyvsp[-2].table_reference_signature_));
   }
-#line 4435 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4441 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 118:
-#line 1236 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1240 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-1].boolean_value_)) {
       (yyval.set_operation_) = new quickstep::ParseSetOperation((yylsp[-3]).first_line, (yylsp[-3]).first_column, quickstep::ParseSetOperation::kUnion);
@@ -4445,19 +4451,19 @@
     (yyval.set_operation_)->addOperand((yyvsp[-3].set_operation_));
     (yyval.set_operation_)->addOperand((yyvsp[0].set_operation_));
   }
-#line 4449 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4455 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 119:
-#line 1245 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1249 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_) = (yyvsp[0].set_operation_);
   }
-#line 4457 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4463 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 120:
-#line 1250 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1254 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_) = new quickstep::ParseSetOperation((yylsp[-2]).first_line, (yylsp[-2]).first_column, quickstep::ParseSetOperation::kIntersect);
     quickstep::ParseSetOperation *op = new quickstep::ParseSetOperation(
@@ -4466,387 +4472,387 @@
     (yyval.set_operation_)->addOperand((yyvsp[-2].set_operation_));
     (yyval.set_operation_)->addOperand(op);
   }
-#line 4470 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4476 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 121:
-#line 1258 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1262 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_) = new quickstep::ParseSetOperation((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::ParseSetOperation::kSelect);
     (yyval.set_operation_)->addOperand((yyvsp[0].select_query_));
   }
-#line 4479 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4485 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 122:
-#line 1265 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1269 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.select_query_) = new quickstep::ParseSelect((yylsp[-9]).first_line, (yylsp[-9]).first_column, (yyvsp[-7].selection_), (yyvsp[-6].table_reference_list_), (yyvsp[-5].predicate_), (yyvsp[-4].opt_group_by_clause_), (yyvsp[-3].opt_having_clause_), (yyvsp[-2].opt_order_by_clause_), (yyvsp[-1].opt_limit_clause_), (yyvsp[0].opt_window_clause_));
   }
-#line 4487 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4493 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 123:
-#line 1270 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1274 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.boolean_value_) = true;  // Distinct
   }
-#line 4495 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4501 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 124:
-#line 1273 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1277 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.boolean_value_) = false;  // All
   }
-#line 4503 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4509 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 125:
-#line 1276 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1280 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.boolean_value_) = true;  // Distinct
   }
-#line 4511 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4517 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 126:
-#line 1281 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1285 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_) = new quickstep::ParseSelectionStar((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 4519 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4525 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 127:
-#line 1284 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1288 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_) = (yyvsp[0].selection_list_);
   }
-#line 4527 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4533 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 128:
-#line 1289 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1293 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_list_) = new quickstep::ParseSelectionList((yylsp[0]).first_line, (yylsp[0]).first_column);
     (yyval.selection_list_)->add((yyvsp[0].selection_item_));
   }
-#line 4536 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4542 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 129:
-#line 1293 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1297 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_list_) = (yyvsp[-2].selection_list_);
     (yyval.selection_list_)->add((yyvsp[0].selection_item_));
   }
-#line 4545 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4551 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 130:
-#line 1299 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1303 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].expression_), (yyvsp[0].string_value_));
   }
-#line 4553 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4559 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 131:
-#line 1302 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1306 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].expression_), (yyvsp[0].string_value_));
   }
-#line 4561 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4567 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 132:
-#line 1305 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1309 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].expression_));
   }
-#line 4569 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4575 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 133:
-#line 1310 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1314 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_list_) = (yyvsp[0].table_reference_list_);
   }
-#line 4577 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4583 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 134:
-#line 1315 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1319 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.subquery_expression_) = new quickstep::ParseSubqueryExpression((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].set_operation_));
   }
-#line 4585 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4591 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 135:
-#line 1320 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1324 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_sample_clause_) = NULL;
   }
-#line 4593 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4599 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 136:
-#line 1323 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1327 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_sample_clause_) = new quickstep::ParseSample((yylsp[-2]).first_line, (yylsp[-2]).first_column, true, (yyvsp[-1].numeric_literal_value_));
   }
-#line 4601 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4607 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 137:
-#line 1326 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1330 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_sample_clause_) = new quickstep::ParseSample((yylsp[-2]).first_line, (yylsp[-2]).first_column, false, (yyvsp[-1].numeric_literal_value_));
   }
-#line 4609 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4615 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 138:
-#line 1331 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1335 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
   }
-#line 4617 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4623 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 139:
-#line 1334 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1338 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
   }
-#line 4625 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4631 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 140:
-#line 1337 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1341 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
   }
-#line 4633 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4639 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 141:
-#line 1340 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1344 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
   }
-#line 4641 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4647 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 142:
-#line 1343 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1347 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
   }
-#line 4649 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4655 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 143:
-#line 1346 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1350 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
   }
-#line 4657 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4663 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 144:
-#line 1349 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1353 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
   }
-#line 4665 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4671 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 145:
-#line 1352 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1356 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
   }
-#line 4673 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4679 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 146:
-#line 1357 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1361 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_) = new quickstep::ParseJoinedTableReference((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-4].join_type_), (yyvsp[-5].table_reference_), (yyvsp[-2].table_reference_), (yyvsp[0].predicate_));
   }
-#line 4681 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4687 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 147:
-#line 1360 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1364 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_) = (yyvsp[0].table_reference_);
   }
-#line 4689 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4695 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 148:
-#line 1365 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1369 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_) = new quickstep::ParseSubqueryTableReference((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].subquery_expression_));
     (yyval.table_reference_)->set_table_reference_signature((yyvsp[0].table_reference_signature_));
   }
-#line 4698 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4704 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 149:
-#line 1369 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1373 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_) = new quickstep::ParseSimpleTableReference((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].string_value_), (yyvsp[-1].opt_sample_clause_));
     (yyval.table_reference_)->set_table_reference_signature((yyvsp[0].table_reference_signature_));
   }
-#line 4707 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4713 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 150:
-#line 1373 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1377 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_) = new quickstep::ParseSimpleTableReference((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].opt_sample_clause_));
   }
-#line 4715 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4721 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 151:
-#line 1376 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1380 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_) = new quickstep::ParseGeneratorTableReference((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].function_call_));
     (yyval.table_reference_)->set_table_reference_signature((yyvsp[0].table_reference_signature_));
   }
-#line 4724 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4730 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 152:
-#line 1380 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1384 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_) = new quickstep::ParseGeneratorTableReference((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].function_call_));
   }
-#line 4732 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4738 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 153:
-#line 1383 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1387 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_) = (yyvsp[-1].table_reference_);
   }
-#line 4740 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4746 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 154:
-#line 1388 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1392 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_signature_) = (yyvsp[0].table_reference_signature_);
   }
-#line 4748 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4754 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 155:
-#line 1391 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1395 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_signature_) = (yyvsp[0].table_reference_signature_);
   }
-#line 4756 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4762 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 156:
-#line 1396 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1400 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_signature_) = new ::quickstep::ParseTableReferenceSignature((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].string_value_));
   }
-#line 4764 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4770 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 157:
-#line 1399 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1403 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_signature_) = new ::quickstep::ParseTableReferenceSignature((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].string_list_));
   }
-#line 4772 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4778 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 158:
-#line 1404 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1408 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_list_) = new quickstep::PtrList<quickstep::ParseTableReference>();
     (yyval.table_reference_list_)->push_back((yyvsp[0].table_reference_));
   }
-#line 4781 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4787 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 159:
-#line 1408 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1412 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_list_) = (yyvsp[-2].table_reference_list_);
     (yyval.table_reference_list_)->push_back((yyvsp[0].table_reference_));
   }
-#line 4790 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4796 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 160:
-#line 1414 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1418 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_group_by_clause_) = nullptr;
   }
-#line 4798 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4804 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 161:
-#line 1417 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1421 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_group_by_clause_) = new quickstep::ParseGroupBy((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].expression_list_));
   }
-#line 4806 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4812 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 162:
-#line 1422 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1426 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_having_clause_) = nullptr;
   }
-#line 4814 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4820 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 163:
-#line 1425 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1429 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_having_clause_) = new quickstep::ParseHaving((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].predicate_));
   }
-#line 4822 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4828 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 164:
-#line 1430 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1434 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_order_by_clause_) = nullptr;
   }
-#line 4830 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4836 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 165:
-#line 1433 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1437 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_order_by_clause_) = new quickstep::ParseOrderBy((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].order_commalist_));
   }
-#line 4838 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4844 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 166:
-#line 1438 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1442 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_limit_clause_) = nullptr;
   }
-#line 4846 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4852 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 167:
-#line 1441 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1445 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -4864,258 +4870,258 @@
       }
     }
   }
-#line 4868 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4874 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 168:
-#line 1460 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1464 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_window_clause_) = nullptr;
   }
-#line 4876 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4882 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 169:
-#line 1463 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1467 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_window_clause_) = (yyvsp[0].opt_window_clause_);
   }
-#line 4884 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4890 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 170:
-#line 1468 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1472 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_window_clause_) = new quickstep::PtrList<quickstep::ParseWindow>();
     (yyval.opt_window_clause_)->push_back((yyvsp[0].window_definition_));
   }
-#line 4893 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4899 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 171:
-#line 1472 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1476 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_window_clause_) = (yyvsp[-1].opt_window_clause_);
     (yyval.opt_window_clause_)->push_back((yyvsp[0].window_definition_));
   }
-#line 4902 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4908 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 172:
-#line 1478 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1482 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.window_definition_) = (yyvsp[-1].window_definition_);
     (yyval.window_definition_)->setName((yyvsp[-4].string_value_));
   }
-#line 4911 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4917 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 173:
-#line 1484 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1488 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.window_definition_) = new quickstep::ParseWindow((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].window_partition_by_list_), (yyvsp[-1].window_order_by_list_), (yyvsp[0].window_frame_info_));
   }
-#line 4919 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4925 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 174:
-#line 1489 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1493 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.window_partition_by_list_) = nullptr;
   }
-#line 4927 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4933 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 175:
-#line 1492 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1496 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.window_partition_by_list_) = (yyvsp[0].expression_list_);
   }
-#line 4935 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4941 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 176:
-#line 1497 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1501 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.window_order_by_list_) = nullptr;
   }
-#line 4943 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4949 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 177:
-#line 1500 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1504 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.window_order_by_list_) = (yyvsp[0].order_commalist_);
   }
-#line 4951 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4957 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 178:
-#line 1505 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1509 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.window_frame_info_) = nullptr;
   }
-#line 4959 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4965 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 179:
-#line 1508 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1512 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.window_frame_info_) = new quickstep::ParseFrameInfo((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-4].boolean_value_), (yyvsp[-2].numeric_literal_value_)->long_value(), (yyvsp[0].numeric_literal_value_)->long_value());
   }
-#line 4967 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4973 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 180:
-#line 1513 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1517 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.boolean_value_) = true;
   }
-#line 4975 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4981 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 181:
-#line 1516 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1520 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.boolean_value_) = false;
   }
-#line 4983 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4989 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 183:
-#line 1522 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1526 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "-1");
   }
-#line 4991 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4997 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 184:
-#line 1525 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1529 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "0");
   }
-#line 4999 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5005 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 186:
-#line 1531 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1535 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "-1");
   }
-#line 5007 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5013 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 187:
-#line 1534 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1538 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "0");
   }
-#line 5015 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5021 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 188:
-#line 1539 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1543 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_commalist_) = new quickstep::PtrList<quickstep::ParseOrderByItem>();
     (yyval.order_commalist_)->push_back((yyvsp[0].order_item_));
   }
-#line 5024 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5030 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 189:
-#line 1543 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1547 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_commalist_) = (yyvsp[-2].order_commalist_);
     (yyval.order_commalist_)->push_back((yyvsp[0].order_item_));
   }
-#line 5033 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5039 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 190:
-#line 1549 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1553 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_item_) = new quickstep::ParseOrderByItem((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].expression_), (yyvsp[-1].order_direction_), (yyvsp[0].order_direction_));
     delete (yyvsp[-1].order_direction_);
     delete (yyvsp[0].order_direction_);
   }
-#line 5043 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5049 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 191:
-#line 1556 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1560 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_direction_) = nullptr;
   }
-#line 5051 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5057 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 192:
-#line 1559 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1563 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_direction_) = new bool(true);
   }
-#line 5059 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5065 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 193:
-#line 1562 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1566 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_direction_) = new bool(false);
   }
-#line 5067 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5073 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 194:
-#line 1567 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1571 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_direction_) = nullptr;
   }
-#line 5075 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5081 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 195:
-#line 1570 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1574 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_direction_) = new bool(true);
   }
-#line 5083 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5089 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 196:
-#line 1573 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1577 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_direction_) = new bool(false);
   }
-#line 5091 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5097 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 197:
-#line 1579 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1583 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = nullptr;
   }
-#line 5099 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5105 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 198:
-#line 1582 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1586 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5107 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5113 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 199:
-#line 1587 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1591 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5115 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5121 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 200:
-#line 1592 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1596 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-2].predicate_)->getParsePredicateType() == quickstep::ParsePredicate::kDisjunction) {
       (yyval.predicate_) = (yyvsp[-2].predicate_);
@@ -5125,19 +5131,19 @@
     }
     static_cast<quickstep::ParsePredicateDisjunction *>((yyval.predicate_))->addPredicate((yyvsp[0].predicate_));
   }
-#line 5129 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5135 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 201:
-#line 1601 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1605 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5137 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5143 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 202:
-#line 1606 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1610 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-2].predicate_)->getParsePredicateType() == quickstep::ParsePredicate::kConjunction) {
       (yyval.predicate_) = (yyvsp[-2].predicate_);
@@ -5147,453 +5153,453 @@
     }
     static_cast<quickstep::ParsePredicateConjunction *>((yyval.predicate_))->addPredicate((yyvsp[0].predicate_));
   }
-#line 5151 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5157 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 203:
-#line 1615 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1619 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5159 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5165 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 204:
-#line 1620 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1624 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateNegation((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].predicate_));
   }
-#line 5167 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5173 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 205:
-#line 1623 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1627 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5175 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5181 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 206:
-#line 1628 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1632 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateBetween((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-4].expression_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5183 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5189 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 207:
-#line 1631 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1635 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateNegation(
         (yylsp[-4]).first_line, (yylsp[-4]).first_column,
         new quickstep::ParsePredicateBetween((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-5].expression_), (yyvsp[-2].expression_), (yyvsp[0].expression_)));
   }
-#line 5193 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5199 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 208:
-#line 1636 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1640 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].attribute_);
     (yyval.predicate_) = nullptr;
     NotSupported(&(yylsp[-2]), yyscanner, "NULL comparison predicates");
     YYERROR;
   }
-#line 5204 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5210 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 209:
-#line 1642 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1646 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-2].attribute_);
     (yyval.predicate_) = nullptr;
     NotSupported(&(yylsp[-1]), yyscanner, "NULL comparison predicates");
     YYERROR;
   }
-#line 5215 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5221 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 210:
-#line 1648 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1652 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateComparison((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].comparison_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5223 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5229 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 211:
-#line 1651 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1655 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = (yyvsp[-1].predicate_);
   }
-#line 5231 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5237 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 212:
-#line 1654 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1658 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateExists((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].subquery_expression_));
   }
-#line 5239 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5245 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 213:
-#line 1657 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1661 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateInTableQuery((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-2].expression_), (yyvsp[0].subquery_expression_));
   }
-#line 5247 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5253 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 214:
-#line 1660 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1664 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateInValueList((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-4].expression_), (yyvsp[-1].expression_list_));
   }
-#line 5255 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5261 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 215:
-#line 1663 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1667 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateNegation(
         (yylsp[-2]).first_line,
         (yylsp[-2]).first_column,
         new quickstep::ParsePredicateInTableQuery((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-3].expression_), (yyvsp[0].subquery_expression_)));
   }
-#line 5266 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5272 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 216:
-#line 1669 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1673 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateNegation(
         (yylsp[-4]).first_line,
         (yylsp[-4]).first_column,
         new quickstep::ParsePredicateInValueList((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-5].expression_), (yyvsp[-1].expression_list_)));
   }
-#line 5277 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5283 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 217:
-#line 1678 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1682 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = new quickstep::ParseBinaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].binary_operation_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5285 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5291 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 218:
-#line 1681 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1685 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5293 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5299 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 219:
-#line 1686 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1690 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = new quickstep::ParseBinaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].binary_operation_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5301 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5307 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 220:
-#line 1689 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1693 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5309 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5315 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 221:
-#line 1694 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1698 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = new quickstep::ParseUnaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].unary_operation_), (yyvsp[0].expression_));
   }
-#line 5317 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5323 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 222:
-#line 1697 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1701 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5325 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5331 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 223:
-#line 1702 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1706 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].attribute_);
   }
-#line 5333 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5339 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 224:
-#line 1705 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1709 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_));
   }
-#line 5341 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5347 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 225:
-#line 1708 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1712 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].function_call_);
   }
-#line 5349 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5355 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 226:
-#line 1711 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1715 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyvsp[-2].function_call_)->setWindowName((yyvsp[0].string_value_));
     (yyval.expression_) = (yyvsp[-2].function_call_);
   }
-#line 5358 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5364 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 227:
-#line 1715 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1719 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyvsp[-4].function_call_)->setWindow((yyvsp[-1].window_definition_));
     (yyval.expression_) = (yyvsp[-4].function_call_);
   }
-#line 5367 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5373 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 228:
-#line 1719 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1723 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5375 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5381 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 229:
-#line 1722 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1726 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5383 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5389 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 230:
-#line 1725 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1729 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5391 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5397 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 231:
-#line 1728 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1732 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[-1].expression_);
   }
-#line 5399 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5405 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 232:
-#line 1731 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1735 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].subquery_expression_);
   }
-#line 5407 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5413 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 233:
-#line 1736 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1740 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.function_call_) = new quickstep::ParseFunctionCall(
         (yylsp[-2]).first_line, (yylsp[-2]).first_column, false, (yyvsp[-2].string_value_), new quickstep::PtrList<quickstep::ParseExpression>());
   }
-#line 5416 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5422 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 234:
-#line 1740 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1744 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.function_call_) = new quickstep::ParseFunctionCall(
         (yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-3].string_value_), new quickstep::ParseStar((yylsp[-1]).first_line, (yylsp[-1]).first_column));
   }
-#line 5425 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5431 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 235:
-#line 1744 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1748 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.function_call_) = new quickstep::ParseFunctionCall((yylsp[-3]).first_line, (yylsp[-3]).first_column, false, (yyvsp[-3].string_value_), (yyvsp[-1].expression_list_));
   }
-#line 5433 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5439 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 236:
-#line 1747 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1751 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.function_call_) = new quickstep::ParseFunctionCall((yylsp[-4]).first_line, (yylsp[-4]).first_column, true, (yyvsp[-4].string_value_), (yyvsp[-1].expression_list_));
   }
-#line 5441 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5447 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 237:
-#line 1752 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1756 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = new quickstep::ParseExtractFunction((yylsp[-5]).first_line, (yylsp[-5]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].expression_));
   }
-#line 5449 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5455 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 238:
-#line 1757 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1761 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = new quickstep::ParseSubstringFunction(
         (yylsp[-5]).first_line, (yylsp[-5]).first_column, (yyvsp[-3].expression_), (yyvsp[-1].numeric_literal_value_)->long_value());
   }
-#line 5458 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5464 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 239:
-#line 1761 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1765 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = new quickstep::ParseSubstringFunction(
         (yylsp[-7]).first_line, (yylsp[-7]).first_column, (yyvsp[-5].expression_), (yyvsp[-3].numeric_literal_value_)->long_value(), (yyvsp[-1].numeric_literal_value_)->long_value());
   }
-#line 5467 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5473 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 240:
-#line 1767 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1771 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = new quickstep::ParseSimpleCaseExpression((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-3].expression_), (yyvsp[-2].simple_when_clause_list_), (yyvsp[-1].expression_));
   }
-#line 5475 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5481 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 241:
-#line 1770 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1774 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = new quickstep::ParseSearchedCaseExpression((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].searched_when_clause_list_), (yyvsp[-1].expression_));
   }
-#line 5483 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5489 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 242:
-#line 1775 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1779 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.simple_when_clause_list_) = new quickstep::PtrVector<quickstep::ParseSimpleWhenClause>;
     (yyval.simple_when_clause_list_)->push_back((yyvsp[0].simple_when_clause_));
   }
-#line 5492 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5498 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 243:
-#line 1779 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1783 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.simple_when_clause_list_) = (yyvsp[-1].simple_when_clause_list_);
     (yyval.simple_when_clause_list_)->push_back((yyvsp[0].simple_when_clause_));
   }
-#line 5501 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5507 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 244:
-#line 1785 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1789 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.simple_when_clause_) = new quickstep::ParseSimpleWhenClause((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5509 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5515 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 245:
-#line 1790 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1794 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.searched_when_clause_list_) = new quickstep::PtrVector<quickstep::ParseSearchedWhenClause>;
     (yyval.searched_when_clause_list_)->push_back((yyvsp[0].searched_when_clause_));
   }
-#line 5518 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5524 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 246:
-#line 1794 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1798 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.searched_when_clause_list_) = (yyvsp[-1].searched_when_clause_list_);
     (yyval.searched_when_clause_list_)->push_back((yyvsp[0].searched_when_clause_));
   }
-#line 5527 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5533 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 247:
-#line 1800 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1804 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.searched_when_clause_) = new quickstep::ParseSearchedWhenClause((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].predicate_), (yyvsp[0].expression_));
   }
-#line 5535 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5541 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 248:
-#line 1805 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1809 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = NULL;
   }
-#line 5543 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5549 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 249:
-#line 1808 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1812 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5551 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5557 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 250:
-#line 1813 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1817 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_list_) = new quickstep::PtrList<quickstep::ParseExpression>();
     (yyval.expression_list_)->push_back((yyvsp[0].expression_));
   }
-#line 5560 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5566 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 251:
-#line 1817 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1821 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_list_) = (yyvsp[-2].expression_list_);
     (yyval.expression_list_)->push_back((yyvsp[0].expression_));
   }
-#line 5569 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5575 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 252:
-#line 1823 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1827 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.literal_value_) = new quickstep::NullParseLiteralValue((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 5577 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5583 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 253:
-#line 1826 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1830 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
   }
-#line 5585 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5591 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 254:
-#line 1829 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1833 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
   }
-#line 5593 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5599 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 255:
-#line 1832 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1836 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /**
      * NOTE(chasseur): This case exhibits a shift/reduce conflict with the
@@ -5606,20 +5612,20 @@
     (yyvsp[0].numeric_literal_value_)->prependMinus();
     (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
   }
-#line 5610 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5616 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 256:
-#line 1844 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1848 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.literal_value_) = new quickstep::StringParseLiteralValue((yyvsp[0].string_value_),
                                                 nullptr);  // No explicit type.
   }
-#line 5619 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5625 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 257:
-#line 1848 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1852 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /**
      * NOTE(chasseur): This case exhibits a shift/reduce conflict with the
@@ -5639,11 +5645,11 @@
       YYERROR;
     }
   }
-#line 5643 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5649 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 258:
-#line 1867 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1871 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     quickstep::StringParseLiteralValue *parse_value;
     const std::string &datetime_type_value = (yyvsp[0].string_value_)->value();
@@ -5657,11 +5663,11 @@
       YYERROR;
     }
   }
-#line 5661 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5667 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 259:
-#line 1880 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1884 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     quickstep::StringParseLiteralValue *parse_value
         = new quickstep::StringParseLiteralValue((yyvsp[0].string_value_), &((yyvsp[-1].data_type_)->getType()));
@@ -5675,191 +5681,209 @@
       (yyval.literal_value_) = parse_value;
     }
   }
-#line 5679 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5685 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 260:
-#line 1895 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1899 "../SqlParser.ypp" /* yacc.c:1661  */
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("YEAR"));
   }
-#line 5687 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5693 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 261:
-#line 1898 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1902 "../SqlParser.ypp" /* yacc.c:1661  */
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("MONTH"));
   }
-#line 5695 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5701 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 262:
-#line 1901 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1905 "../SqlParser.ypp" /* yacc.c:1661  */
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("DAY"));
   }
-#line 5703 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5709 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 263:
-#line 1904 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1908 "../SqlParser.ypp" /* yacc.c:1661  */
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("HOUR"));
   }
-#line 5711 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5717 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 264:
-#line 1907 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1911 "../SqlParser.ypp" /* yacc.c:1661  */
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("MINUTE"));
   }
-#line 5719 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5725 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 265:
-#line 1910 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1914 "../SqlParser.ypp" /* yacc.c:1661  */
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("SECOND"));
   }
-#line 5727 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5733 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 266:
-#line 1915 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1919 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.literal_value_list_) = new quickstep::PtrList<quickstep::ParseScalarLiteral>();
     (yyval.literal_value_list_)->push_back(new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_)));
   }
-#line 5736 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5742 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 267:
-#line 1919 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1923 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.literal_value_list_) = (yyvsp[-2].literal_value_list_);
     (yyval.literal_value_list_)->push_back(new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_)));
   }
-#line 5745 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5751 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 268:
-#line 1925 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1929 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].string_value_));
+    (yyval.literal_value_list_multiple_) = new quickstep::PtrList<quickstep::PtrList<quickstep::ParseScalarLiteral>>();
+    (yyval.literal_value_list_multiple_)->push_back((yyvsp[-1].literal_value_list_));
   }
-#line 5753 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5760 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 269:
-#line 1928 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1933 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].string_value_), (yyvsp[-2].string_value_));
+    (yyval.literal_value_list_multiple_) = (yyvsp[-4].literal_value_list_multiple_);
+    (yyval.literal_value_list_multiple_)->push_back((yyvsp[-1].literal_value_list_));
   }
-#line 5761 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5769 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 270:
-#line 1933 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1939 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].string_value_));
+  }
+#line 5777 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 271:
+#line 1942 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].string_value_), (yyvsp[-2].string_value_));
+  }
+#line 5785 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 272:
+#line 1947 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.attribute_list_) = new quickstep::PtrList<quickstep::ParseAttribute>();
     (yyval.attribute_list_)->push_back((yyvsp[0].attribute_));
   }
-#line 5770 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5794 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 271:
-#line 1937 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 273:
+#line 1951 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.attribute_list_) = (yyvsp[-2].attribute_list_);
     (yyval.attribute_list_)->push_back((yyvsp[0].attribute_));
   }
-#line 5779 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 272:
-#line 1944 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kEqual);
-  }
-#line 5787 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 273:
-#line 1947 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotEqual);
-  }
-#line 5795 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 274:
-#line 1950 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLess);
-  }
 #line 5803 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 275:
-#line 1953 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 274:
+#line 1958 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLessOrEqual);
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kEqual);
   }
 #line 5811 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 276:
-#line 1956 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 275:
+#line 1961 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreater);
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotEqual);
   }
 #line 5819 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 277:
-#line 1959 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 276:
+#line 1964 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreaterOrEqual);
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLess);
   }
 #line 5827 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 278:
-#line 1962 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 277:
+#line 1967 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLike);
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLessOrEqual);
   }
 #line 5835 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 279:
-#line 1965 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 278:
+#line 1970 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotLike);
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreater);
   }
 #line 5843 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 280:
-#line 1968 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 279:
+#line 1973 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kRegexMatch);
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreaterOrEqual);
   }
 #line 5851 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 281:
-#line 1971 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 280:
+#line 1976 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotRegexMatch);
+    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLike);
   }
 #line 5859 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
+  case 281:
+#line 1979 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotLike);
+  }
+#line 5867 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
   case 282:
-#line 1976 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1982 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kRegexMatch);
+  }
+#line 5875 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 283:
+#line 1985 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotRegexMatch);
+  }
+#line 5883 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 284:
+#line 1990 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /**
      * NOTE(chasseur): This case exhibits a shift/reduce conflict with the
@@ -5869,146 +5893,146 @@
      **/
     (yyval.unary_operation_) = &quickstep::UnaryOperationFactory::GetUnaryOperation(quickstep::UnaryOperationID::kNegate);
   }
-#line 5873 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 283:
-#line 1987 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kAdd);
-  }
-#line 5881 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 284:
-#line 1990 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kSubtract);
-  }
-#line 5889 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 285:
-#line 1995 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kModulo);
-  }
 #line 5897 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 286:
-#line 1998 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 285:
+#line 2001 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kMultiply);
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kAdd);
   }
 #line 5905 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 287:
-#line 2001 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 286:
+#line 2004 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kDivide);
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kSubtract);
   }
 #line 5913 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
+  case 287:
+#line 2009 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kModulo);
+  }
+#line 5921 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
   case 288:
-#line 2007 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 2012 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kMultiply);
+  }
+#line 5929 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 289:
+#line 2015 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kDivide);
+  }
+#line 5937 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 290:
+#line 2021 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_list_) = new quickstep::PtrList<quickstep::ParseString>();
     (yyval.string_list_)->push_back((yyvsp[0].string_value_));
   }
-#line 5922 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5946 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 289:
-#line 2011 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 291:
+#line 2025 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_list_) = (yyvsp[-2].string_list_);
     (yyval.string_list_)->push_back((yyvsp[0].string_value_));
   }
-#line 5931 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5955 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 290:
-#line 2017 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 292:
+#line 2031 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = (yyvsp[0].string_value_);
   }
-#line 5939 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5963 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 291:
-#line 2020 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 293:
+#line 2034 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].string_value_)->value().empty()) {
       quickstep_yyerror(&(yylsp[0]), yyscanner, nullptr, "Zero-length identifier");
     }
     (yyval.string_value_) = (yyvsp[0].string_value_);
   }
-#line 5950 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 292:
-#line 2028 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = true;
-  }
-#line 5958 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 293:
-#line 2031 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = true;
-  }
-#line 5966 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 294:
-#line 2034 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = false;
-  }
 #line 5974 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 295:
-#line 2037 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 294:
+#line 2042 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.boolean_value_) = false;
+    (yyval.boolean_value_) = true;
   }
 #line 5982 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 296:
-#line 2043 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 295:
+#line 2045 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.command_) = new quickstep::ParseCommand((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].command_argument_list_));
+    (yyval.boolean_value_) = true;
   }
 #line 5990 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 297:
+  case 296:
 #line 2048 "../SqlParser.ypp" /* yacc.c:1661  */
     {
+    (yyval.boolean_value_) = false;
+  }
+#line 5998 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 297:
+#line 2051 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.boolean_value_) = false;
+  }
+#line 6006 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 298:
+#line 2057 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.command_) = new quickstep::ParseCommand((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].command_argument_list_));
+  }
+#line 6014 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 299:
+#line 2062 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
     quickstep::PtrVector<quickstep::ParseString> *argument_list = (yyvsp[-1].command_argument_list_);
     argument_list->push_back((yyvsp[0].string_value_));
     (yyval.command_argument_list_) = argument_list;
   }
-#line 6000 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6024 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 298:
-#line 2053 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 300:
+#line 2067 "../SqlParser.ypp" /* yacc.c:1661  */
     { /* Epsilon, an empy match. */
     (yyval.command_argument_list_) = new quickstep::PtrVector<quickstep::ParseString>();
   }
-#line 6008 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6032 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
 
-#line 6012 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6036 "SqlParser_gen.cpp" /* yacc.c:1661  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -6243,7 +6267,7 @@
 #endif
   return yyresult;
 }
-#line 2057 "../SqlParser.ypp" /* yacc.c:1906  */
+#line 2071 "../SqlParser.ypp" /* yacc.c:1906  */
 
 
 void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string &feature) {
diff --git a/parser/preprocessed/SqlParser_gen.hpp b/parser/preprocessed/SqlParser_gen.hpp
index f6b5247..142059d 100644
--- a/parser/preprocessed/SqlParser_gen.hpp
+++ b/parser/preprocessed/SqlParser_gen.hpp
@@ -198,6 +198,7 @@
   quickstep::NumericParseLiteralValue *numeric_literal_value_;
   quickstep::ParseLiteralValue *literal_value_;
   quickstep::PtrList<quickstep::ParseScalarLiteral> *literal_value_list_;
+  quickstep::PtrList<quickstep::PtrList<quickstep::ParseScalarLiteral>> *literal_value_list_multiple_;
 
   quickstep::ParseExpression *expression_;
 
@@ -288,7 +289,7 @@
 
   quickstep::ParsePriority *opt_priority_clause_;
 
-#line 292 "SqlParser_gen.hpp" /* yacc.c:1915  */
+#line 293 "SqlParser_gen.hpp" /* yacc.c:1915  */
 };
 
 typedef union YYSTYPE YYSTYPE;
diff --git a/query_optimizer/ExecutionGenerator.cpp b/query_optimizer/ExecutionGenerator.cpp
index 372d576..14d8949 100644
--- a/query_optimizer/ExecutionGenerator.cpp
+++ b/query_optimizer/ExecutionGenerator.cpp
@@ -1461,70 +1461,72 @@
       *catalog_database_->getRelationById(
           input_relation_info->relation->getID());
 
-  // Construct the tuple proto to be inserted.
-  const QueryContext::tuple_id tuple_index = query_context_proto_->tuples_size();
+  for (const std::vector<expressions::ScalarLiteralPtr> &tuple : physical_plan->column_values()) {
+    // Construct the tuple proto to be inserted.
+    const QueryContext::tuple_id tuple_index = query_context_proto_->tuples_size();
 
-  S::Tuple *tuple_proto = query_context_proto_->add_tuples();
-  for (const E::ScalarLiteralPtr &literal : physical_plan->column_values()) {
-    tuple_proto->add_attribute_values()->CopyFrom(literal->value().getProto());
-  }
-
-  // FIXME(qzeng): A better way is using a traits struct to look up whether a storage
-  //               block supports ad-hoc insertion instead of hard-coding the block types.
-  const StorageBlockLayout &storage_block_layout =
-      input_relation.getDefaultStorageBlockLayout();
-  if (storage_block_layout.getDescription().tuple_store_description().sub_block_type() ==
-      TupleStorageSubBlockDescription::COMPRESSED_COLUMN_STORE ||
-      storage_block_layout.getDescription().tuple_store_description().sub_block_type() ==
-            TupleStorageSubBlockDescription::COMPRESSED_PACKED_ROW_STORE) {
-    THROW_SQL_ERROR() << "INSERT statement is not supported for the relation "
-                      << input_relation.getName()
-                      << ", because its storage blocks do not support ad-hoc insertion";
-  }
-
-  // Create InsertDestination proto.
-  const QueryContext::insert_destination_id insert_destination_index =
-      query_context_proto_->insert_destinations_size();
-  S::InsertDestination *insert_destination_proto = query_context_proto_->add_insert_destinations();
-
-  insert_destination_proto->set_relation_id(input_relation.getID());
-  insert_destination_proto->mutable_layout()->MergeFrom(
-      input_relation.getDefaultStorageBlockLayout().getDescription());
-
-  if (input_relation.hasPartitionScheme()) {
-    insert_destination_proto->set_insert_destination_type(S::InsertDestinationType::PARTITION_AWARE);
-    insert_destination_proto->MutableExtension(S::PartitionAwareInsertDestination::partition_scheme)
-        ->MergeFrom(input_relation.getPartitionScheme()->getProto());
-  } else {
-    insert_destination_proto->set_insert_destination_type(S::InsertDestinationType::BLOCK_POOL);
-
-    const vector<block_id> blocks(input_relation.getBlocksSnapshot());
-    for (const block_id block : blocks) {
-      insert_destination_proto->AddExtension(S::BlockPoolInsertDestination::blocks, block);
+    S::Tuple *tuple_proto = query_context_proto_->add_tuples();
+    for (const E::ScalarLiteralPtr &literal : tuple) {
+      tuple_proto->add_attribute_values()->CopyFrom(literal->value().getProto());
     }
-  }
 
-  const QueryPlan::DAGNodeIndex insert_operator_index =
-      execution_plan_->addRelationalOperator(
-          new InsertOperator(query_handle_->query_id(),
-                             input_relation,
-                             insert_destination_index,
-                             tuple_index));
-  insert_destination_proto->set_relational_op_index(insert_operator_index);
+    // FIXME(qzeng): A better way is using a traits struct to look up whether a storage
+    //               block supports ad-hoc insertion instead of hard-coding the block types.
+    const StorageBlockLayout &storage_block_layout =
+        input_relation.getDefaultStorageBlockLayout();
+    if (storage_block_layout.getDescription().tuple_store_description().sub_block_type() ==
+        TupleStorageSubBlockDescription::COMPRESSED_COLUMN_STORE ||
+        storage_block_layout.getDescription().tuple_store_description().sub_block_type() ==
+              TupleStorageSubBlockDescription::COMPRESSED_PACKED_ROW_STORE) {
+      THROW_SQL_ERROR() << "INSERT statement is not supported for the relation "
+                        << input_relation.getName()
+                        << ", because its storage blocks do not support ad-hoc insertion";
+    }
 
-  CatalogRelation *mutable_relation =
-      catalog_database_->getRelationByIdMutable(input_relation.getID());
-  const QueryPlan::DAGNodeIndex save_blocks_index =
-      execution_plan_->addRelationalOperator(
-          new SaveBlocksOperator(query_handle_->query_id(), mutable_relation));
-  if (!input_relation_info->isStoredRelation()) {
-    execution_plan_->addDirectDependency(insert_operator_index,
-                                         input_relation_info->producer_operator_index,
-                                         true /* is_pipeline_breaker */);
+    // Create InsertDestination proto.
+    const QueryContext::insert_destination_id insert_destination_index =
+        query_context_proto_->insert_destinations_size();
+    S::InsertDestination *insert_destination_proto = query_context_proto_->add_insert_destinations();
+
+    insert_destination_proto->set_relation_id(input_relation.getID());
+    insert_destination_proto->mutable_layout()->MergeFrom(
+        input_relation.getDefaultStorageBlockLayout().getDescription());
+
+    if (input_relation.hasPartitionScheme()) {
+      insert_destination_proto->set_insert_destination_type(S::InsertDestinationType::PARTITION_AWARE);
+      insert_destination_proto->MutableExtension(S::PartitionAwareInsertDestination::partition_scheme)
+          ->MergeFrom(input_relation.getPartitionScheme()->getProto());
+    } else {
+      insert_destination_proto->set_insert_destination_type(S::InsertDestinationType::BLOCK_POOL);
+
+      const vector<block_id> blocks(input_relation.getBlocksSnapshot());
+      for (const block_id block : blocks) {
+        insert_destination_proto->AddExtension(S::BlockPoolInsertDestination::blocks, block);
+      }
+    }
+
+    const QueryPlan::DAGNodeIndex insert_operator_index =
+        execution_plan_->addRelationalOperator(
+            new InsertOperator(query_handle_->query_id(),
+                               input_relation,
+                               insert_destination_index,
+                               tuple_index));
+    insert_destination_proto->set_relational_op_index(insert_operator_index);
+
+    CatalogRelation *mutable_relation =
+        catalog_database_->getRelationByIdMutable(input_relation.getID());
+    const QueryPlan::DAGNodeIndex save_blocks_index =
+        execution_plan_->addRelationalOperator(
+            new SaveBlocksOperator(query_handle_->query_id(), mutable_relation));
+    if (!input_relation_info->isStoredRelation()) {
+      execution_plan_->addDirectDependency(insert_operator_index,
+                                           input_relation_info->producer_operator_index,
+                                           true /* is_pipeline_breaker */);
+    }
+    execution_plan_->addDirectDependency(save_blocks_index,
+                                         insert_operator_index,
+                                         false /* is_pipeline_breaker */);
   }
-  execution_plan_->addDirectDependency(save_blocks_index,
-                                       insert_operator_index,
-                                       false /* is_pipeline_breaker */);
 }
 
 void ExecutionGenerator::convertInsertSelection(
diff --git a/query_optimizer/logical/InsertTuple.cpp b/query_optimizer/logical/InsertTuple.cpp
index e5ffa35..e2ce196 100644
--- a/query_optimizer/logical/InsertTuple.cpp
+++ b/query_optimizer/logical/InsertTuple.cpp
@@ -41,8 +41,10 @@
   non_container_child_field_names->push_back("input");
   non_container_child_fields->push_back(input_);
 
-  container_child_field_names->push_back("column_values");
-  container_child_fields->push_back(CastSharedPtrVector<OptimizerTreeBase>(column_values_));
+  for (const auto &column_values : column_values_) {
+    container_child_field_names->push_back("column_values");
+    container_child_fields->push_back(CastSharedPtrVector<OptimizerTreeBase>(column_values));
+  }
 }
 
 }  // namespace logical
diff --git a/query_optimizer/logical/InsertTuple.hpp b/query_optimizer/logical/InsertTuple.hpp
index fd0301e..dd35510 100644
--- a/query_optimizer/logical/InsertTuple.hpp
+++ b/query_optimizer/logical/InsertTuple.hpp
@@ -61,7 +61,7 @@
   /**
    * @return Column values to be used to compose a new tuple.
    */
-  const std::vector<expressions::ScalarLiteralPtr>& column_values() const {
+  const std::vector<std::vector<expressions::ScalarLiteralPtr>>& column_values() const {
     return column_values_;
   }
 
@@ -83,12 +83,12 @@
    * @brief Creates an InsertTuple logical node.
    *
    * @param input The input produces the relation to insert the tuple to.
-   * @param column_values The column values of the tuple to be inserted.
+   * @param column_values The column values of the tuples to be inserted.
    * @return An immutable InsertTuple node.
    */
   static InsertTuplePtr Create(
       const LogicalPtr &input,
-      const std::vector<expressions::ScalarLiteralPtr> &column_values) {
+      const std::vector<std::vector<expressions::ScalarLiteralPtr>> &column_values) {
     return InsertTuplePtr(new InsertTuple(input, column_values));
   }
 
@@ -103,13 +103,13 @@
 
  private:
   InsertTuple(const LogicalPtr &input,
-              const std::vector<expressions::ScalarLiteralPtr> &column_values)
+              const std::vector<std::vector<expressions::ScalarLiteralPtr>> &column_values)
       : input_(input), column_values_(column_values) {
     addChild(input_);
   }
 
   LogicalPtr input_;
-  std::vector<expressions::ScalarLiteralPtr> column_values_;
+  std::vector<std::vector<expressions::ScalarLiteralPtr>> column_values_;
 
   DISALLOW_COPY_AND_ASSIGN(InsertTuple);
 };
diff --git a/query_optimizer/physical/InsertTuple.cpp b/query_optimizer/physical/InsertTuple.cpp
index 3085389..b209aa0 100644
--- a/query_optimizer/physical/InsertTuple.cpp
+++ b/query_optimizer/physical/InsertTuple.cpp
@@ -40,8 +40,10 @@
   non_container_child_field_names->push_back("input");
   non_container_child_fields->push_back(input_);
 
-  container_child_field_names->push_back("column_values");
-  container_child_fields->push_back(CastSharedPtrVector<OptimizerTreeBase>(column_values_));
+  for (const auto &column_values : column_values_) {
+    container_child_field_names->push_back("column_values");
+    container_child_fields->push_back(CastSharedPtrVector<OptimizerTreeBase>(column_values));
+  }
 }
 
 }  // namespace physical
diff --git a/query_optimizer/physical/InsertTuple.hpp b/query_optimizer/physical/InsertTuple.hpp
index 40f2582..10c7c5b 100644
--- a/query_optimizer/physical/InsertTuple.hpp
+++ b/query_optimizer/physical/InsertTuple.hpp
@@ -69,7 +69,7 @@
   /**
    * @return Column values to be used to compose a new tuple.
    */
-  const std::vector<expressions::ScalarLiteralPtr>& column_values() const {
+  const std::vector<std::vector<expressions::ScalarLiteralPtr>>& column_values() const {
     return column_values_;
   }
 
@@ -103,7 +103,7 @@
    */
   static InsertTuplePtr Create(
       const PhysicalPtr &input,
-      const std::vector<expressions::ScalarLiteralPtr> &column_values) {
+      const std::vector<std::vector<expressions::ScalarLiteralPtr>> &column_values) {
     return InsertTuplePtr(new InsertTuple(input, column_values));
   }
 
@@ -118,13 +118,13 @@
 
  private:
   InsertTuple(const PhysicalPtr &input,
-              const std::vector<expressions::ScalarLiteralPtr> &column_values)
+              const std::vector<std::vector<expressions::ScalarLiteralPtr>> &column_values)
       : input_(input), column_values_(column_values) {
     addChild(input_);
   }
 
   PhysicalPtr input_;
-  std::vector<expressions::ScalarLiteralPtr> column_values_;
+  std::vector<std::vector<expressions::ScalarLiteralPtr>> column_values_;
 
   DISALLOW_COPY_AND_ASSIGN(InsertTuple);
 };
diff --git a/query_optimizer/resolver/Resolver.cpp b/query_optimizer/resolver/Resolver.cpp
index 2991568..0b6dc22 100644
--- a/query_optimizer/resolver/Resolver.cpp
+++ b/query_optimizer/resolver/Resolver.cpp
@@ -1060,73 +1060,81 @@
   // Resolve column values.
   const std::vector<E::AttributeReferencePtr> relation_attributes =
       input_logical->getOutputAttributes();
-  const PtrList<ParseScalarLiteral> &parse_column_values =
+  const PtrList<PtrList<ParseScalarLiteral>> &parse_column_values_list =
       insert_statement.getLiteralValues();
-  DCHECK_GT(parse_column_values.size(), 0u);
 
-  if (parse_column_values.size() > relation_attributes.size()) {
-    THROW_SQL_ERROR_AT(insert_statement.relation_name())
-        << "The relation " << insert_statement.relation_name()->value()
-        << " has " << std::to_string(relation_attributes.size())
-        << " columns, but " << std::to_string(parse_column_values.size())
-        << " values are provided";
-  }
+  std::vector<std::vector<E::ScalarLiteralPtr>> resolved_column_values_list;
+  DCHECK_GT(parse_column_values_list.size(), 0u);
 
-  std::vector<E::ScalarLiteralPtr> resolved_column_values;
-  std::vector<E::AttributeReferencePtr>::size_type aid = 0;
-  for (const ParseScalarLiteral &parse_literal_value : parse_column_values) {
-    E::ScalarLiteralPtr resolved_literal_value;
-    ExpressionResolutionInfo expr_resolution_info(
-        name_resolver,
-        "INSERT statement" /* clause_name */,
-        nullptr /* select_list_info */);
-    // When resolving the literal, use the attribute's Type as a hint.
-    CHECK(E::SomeScalarLiteral::MatchesWithConditionalCast(
-        resolveExpression(parse_literal_value,
-                          &(relation_attributes[aid]->getValueType()),
-                          &expr_resolution_info),
-        &resolved_literal_value));
+  for (const PtrList<ParseScalarLiteral> &parse_column_values : parse_column_values_list) {
+    DCHECK_GT(parse_column_values.size(), 0u);
 
-    // Check that the resolved Type is safely coercible to the attribute's
-    // Type.
-    if (!relation_attributes[aid]->getValueType().isSafelyCoercibleFrom(
-            resolved_literal_value->getValueType())) {
-      THROW_SQL_ERROR_AT(&parse_literal_value)
-          << "The assigned value for the column "
-          << relation_attributes[aid]->attribute_name() << " has the type "
-          << resolved_literal_value->getValueType().getName()
-          << ", which cannot be safely coerced to the column's type "
-          << relation_attributes[aid]->getValueType().getName();
-    }
-
-    // If the Type is not exactly right (but is safely coercible), coerce it.
-    if (!resolved_literal_value->getValueType().equals(
-            relation_attributes[aid]->getValueType())) {
-      resolved_literal_value = E::ScalarLiteral::Create(
-          relation_attributes[aid]->getValueType().coerceValue(
-              resolved_literal_value->value(),
-              resolved_literal_value->getValueType()),
-          relation_attributes[aid]->getValueType());
-    }
-
-    resolved_column_values.push_back(resolved_literal_value);
-    ++aid;
-  }
-
-  while (aid < relation_attributes.size()) {
-    if (!relation_attributes[aid]->getValueType().isNullable()) {
+    if (parse_column_values.size() > relation_attributes.size()) {
       THROW_SQL_ERROR_AT(insert_statement.relation_name())
-          << "Must assign a non-NULL value to column "
-          << relation_attributes[aid]->attribute_name();
+          << "The relation " << insert_statement.relation_name()->value()
+          << " has " << std::to_string(relation_attributes.size())
+          << " columns, but " << std::to_string(parse_column_values.size())
+          << " values are provided";
     }
-    // Create a NULL value.
-    resolved_column_values.push_back(E::ScalarLiteral::Create(
-        relation_attributes[aid]->getValueType().makeNullValue(),
-        relation_attributes[aid]->getValueType()));
-    ++aid;
+
+    std::vector<E::ScalarLiteralPtr> resolved_column_values;
+    std::vector<E::AttributeReferencePtr>::size_type aid = 0;
+    for (const ParseScalarLiteral &parse_literal_value : parse_column_values) {
+      E::ScalarLiteralPtr resolved_literal_value;
+      ExpressionResolutionInfo expr_resolution_info(
+          name_resolver,
+          "INSERT statement" /* clause_name */,
+          nullptr /* select_list_info */);
+      // When resolving the literal, use the attribute's Type as a hint.
+      CHECK(E::SomeScalarLiteral::MatchesWithConditionalCast(
+          resolveExpression(parse_literal_value,
+                            &(relation_attributes[aid]->getValueType()),
+                            &expr_resolution_info),
+          &resolved_literal_value));
+
+      // Check that the resolved Type is safely coercible to the attribute's
+      // Type.
+      if (!relation_attributes[aid]->getValueType().isSafelyCoercibleFrom(
+              resolved_literal_value->getValueType())) {
+        THROW_SQL_ERROR_AT(&parse_literal_value)
+            << "The assigned value for the column "
+            << relation_attributes[aid]->attribute_name() << " has the type "
+            << resolved_literal_value->getValueType().getName()
+            << ", which cannot be safely coerced to the column's type "
+            << relation_attributes[aid]->getValueType().getName();
+      }
+
+      // If the Type is not exactly right (but is safely coercible), coerce it.
+      if (!resolved_literal_value->getValueType().equals(
+              relation_attributes[aid]->getValueType())) {
+        resolved_literal_value = E::ScalarLiteral::Create(
+            relation_attributes[aid]->getValueType().coerceValue(
+                resolved_literal_value->value(),
+                resolved_literal_value->getValueType()),
+            relation_attributes[aid]->getValueType());
+      }
+
+      resolved_column_values.push_back(resolved_literal_value);
+      ++aid;
+    }
+
+    while (aid < relation_attributes.size()) {
+      if (!relation_attributes[aid]->getValueType().isNullable()) {
+        THROW_SQL_ERROR_AT(insert_statement.relation_name())
+            << "Must assign a non-NULL value to column "
+            << relation_attributes[aid]->attribute_name();
+      }
+      // Create a NULL value.
+      resolved_column_values.push_back(E::ScalarLiteral::Create(
+          relation_attributes[aid]->getValueType().makeNullValue(),
+          relation_attributes[aid]->getValueType()));
+      ++aid;
+    }
+
+    resolved_column_values_list.push_back(std::move(resolved_column_values));
   }
 
-  return L::InsertTuple::Create(input_logical, resolved_column_values);
+  return L::InsertTuple::Create(input_logical, resolved_column_values_list);
 }
 
 L::LogicalPtr Resolver::resolveUpdate(