You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by zu...@apache.org on 2017/01/11 06:43:16 UTC

[1/4] incubator-quickstep git commit: Refactored partition_type in parser. [Forced Update!]

Repository: incubator-quickstep
Updated Branches:
  refs/heads/refactor-partition-reconstruct d3aed1a9b -> a7a732a5d (forced update)


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/86411b9c/parser/preprocessed/SqlParser_gen.hpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlParser_gen.hpp b/parser/preprocessed/SqlParser_gen.hpp
index fe963be..f1876b8 100644
--- a/parser/preprocessed/SqlParser_gen.hpp
+++ b/parser/preprocessed/SqlParser_gen.hpp
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.0.4.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -181,10 +181,10 @@ extern int quickstep_yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 120 "../SqlParser.ypp" /* yacc.c:1909  */
+#line 120 "../SqlParser.ypp" /* yacc.c:1915  */
 
   quickstep::ParseString *string_value_;
 
@@ -284,8 +284,10 @@ union YYSTYPE
 
   quickstep::ParsePriority *opt_priority_clause_;
 
-#line 288 "SqlParser_gen.hpp" /* yacc.c:1909  */
+#line 288 "SqlParser_gen.hpp" /* yacc.c:1915  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/86411b9c/parser/tests/Create.test
----------------------------------------------------------------------
diff --git a/parser/tests/Create.test b/parser/tests/Create.test
index 49e7ccd..eee44a6 100644
--- a/parser/tests/Create.test
+++ b/parser/tests/Create.test
@@ -147,7 +147,7 @@ CreateTableStatement[relation_name=test]
 +-attribute_list=
 | +-AttributeDefinition[name=attr,type=Int]
 +-partition_clause=
-  +-PartitionClause[partition_type=0]
+  +-PartitionClause[partition_type=hash]
     +-Number of Partitions=NumericLiteral[numeric_string=4,float_like=false]
     +-attribute_name_list=
       +-String[value=attr]


[4/4] incubator-quickstep git commit: Refactored the method to reconstruct PartitionSchemeHeader.

Posted by zu...@apache.org.
Refactored the method to reconstruct PartitionSchemeHeader.


Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/a7a732a5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/a7a732a5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/a7a732a5

Branch: refs/heads/refactor-partition-reconstruct
Commit: a7a732a5ddba96f9303c2b344f410f2ef448f69f
Parents: 86411b9
Author: Zuyu Zhang <zu...@apache.org>
Authored: Tue Jan 10 14:10:24 2017 -0800
Committer: Zuyu Zhang <zu...@apache.org>
Committed: Tue Jan 10 22:43:07 2017 -0800

----------------------------------------------------------------------
 catalog/CMakeLists.txt                     |  3 +++
 catalog/Catalog.proto                      |  3 ++-
 catalog/CatalogRelation.cpp                |  8 ++------
 catalog/PartitionScheme.cpp                |  5 ++---
 catalog/PartitionScheme.hpp                |  6 +-----
 catalog/PartitionSchemeHeader.cpp          | 15 +++++++++++++--
 catalog/PartitionSchemeHeader.hpp          |  7 ++++---
 catalog/tests/PartitionScheme_unittest.cpp |  4 ++--
 storage/InsertDestination.cpp              |  7 +------
 9 files changed, 30 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7a732a5/catalog/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/catalog/CMakeLists.txt b/catalog/CMakeLists.txt
index 143d12f..7de9a67 100644
--- a/catalog/CMakeLists.txt
+++ b/catalog/CMakeLists.txt
@@ -168,6 +168,9 @@ target_link_libraries(quickstep_catalog_PartitionSchemeHeader
                       glog
                       quickstep_catalog_CatalogTypedefs
                       quickstep_catalog_Catalog_proto
+                      quickstep_types_Type
+                      quickstep_types_TypeFactory
+                      quickstep_types_Type_proto
                       quickstep_types_TypedValue
                       quickstep_types_TypedValue_proto
                       quickstep_types_operations_comparisons_Comparison

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7a732a5/catalog/Catalog.proto
----------------------------------------------------------------------
diff --git a/catalog/Catalog.proto b/catalog/Catalog.proto
index a54862f..89cb7e5 100644
--- a/catalog/Catalog.proto
+++ b/catalog/Catalog.proto
@@ -49,7 +49,8 @@ message PartitionSchemeHeader {
 message RangePartitionSchemeHeader {
   extend PartitionSchemeHeader {
     // All required.
-    repeated TypedValue partition_range_boundaries = 32;
+    optional Type partition_attr_type = 32;
+    repeated TypedValue partition_range_boundaries = 33;
   }
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7a732a5/catalog/CatalogRelation.cpp
----------------------------------------------------------------------
diff --git a/catalog/CatalogRelation.cpp b/catalog/CatalogRelation.cpp
index c288532..41c503c 100644
--- a/catalog/CatalogRelation.cpp
+++ b/catalog/CatalogRelation.cpp
@@ -43,8 +43,6 @@
 
 namespace quickstep {
 
-class Type;
-
 bool CatalogRelation::ProtoIsValid(const serialization::CatalogRelationSchema &proto) {
   // Check that proto is fully initialized.
   if (!CatalogRelationSchema::ProtoIsValid(proto) ||
@@ -90,11 +88,9 @@ CatalogRelation::CatalogRelation(const serialization::CatalogRelationSchema &pro
     const serialization::PartitionScheme &proto_partition_scheme =
         proto.GetExtension(serialization::CatalogRelation::partition_scheme);
 
-    const attribute_id partition_attribute_id = proto_partition_scheme.header().partition_attribute_id();
-    DCHECK(hasAttributeWithId(partition_attribute_id));
-    const Type &attr_type = attr_vec_[partition_attribute_id].getType();
+    DCHECK(hasAttributeWithId(proto_partition_scheme.header().partition_attribute_id()));
 
-    setPartitionScheme(PartitionScheme::ReconstructFromProto(proto_partition_scheme, attr_type));
+    setPartitionScheme(PartitionScheme::ReconstructFromProto(proto_partition_scheme));
 
     // Deserializing the NUMA placement scheme for the relation.
 #ifdef QUICKSTEP_HAVE_LIBNUMA

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7a732a5/catalog/PartitionScheme.cpp
----------------------------------------------------------------------
diff --git a/catalog/PartitionScheme.cpp b/catalog/PartitionScheme.cpp
index d6e3469..1d7dce0 100644
--- a/catalog/PartitionScheme.cpp
+++ b/catalog/PartitionScheme.cpp
@@ -55,8 +55,7 @@ bool PartitionScheme::ProtoIsValid(
   return true;
 }
 
-PartitionScheme* PartitionScheme::ReconstructFromProto(const serialization::PartitionScheme &proto,
-                                                       const Type &attr_type) {
+PartitionScheme* PartitionScheme::ReconstructFromProto(const serialization::PartitionScheme &proto) {
   DCHECK(ProtoIsValid(proto))
       << "Attempted to create PartitionScheme from an invalid proto description:\n"
       << proto.DebugString();
@@ -74,7 +73,7 @@ PartitionScheme* PartitionScheme::ReconstructFromProto(const serialization::Part
   }
 
   return new PartitionScheme(
-      PartitionSchemeHeader::ReconstructFromProto(proto.header(), attr_type),
+      PartitionSchemeHeader::ReconstructFromProto(proto.header()),
       move(blocks_in_partition));
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7a732a5/catalog/PartitionScheme.hpp
----------------------------------------------------------------------
diff --git a/catalog/PartitionScheme.hpp b/catalog/PartitionScheme.hpp
index c882a5e..b69a33f 100644
--- a/catalog/PartitionScheme.hpp
+++ b/catalog/PartitionScheme.hpp
@@ -39,8 +39,6 @@
 
 namespace quickstep {
 
-class Type;
-
 /** \addtogroup Catalog
  *  @{
  */
@@ -82,11 +80,9 @@ class PartitionScheme {
    *
    * @param proto The Protocol Buffer serialization of a Partition Scheme,
    *        previously produced by getProto().
-   * @param attr_type The attribute type of the partitioning attribute.
    * @return The deserialized partition scheme object.
    **/
-  static PartitionScheme* ReconstructFromProto(const serialization::PartitionScheme &proto,
-                                               const Type &attr_type);
+  static PartitionScheme* ReconstructFromProto(const serialization::PartitionScheme &proto);
 
   /**
    * @brief Check whether a serialization::PartitionScheme is fully-formed and

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7a732a5/catalog/PartitionSchemeHeader.cpp
----------------------------------------------------------------------
diff --git a/catalog/PartitionSchemeHeader.cpp b/catalog/PartitionSchemeHeader.cpp
index 26c317d..a4a9063 100644
--- a/catalog/PartitionSchemeHeader.cpp
+++ b/catalog/PartitionSchemeHeader.cpp
@@ -24,6 +24,9 @@
 #include <vector>
 
 #include "catalog/Catalog.pb.h"
+#include "types/Type.hpp"
+#include "types/Type.pb.h"
+#include "types/TypeFactory.hpp"
 #include "types/TypedValue.hpp"
 #include "types/TypedValue.pb.h"
 
@@ -59,7 +62,8 @@ bool PartitionSchemeHeader::ProtoIsValid(
     case serialization::PartitionSchemeHeader::RANGE: {
       const std::size_t num_ranges =
           proto.ExtensionSize(serialization::RangePartitionSchemeHeader::partition_range_boundaries);
-      return num_ranges == proto.num_partitions() - 1;
+      return num_ranges == proto.num_partitions() - 1 &&
+             proto.HasExtension(serialization::RangePartitionSchemeHeader::partition_attr_type);
     }
     default:
       // Partition type is unknown.
@@ -68,7 +72,7 @@ bool PartitionSchemeHeader::ProtoIsValid(
 }
 
 PartitionSchemeHeader* PartitionSchemeHeader::ReconstructFromProto(
-    const serialization::PartitionSchemeHeader &proto, const Type &attr_type) {
+    const serialization::PartitionSchemeHeader &proto) {
   DCHECK(ProtoIsValid(proto))
       << "Attempted to create PartitionSchemeHeader from an invalid proto description:\n"
       << proto.DebugString();
@@ -78,6 +82,10 @@ PartitionSchemeHeader* PartitionSchemeHeader::ReconstructFromProto(
       return new HashPartitionSchemeHeader(proto.num_partitions(), proto.partition_attribute_id());
     }
     case serialization::PartitionSchemeHeader::RANGE: {
+      const Type &attr_type =
+          TypeFactory::ReconstructFromProto(proto.GetExtension(
+              serialization::RangePartitionSchemeHeader::partition_attr_type));
+
       std::vector<TypedValue> partition_ranges;
       for (int i = 0;
            i < proto.ExtensionSize(serialization::RangePartitionSchemeHeader::partition_range_boundaries);
@@ -123,6 +131,9 @@ serialization::PartitionSchemeHeader RangePartitionSchemeHeader::getProto() cons
   proto.set_num_partitions(num_partitions_);
   proto.set_partition_attribute_id(partition_attribute_id_);
 
+  proto.MutableExtension(serialization::RangePartitionSchemeHeader::partition_attr_type)
+      ->MergeFrom(partition_attr_type_->getProto());
+
   for (std::size_t i = 0; i < partition_range_boundaries_.size(); ++i) {
     proto.AddExtension(serialization::RangePartitionSchemeHeader::partition_range_boundaries)
         ->MergeFrom(partition_range_boundaries_[i].getProto());

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7a732a5/catalog/PartitionSchemeHeader.hpp
----------------------------------------------------------------------
diff --git a/catalog/PartitionSchemeHeader.hpp b/catalog/PartitionSchemeHeader.hpp
index 89efc6d..c1d65d1 100644
--- a/catalog/PartitionSchemeHeader.hpp
+++ b/catalog/PartitionSchemeHeader.hpp
@@ -65,12 +65,10 @@ class PartitionSchemeHeader {
    *
    * @param proto The Protocol Buffer serialization of a PartitionSchemeHeader,
    *        previously produced by getProto().
-   * @param attr_type The attribute type of the partitioning attribute.
    * @return The reconstructed PartitionSchemeHeader object.
    **/
   static PartitionSchemeHeader* ReconstructFromProto(
-      const serialization::PartitionSchemeHeader &proto,
-      const Type &attr_type);
+      const serialization::PartitionSchemeHeader &proto);
 
   /**
    * @brief Check whether a serialization::PartitionSchemeHeader is fully-formed
@@ -227,6 +225,7 @@ class RangePartitionSchemeHeader : public PartitionSchemeHeader {
                              const attribute_id attribute,
                              std::vector<TypedValue> &&partition_range)
       : PartitionSchemeHeader(PartitionType::kRange, num_partitions, attribute),
+        partition_attr_type_(&partition_attribute_type),
         partition_range_boundaries_(std::move(partition_range)) {
     DCHECK_EQ(num_partitions - 1, partition_range_boundaries_.size());
 
@@ -298,6 +297,8 @@ class RangePartitionSchemeHeader : public PartitionSchemeHeader {
     }
   }
 
+  const Type* partition_attr_type_;
+
   // The boundaries for each range in the RangePartitionSchemeHeader.
   // The upper bound of the range is stored here.
   const std::vector<TypedValue> partition_range_boundaries_;

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7a732a5/catalog/tests/PartitionScheme_unittest.cpp
----------------------------------------------------------------------
diff --git a/catalog/tests/PartitionScheme_unittest.cpp b/catalog/tests/PartitionScheme_unittest.cpp
index d10b26e..97a9092 100644
--- a/catalog/tests/PartitionScheme_unittest.cpp
+++ b/catalog/tests/PartitionScheme_unittest.cpp
@@ -511,7 +511,7 @@ TEST(PartitionSchemeTest, CheckHashPartitionSchemeSerialization) {
   }
   std::unique_ptr<PartitionScheme> part_scheme_from_proto;
   part_scheme_from_proto.reset(
-      PartitionScheme::ReconstructFromProto(part_scheme->getProto(), TypeFactory::GetType(kInt)));
+      PartitionScheme::ReconstructFromProto(part_scheme->getProto()));
 
   const PartitionSchemeHeader &header = part_scheme->getPartitionSchemeHeader();
   const PartitionSchemeHeader &header_from_proto = part_scheme_from_proto->getPartitionSchemeHeader();
@@ -561,7 +561,7 @@ TEST(PartitionSchemeTest, CheckRangePartitionSchemeSerialization) {
   std::unique_ptr<PartitionScheme> part_scheme_from_proto;
 
   part_scheme_from_proto.reset(
-      PartitionScheme::ReconstructFromProto(part_scheme->getProto(), type));
+      PartitionScheme::ReconstructFromProto(part_scheme->getProto()));
 
   const PartitionSchemeHeader &header = part_scheme->getPartitionSchemeHeader();
   const PartitionSchemeHeader &header_from_proto = part_scheme_from_proto->getPartitionSchemeHeader();

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7a732a5/storage/InsertDestination.cpp
----------------------------------------------------------------------
diff --git a/storage/InsertDestination.cpp b/storage/InsertDestination.cpp
index 067edf6..19bb356 100644
--- a/storage/InsertDestination.cpp
+++ b/storage/InsertDestination.cpp
@@ -56,8 +56,6 @@ using std::vector;
 
 namespace quickstep {
 
-class Type;
-
 InsertDestination::InsertDestination(const CatalogRelationSchema &relation,
                                      const StorageBlockLayout *layout,
                                      StorageManager *storage_manager,
@@ -132,11 +130,8 @@ InsertDestination* InsertDestination::ReconstructFromProto(
         partitions.push_back(move(partition));
       }
 
-      const serialization::PartitionSchemeHeader &proto_partition_scheme_header = proto_partition_scheme.header();
-      const Type &attr_type =
-          relation.getAttributeById(proto_partition_scheme_header.partition_attribute_id())->getType();
       return new PartitionAwareInsertDestination(
-          PartitionSchemeHeader::ReconstructFromProto(proto_partition_scheme_header, attr_type),
+          PartitionSchemeHeader::ReconstructFromProto(proto_partition_scheme.header()),
           relation,
           layout,
           storage_manager,


[2/4] incubator-quickstep git commit: Refactored partition_type in parser.

Posted by zu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/86411b9c/parser/preprocessed/SqlParser_gen.cpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlParser_gen.cpp b/parser/preprocessed/SqlParser_gen.cpp
index 283bcbe..23cbf1b 100644
--- a/parser/preprocessed/SqlParser_gen.cpp
+++ b/parser/preprocessed/SqlParser_gen.cpp
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.0.4.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.0.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -323,7 +323,7 @@ extern int quickstep_yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
 #line 120 "../SqlParser.ypp" /* yacc.c:355  */
@@ -428,6 +428,8 @@ union YYSTYPE
 
 #line 430 "SqlParser_gen.cpp" /* yacc.c:355  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -459,7 +461,7 @@ int quickstep_yyparse (yyscan_t yyscanner, quickstep::ParseStatement **parsedSta
 #include "SqlLexer_gen.hpp"
 void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string &feature);
 
-#line 463 "SqlParser_gen.cpp" /* yacc.c:358  */
+#line 465 "SqlParser_gen.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -778,28 +780,28 @@ static const yytype_uint16 yyrline[] =
      794,   797,   800,   812,   815,   818,   836,   856,   859,   862,
      867,   872,   878,   884,   893,   897,   903,   906,   911,   916,
      921,   928,   935,   939,   945,   948,   953,   956,   961,   964,
-     969,   972,   991,   995,  1001,  1005,  1011,  1014,  1017,  1022,
-    1025,  1032,  1037,  1048,  1053,  1057,  1061,  1067,  1070,  1076,
-    1084,  1087,  1090,  1096,  1101,  1104,  1109,  1113,  1117,  1121,
-    1127,  1132,  1137,  1141,  1147,  1153,  1156,  1161,  1164,  1183,
-    1188,  1192,  1198,  1204,  1210,  1213,  1217,  1223,  1226,  1231,
-    1235,  1241,  1244,  1247,  1252,  1257,  1262,  1265,  1268,  1273,
-    1276,  1279,  1282,  1285,  1288,  1291,  1294,  1299,  1302,  1307,
-    1311,  1315,  1318,  1322,  1325,  1330,  1333,  1338,  1341,  1346,
-    1350,  1356,  1359,  1364,  1367,  1372,  1375,  1380,  1383,  1402,
-    1405,  1410,  1414,  1420,  1426,  1431,  1434,  1439,  1442,  1447,
-    1450,  1455,  1458,  1463,  1464,  1467,  1472,  1473,  1476,  1481,
-    1485,  1491,  1498,  1501,  1504,  1509,  1512,  1515,  1521,  1524,
-    1529,  1534,  1543,  1548,  1557,  1562,  1565,  1570,  1573,  1578,
-    1584,  1590,  1593,  1596,  1599,  1602,  1605,  1611,  1620,  1623,
-    1628,  1631,  1636,  1639,  1644,  1647,  1650,  1653,  1657,  1661,
-    1664,  1667,  1670,  1673,  1678,  1682,  1686,  1689,  1694,  1699,
-    1703,  1709,  1712,  1717,  1721,  1727,  1732,  1736,  1742,  1747,
-    1750,  1755,  1759,  1765,  1768,  1771,  1774,  1786,  1790,  1809,
-    1822,  1837,  1840,  1843,  1846,  1849,  1852,  1857,  1861,  1867,
-    1870,  1875,  1879,  1886,  1889,  1892,  1895,  1898,  1901,  1904,
-    1907,  1910,  1913,  1918,  1929,  1932,  1937,  1940,  1943,  1949,
-    1953,  1959,  1962,  1970,  1973,  1976,  1979,  1985,  1990,  1995
+     969,   972,   991,   994,   999,  1003,  1009,  1012,  1015,  1020,
+    1023,  1030,  1035,  1046,  1051,  1055,  1059,  1065,  1068,  1074,
+    1082,  1085,  1088,  1094,  1099,  1102,  1107,  1111,  1115,  1119,
+    1125,  1130,  1135,  1139,  1145,  1151,  1154,  1159,  1162,  1181,
+    1186,  1190,  1196,  1202,  1208,  1211,  1215,  1221,  1224,  1229,
+    1233,  1239,  1242,  1245,  1250,  1255,  1260,  1263,  1266,  1271,
+    1274,  1277,  1280,  1283,  1286,  1289,  1292,  1297,  1300,  1305,
+    1309,  1313,  1316,  1320,  1323,  1328,  1331,  1336,  1339,  1344,
+    1348,  1354,  1357,  1362,  1365,  1370,  1373,  1378,  1381,  1400,
+    1403,  1408,  1412,  1418,  1424,  1429,  1432,  1437,  1440,  1445,
+    1448,  1453,  1456,  1461,  1462,  1465,  1470,  1471,  1474,  1479,
+    1483,  1489,  1496,  1499,  1502,  1507,  1510,  1513,  1519,  1522,
+    1527,  1532,  1541,  1546,  1555,  1560,  1563,  1568,  1571,  1576,
+    1582,  1588,  1591,  1594,  1597,  1600,  1603,  1609,  1618,  1621,
+    1626,  1629,  1634,  1637,  1642,  1645,  1648,  1651,  1655,  1659,
+    1662,  1665,  1668,  1671,  1676,  1680,  1684,  1687,  1692,  1697,
+    1701,  1707,  1710,  1715,  1719,  1725,  1730,  1734,  1740,  1745,
+    1748,  1753,  1757,  1763,  1766,  1769,  1772,  1784,  1788,  1807,
+    1820,  1835,  1838,  1841,  1844,  1847,  1850,  1855,  1859,  1865,
+    1868,  1873,  1877,  1884,  1887,  1890,  1893,  1896,  1899,  1902,
+    1905,  1908,  1911,  1916,  1927,  1930,  1935,  1938,  1941,  1947,
+    1951,  1957,  1960,  1968,  1971,  1974,  1977,  1983,  1988,  1993
 };
 #endif
 
@@ -1974,7 +1976,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1978 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1980 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 4: /* TOKEN_NAME  */
@@ -1984,7 +1986,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1988 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1990 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 5: /* TOKEN_STRING_SINGLE_QUOTED  */
@@ -1994,7 +1996,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1998 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2000 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 6: /* TOKEN_STRING_DOUBLE_QUOTED  */
@@ -2004,7 +2006,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2008 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2010 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 7: /* TOKEN_UNSIGNED_NUMVAL  */
@@ -2014,7 +2016,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2018 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2020 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 147: /* sql_statement  */
@@ -2024,7 +2026,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2028 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2030 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 148: /* quit_statement  */
@@ -2034,7 +2036,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).quit_statement_);
   }
 }
-#line 2038 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2040 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 149: /* alter_table_statement  */
@@ -2044,7 +2046,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2048 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2050 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 150: /* create_table_statement  */
@@ -2054,7 +2056,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).create_table_statement_);
   }
 }
-#line 2058 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2060 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 151: /* create_index_statement  */
@@ -2064,7 +2066,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2068 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2070 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 152: /* drop_table_statement  */
@@ -2074,7 +2076,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).drop_table_statement_);
   }
 }
-#line 2078 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2080 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 153: /* column_def  */
@@ -2084,7 +2086,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).attribute_definition_);
   }
 }
-#line 2088 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2090 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 154: /* column_def_commalist  */
@@ -2094,7 +2096,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).attribute_definition_list_);
   }
 }
-#line 2098 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2100 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 155: /* data_type  */
@@ -2104,7 +2106,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).data_type_);
   }
 }
-#line 2108 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2110 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 156: /* column_constraint_def  */
@@ -2114,7 +2116,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).column_constraint_);
   }
 }
-#line 2118 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2120 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 157: /* column_constraint_def_list  */
@@ -2124,7 +2126,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2128 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2130 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 158: /* opt_column_constraint_def_list  */
@@ -2134,7 +2136,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2138 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2140 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 162: /* opt_column_list  */
@@ -2144,7 +2146,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2148 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2150 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 163: /* opt_block_properties  */
@@ -2154,7 +2156,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).block_properties_);
   }
 }
-#line 2158 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2160 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 164: /* opt_partition_clause  */
@@ -2164,7 +2166,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).partition_clause_);
   }
 }
-#line 2168 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2170 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 165: /* partition_type  */
@@ -2174,7 +2176,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2178 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2180 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 166: /* key_value_list  */
@@ -2184,7 +2186,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2188 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2190 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 167: /* key_value  */
@@ -2194,7 +2196,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).key_value_);
   }
 }
-#line 2198 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2200 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 168: /* key_string_value  */
@@ -2204,7 +2206,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).key_string_value_);
   }
 }
-#line 2208 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2210 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 169: /* key_string_list  */
@@ -2214,7 +2216,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).key_string_list_);
   }
 }
-#line 2218 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2220 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 170: /* key_integer_value  */
@@ -2224,7 +2226,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).key_integer_value_);
   }
 }
-#line 2228 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2230 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 171: /* index_type  */
@@ -2234,7 +2236,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2238 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2240 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 172: /* opt_index_properties  */
@@ -2244,7 +2246,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2248 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2250 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 173: /* insert_statement  */
@@ -2254,7 +2256,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).insert_statement_);
   }
 }
-#line 2258 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2260 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 174: /* copy_from_statement  */
@@ -2264,7 +2266,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).copy_from_statement_);
   }
 }
-#line 2268 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2270 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 175: /* opt_copy_from_params  */
@@ -2274,7 +2276,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).copy_from_params_);
   }
 }
-#line 2278 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2280 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 176: /* copy_from_params  */
@@ -2284,7 +2286,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).copy_from_params_);
   }
 }
-#line 2288 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2290 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 177: /* update_statement  */
@@ -2294,7 +2296,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).update_statement_);
   }
 }
-#line 2298 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2300 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 178: /* delete_statement  */
@@ -2304,7 +2306,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).delete_statement_);
   }
 }
-#line 2308 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2310 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 179: /* assignment_list  */
@@ -2314,7 +2316,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).assignment_list_);
   }
 }
-#line 2318 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2320 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 180: /* assignment_item  */
@@ -2324,7 +2326,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).assignment_);
   }
 }
-#line 2328 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2330 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 181: /* select_statement  */
@@ -2334,7 +2336,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).select_statement_);
   }
 }
-#line 2338 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2340 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 182: /* opt_priority_clause  */
@@ -2344,7 +2346,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).opt_priority_clause_);
   }
 }
-#line 2348 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2350 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 183: /* with_clause  */
@@ -2354,7 +2356,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2358 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2360 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 184: /* with_list  */
@@ -2364,7 +2366,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2368 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2370 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 185: /* with_list_element  */
@@ -2374,7 +2376,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).with_list_element_);
   }
 }
-#line 2378 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2380 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 186: /* select_query  */
@@ -2384,7 +2386,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).select_query_);
   }
 }
-#line 2388 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2390 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 188: /* selection  */
@@ -2394,7 +2396,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).selection_);
   }
 }
-#line 2398 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2400 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 189: /* selection_item_commalist  */
@@ -2404,7 +2406,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).selection_list_);
   }
 }
-#line 2408 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2410 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 190: /* selection_item  */
@@ -2414,7 +2416,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).selection_item_);
   }
 }
-#line 2418 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2420 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 191: /* from_clause  */
@@ -2424,7 +2426,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2428 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2430 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 192: /* subquery_expression  */
@@ -2434,7 +2436,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).subquery_expression_);
   }
 }
-#line 2438 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2440 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 193: /* opt_sample_clause  */
@@ -2444,13 +2446,13 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).opt_sample_clause_);
   }
 }
-#line 2448 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2450 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 194: /* join_type  */
 #line 618 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2454 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2456 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 195: /* joined_table_reference  */
@@ -2460,7 +2462,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).table_reference_);
   }
 }
-#line 2464 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2466 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 196: /* table_reference  */
@@ -2470,7 +2472,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).table_reference_);
   }
 }
-#line 2474 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2476 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 197: /* table_reference_signature  */
@@ -2480,7 +2482,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2484 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2486 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 198: /* table_reference_signature_primary  */
@@ -2490,7 +2492,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2494 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2496 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 199: /* joined_table_reference_commalist  */
@@ -2500,7 +2502,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2504 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2506 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 200: /* opt_group_by_clause  */
@@ -2510,7 +2512,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).opt_group_by_clause_);
   }
 }
-#line 2514 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2516 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 201: /* opt_having_clause  */
@@ -2520,7 +2522,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).opt_having_clause_);
   }
 }
-#line 2524 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2526 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 202: /* opt_order_by_clause  */
@@ -2530,7 +2532,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).opt_order_by_clause_);
   }
 }
-#line 2534 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2536 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 203: /* opt_limit_clause  */
@@ -2540,7 +2542,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).opt_limit_clause_);
   }
 }
-#line 2544 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2546 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 204: /* opt_window_clause  */
@@ -2550,7 +2552,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).opt_window_clause_);
   }
 }
-#line 2554 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2556 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 205: /* window_declaration_list  */
@@ -2560,7 +2562,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).opt_window_clause_);
   }
 }
-#line 2564 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2566 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 206: /* window_declaration  */
@@ -2570,7 +2572,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).window_definition_);
   }
 }
-#line 2574 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2576 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 207: /* window_definition  */
@@ -2580,7 +2582,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).window_definition_);
   }
 }
-#line 2584 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2586 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 208: /* opt_window_partition  */
@@ -2590,7 +2592,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).window_partition_by_list_);
   }
 }
-#line 2594 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2596 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 209: /* opt_window_order  */
@@ -2600,7 +2602,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).window_order_by_list_);
   }
 }
-#line 2604 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2606 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 210: /* opt_window_frame  */
@@ -2610,13 +2612,13 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).window_frame_info_);
   }
 }
-#line 2614 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2616 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 211: /* frame_mode  */
 #line 614 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2620 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2622 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 212: /* frame_preceding  */
@@ -2626,7 +2628,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2630 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2632 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 213: /* frame_following  */
@@ -2636,7 +2638,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2640 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2642 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 214: /* order_commalist  */
@@ -2646,7 +2648,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).order_commalist_);
   }
 }
-#line 2650 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2652 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 215: /* order_item  */
@@ -2656,7 +2658,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).order_item_);
   }
 }
-#line 2660 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2662 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 216: /* opt_order_direction  */
@@ -2666,7 +2668,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).order_direction_);
   }
 }
-#line 2670 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2672 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 217: /* opt_nulls_first  */
@@ -2676,7 +2678,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).order_direction_);
   }
 }
-#line 2680 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2682 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 218: /* opt_where_clause  */
@@ -2686,7 +2688,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2690 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2692 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 219: /* where_clause  */
@@ -2696,7 +2698,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2700 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2702 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 220: /* or_expression  */
@@ -2706,7 +2708,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2710 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2712 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 221: /* and_expression  */
@@ -2716,7 +2718,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2720 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2722 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 222: /* not_expression  */
@@ -2726,7 +2728,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2730 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2732 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 223: /* predicate_expression_base  */
@@ -2736,7 +2738,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2740 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2742 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 224: /* add_expression  */
@@ -2746,7 +2748,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2750 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2752 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 225: /* multiply_expression  */
@@ -2756,7 +2758,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2760 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2762 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 226: /* unary_expression  */
@@ -2766,7 +2768,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2770 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2772 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 227: /* expression_base  */
@@ -2776,7 +2778,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2780 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2782 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 228: /* function_call  */
@@ -2786,7 +2788,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).function_call_);
   }
 }
-#line 2790 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2792 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 229: /* extract_function  */
@@ -2796,7 +2798,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2800 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2802 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 230: /* substr_function  */
@@ -2806,7 +2808,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2810 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2812 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 231: /* case_expression  */
@@ -2816,7 +2818,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2820 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2822 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 232: /* simple_when_clause_list  */
@@ -2826,7 +2828,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).simple_when_clause_list_);
   }
 }
-#line 2830 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2832 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 233: /* simple_when_clause  */
@@ -2836,7 +2838,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).simple_when_clause_);
   }
 }
-#line 2840 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2842 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 234: /* searched_when_clause_list  */
@@ -2846,7 +2848,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).searched_when_clause_list_);
   }
 }
-#line 2850 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2852 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 235: /* searched_when_clause  */
@@ -2856,7 +2858,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).searched_when_clause_);
   }
 }
-#line 2860 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2862 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 236: /* opt_else_clause  */
@@ -2866,7 +2868,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2870 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2872 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 237: /* expression_list  */
@@ -2876,7 +2878,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).expression_list_);
   }
 }
-#line 2880 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2882 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 238: /* literal_value  */
@@ -2886,7 +2888,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).literal_value_);
   }
 }
-#line 2890 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2892 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 239: /* datetime_unit  */
@@ -2896,7 +2898,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2900 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2902 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 240: /* literal_value_commalist  */
@@ -2906,7 +2908,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).literal_value_list_);
   }
 }
-#line 2910 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2912 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 241: /* attribute_ref  */
@@ -2916,7 +2918,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).attribute_);
   }
 }
-#line 2920 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2922 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 242: /* attribute_ref_list  */
@@ -2926,31 +2928,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2930 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2932 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 243: /* comparison_operation  */
 #line 615 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2936 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2938 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 244: /* unary_operation  */
 #line 616 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2942 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2944 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 245: /* add_operation  */
 #line 617 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2948 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2950 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 246: /* multiply_operation  */
 #line 617 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2954 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2956 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 247: /* name_commalist  */
@@ -2960,7 +2962,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).string_list_);
   }
 }
-#line 2964 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2966 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 248: /* any_name  */
@@ -2970,13 +2972,13 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2974 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2976 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 249: /* boolean_value  */
 #line 614 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2980 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2982 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 250: /* command  */
@@ -2986,7 +2988,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).command_);
   }
 }
-#line 2990 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2992 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 251: /* command_argument_list  */
@@ -2996,7 +2998,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
     delete ((*yyvaluep).command_argument_list_);
   }
 }
-#line 3000 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3002 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
 
@@ -3288,148 +3290,148 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 629 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 629 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].statement_);
     YYACCEPT;
   }
-#line 3297 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3299 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 3:
-#line 633 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 633 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].statement_);
     YYACCEPT;
   }
-#line 3306 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3308 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 4:
-#line 637 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 637 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].command_);
     YYACCEPT;
   }
-#line 3315 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3317 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 5:
-#line 641 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 641 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].command_);
     YYACCEPT;
   }
-#line 3324 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3326 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 6:
-#line 645 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 645 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     YYABORT;
   }
-#line 3332 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3334 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 7:
-#line 648 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 648 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     // Regular yyparse() return codes are non-negative, so use a negative one here.
     return -1;
   }
-#line 3341 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3343 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 8:
-#line 655 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 655 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].statement_);
   }
-#line 3349 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3351 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 9:
-#line 658 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 658 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].copy_from_statement_);
   }
-#line 3357 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3359 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 10:
-#line 661 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 661 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].create_table_statement_);
   }
-#line 3365 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3367 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 11:
-#line 664 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 664 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].statement_);
   }
-#line 3373 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3375 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 12:
-#line 667 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 667 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].delete_statement_);
   }
-#line 3381 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3383 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 13:
-#line 670 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 670 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].drop_table_statement_);
   }
-#line 3389 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3391 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 14:
-#line 673 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 673 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].insert_statement_);
   }
-#line 3397 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3399 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 15:
-#line 676 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 676 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].quit_statement_);
   }
-#line 3405 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3407 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 16:
-#line 679 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 679 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].select_statement_);
   }
-#line 3413 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3415 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 17:
-#line 682 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 682 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.statement_) = (yyvsp[0].update_statement_);
   }
-#line 3421 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3423 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 18:
-#line 688 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 688 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.quit_statement_) = new quickstep::ParseStatementQuit((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 3429 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3431 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 19:
-#line 694 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 694 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     delete (yyvsp[0].attribute_definition_);
@@ -3437,22 +3439,22 @@ yyreduce:
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3441 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3443 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 20:
-#line 701 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 701 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     (yyval.statement_) = nullptr;
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3452 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3454 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 21:
-#line 707 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 707 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     delete (yyvsp[0].string_value_);
@@ -3460,11 +3462,11 @@ yyreduce:
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3464 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3466 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 22:
-#line 714 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 714 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     delete (yyvsp[0].string_value_);
@@ -3472,19 +3474,19 @@ yyreduce:
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3476 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3478 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 23:
-#line 723 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 723 "../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 3484 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3486 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 24:
-#line 728 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 728 "../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_));
@@ -3492,153 +3494,153 @@ yyreduce:
       (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 3496 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3498 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 25:
-#line 737 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 737 "../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 3504 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3506 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 26:
-#line 742 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 742 "../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 3512 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3514 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 27:
-#line 747 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 747 "../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 3521 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3523 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 28:
-#line 751 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 751 "../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 3530 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3532 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 29:
-#line 757 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 757 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = nullptr;
     NotSupported(&(yylsp[0]), yyscanner, "BIT data type");
     YYERROR;
   }
-#line 3540 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3542 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 30:
-#line 762 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 762 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDate));
   }
-#line 3548 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3550 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 31:
-#line 765 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 765 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetime));
   }
-#line 3556 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3558 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 32:
-#line 768 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 768 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = nullptr;
     NotSupported(&(yylsp[0]), yyscanner, "TIME data type");
     YYERROR;
   }
-#line 3566 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3568 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 33:
-#line 773 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 773 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetime));
   }
-#line 3574 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3576 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 34:
-#line 776 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 776 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
-#line 3582 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3584 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 35:
-#line 779 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 779 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
-#line 3590 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3592 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 36:
-#line 782 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 782 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
-#line 3598 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3600 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 37:
-#line 785 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 785 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kFloat));
   }
-#line 3606 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3608 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 38:
-#line 788 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 788 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
   }
-#line 3614 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3616 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 39:
-#line 791 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 791 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
   }
-#line 3622 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3624 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 40:
-#line 794 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 794 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
   }
-#line 3630 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3632 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 41:
-#line 797 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 797 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
   }
-#line 3638 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3640 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 42:
-#line 800 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 800 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /**
      * NOTE(chasseur): This pattern exhibits a shift/reduce conflict with the
@@ -3651,27 +3653,27 @@ yyreduce:
         "or YEARMONTH INTERVAL");
     YYERROR;
   }
-#line 3655 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3657 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 43:
-#line 812 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 812 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetimeInterval));
   }
-#line 3663 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3665 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 44:
-#line 815 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 815 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kYearMonthInterval));
   }
-#line 3671 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3673 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 45:
-#line 818 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 818 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-1].numeric_literal_value_)->float_like()) {
       delete (yyvsp[-1].numeric_literal_value_);
@@ -3690,11 +3692,11 @@ yyreduce:
       }
     }
   }
-#line 3694 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3696 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 46:
-#line 836 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 836 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-1].numeric_literal_value_)->float_like()) {
       delete (yyvsp[-1].numeric_literal_value_);
@@ -3713,69 +3715,69 @@ yyreduce:
       }
     }
   }
-#line 3717 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3719 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 47:
-#line 856 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 856 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = new quickstep::ParseColumnConstraintNull((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 3725 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3727 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 48:
-#line 859 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 859 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = new quickstep::ParseColumnConstraintNotNull((yylsp[-1]).first_line, (yylsp[-1]).first_column);
   }
-#line 3733 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3735 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 49:
-#line 862 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 862 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     NotSupported(&(yylsp[0]), yyscanner, "Column Constraints (UNIQUE)");
     YYERROR;
   }
-#line 3743 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3745 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 50:
-#line 867 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 867 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     NotSupported(&(yylsp[-1]), yyscanner, "Column Constraints (PRIMARY KEY)");
     YYERROR;
   }
-#line 3753 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3755 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 51:
-#line 872 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 872 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     delete (yyvsp[0].literal_value_);
     NotSupported(&(yylsp[-1]), yyscanner, "Column Constraints (DEFAULT)");
     YYERROR;
   }
-#line 3764 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3766 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 52:
-#line 878 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 878 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     delete (yyvsp[-1].predicate_);
     NotSupported(&(yylsp[-3]), yyscanner, "Column Constraints (CHECK)");
     YYERROR;
   }
-#line 3775 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3777 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 53:
-#line 884 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 884 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     delete (yyvsp[-3].string_value_);
@@ -3783,65 +3785,65 @@ yyreduce:
     NotSupported(&(yylsp[-4]), yyscanner, "Foreign Keys");
     YYERROR;
   }
-#line 3787 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3789 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 54:
-#line 893 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 893 "../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 3796 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3798 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 55:
-#line 897 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 897 "../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 3805 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3807 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 56:
-#line 903 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 903 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_list_) = nullptr;
   }
-#line 3813 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3815 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 57:
-#line 906 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 906 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_list_) = (yyvsp[0].column_constraint_list_);
   }
-#line 3821 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3823 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 58:
-#line 911 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 911 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-1].string_list_);
     NotSupported(&(yylsp[-3]), yyscanner, "Table Constraints (UNIQUE)");
     YYERROR;
   }
-#line 3831 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3833 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 59:
-#line 916 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 916 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-1].string_list_);
     NotSupported(&(yylsp[-4]), yyscanner, "Table Constraints (PRIMARY KEY)");
     YYERROR;
   }
-#line 3841 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3843 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 60:
-#line 921 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 921 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-6].string_list_);
     delete (yyvsp[-3].string_value_);
@@ -3849,95 +3851,95 @@ yyreduce:
     NotSupported(&(yylsp[-9]), yyscanner, "Table Constraints (FOREIGN KEY)");
     YYERROR;
   }
-#line 3853 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3855 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 61:
-#line 928 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 928 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-1].predicate_);
     NotSupported(&(yylsp[-3]), yyscanner, "Table Constraints (CHECK)");
     YYERROR;
   }
-#line 3863 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3865 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 62:
-#line 935 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 935 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     NotSupported(&(yylsp[-2]), yyscanner, "Table Constraints");
     YYERROR;
   }
-#line 3872 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3874 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 63:
-#line 939 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 939 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     NotSupported(&(yylsp[0]), yyscanner, "Table Constraints");
     YYERROR;
   }
-#line 3881 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3883 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 64:
-#line 945 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 945 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /* $$ = nullptr; */
   }
-#line 3889 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3891 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 65:
-#line 948 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 948 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /* $$ = $1; */
   }
-#line 3897 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3899 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 66:
-#line 953 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 953 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.attribute_list_) = nullptr;
   }
-#line 3905 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3907 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 67:
-#line 956 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 956 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.attribute_list_) = (yyvsp[-1].attribute_list_);
   }
-#line 3913 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3915 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 68:
-#line 961 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 961 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.block_properties_) = nullptr;
   }
-#line 3921 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3923 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 69:
-#line 964 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 964 "../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 3929 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3931 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 70:
-#line 969 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 969 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.partition_clause_) = nullptr;
   }
-#line 3937 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3939 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 71:
-#line 972 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 972 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -3955,97 +3957,95 @@ yyreduce:
       }
     }
   }
-#line 3959 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3961 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 72:
-#line 991 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 991 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
-           std::to_string(quickstep::PartitionSchemeHeader::PartitionType::kHash));
+    (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::kHashPartitionType);
   }
-#line 3968 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3969 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 73:
-#line 995 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 994 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
-           std::to_string(quickstep::PartitionSchemeHeader::PartitionType::kRange));
+    (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::kRangePartitionType);
   }
-#line 3977 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3977 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 74:
-#line 1001 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 999 "../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 3986 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3986 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 75:
-#line 1005 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1003 "../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 3995 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 3995 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 76:
-#line 1011 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1009 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_string_value_);
   }
-#line 4003 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4003 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 77:
-#line 1014 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1012 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_string_list_);
   }
-#line 4011 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4011 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 78:
-#line 1017 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1015 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_integer_value_);
   }
-#line 4019 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4019 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 79:
-#line 1022 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1020 "../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 4027 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4027 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 80:
-#line 1025 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1023 "../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 4037 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4037 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 81:
-#line 1032 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1030 "../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 4045 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4045 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 82:
-#line 1037 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1035 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -4055,64 +4055,64 @@ yyreduce:
     }
     (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 4059 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4059 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 83:
-#line 1048 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1046 "../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 4069 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4069 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 84:
-#line 1053 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1051 "../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 4078 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4078 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 85:
-#line 1057 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1055 "../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 4087 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4087 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 86:
-#line 1061 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1059 "../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 4096 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4096 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 87:
-#line 1067 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1065 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = nullptr;
   }
-#line 4104 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4104 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 88:
-#line 1070 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1068 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = (yyvsp[-1].key_value_list_);
   }
-#line 4112 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4112 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 89:
-#line 1076 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1074 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-7].string_value_);
     delete (yyvsp[-5].string_list_);
@@ -4121,161 +4121,161 @@ yyreduce:
     NotSupported(&(yylsp[-6]), yyscanner, "list of column names in INSERT statement");
     YYERROR;
   }
-#line 4125 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4125 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 90:
-#line 1084 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1082 "../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_));
   }
-#line 4133 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4133 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 91:
-#line 1087 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1085 "../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 4141 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4141 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 92:
-#line 1090 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1088 "../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 4149 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4149 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 93:
-#line 1096 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1094 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_from_statement_) = new quickstep::ParseStatementCopyFrom((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].string_value_), (yyvsp[0].copy_from_params_));
   }
-#line 4157 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4157 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 94:
-#line 1101 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1099 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_from_params_) = nullptr;
   }
-#line 4165 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4165 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 95:
-#line 1104 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1102 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_from_params_) = (yyvsp[-1].copy_from_params_);
   }
-#line 4173 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4173 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 96:
-#line 1109 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1107 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_from_params_) = new quickstep::ParseCopyFromParams((yylsp[-1]).first_line, (yylsp[-1]).first_column);
     (yyval.copy_from_params_)->set_delimiter((yyvsp[0].string_value_));
   }
-#line 4182 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4182 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 97:
-#line 1113 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1111 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_from_params_) = new quickstep::ParseCopyFromParams((yylsp[-1]).first_line, (yylsp[-1]).first_column);
     (yyval.copy_from_params_)->escape_strings = (yyvsp[0].boolean_value_);
   }
-#line 4191 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4191 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 98:
-#line 1117 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1115 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_from_params_) = (yyvsp[-3].copy_from_params_);
     (yyval.copy_from_params_)->set_delimiter((yyvsp[0].string_value_));
   }
-#line 4200 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4200 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 99:
-#line 1121 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1119 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.copy_from_params_) = (yyvsp[-3].copy_from_params_);
     (yyval.copy_from_params_)->escape_strings = (yyvsp[0].boolean_value_);
   }
-#line 4209 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4209 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 100:
-#line 1127 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1125 "../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 4217 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4217 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 101:
-#line 1132 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1130 "../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 4225 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4225 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 102:
-#line 1137 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1135 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.assignment_list_) = (yyvsp[-2].assignment_list_);
     (yyval.assignment_list_)->push_back((yyvsp[0].assignment_));
   }
-#line 4234 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4234 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 103:
-#line 1141 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1139 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.assignment_list_) = new quickstep::PtrList<quickstep::ParseAssignment>();
     (yyval.assignment_list_)->push_back((yyvsp[0].assignment_));
   }
-#line 4243 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4243 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 104:
-#line 1147 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1145 "../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 4251 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4251 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 105:
-#line 1153 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1151 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.select_statement_) = new quickstep::ParseStatementSelect((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].select_query_), nullptr, (yyvsp[0].opt_priority_clause_));
   }
-#line 4259 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4259 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 106:
-#line 1156 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1154 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.select_statement_) = new quickstep::ParseStatementSelect((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].select_query_), (yyvsp[-2].with_list_), (yyvsp[0].opt_priority_clause_));
   }
-#line 4267 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4267 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 107:
-#line 1161 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1159 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_priority_clause_) = nullptr;
   }
-#line 4275 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4275 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 108:
-#line 1164 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1162 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -4293,415 +4293,415 @@ yyreduce:
       }
     }
   }
-#line 4297 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4297 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 109:
-#line 1183 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1181 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_) = (yyvsp[0].with_list_);
   }
-#line 4305 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4305 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 110:
-#line 1188 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1186 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_) = new quickstep::PtrVector<quickstep::ParseSubqueryTableReference>();
     (yyval.with_list_)->push_back((yyvsp[0].with_list_element_));
   }
-#line 4314 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4314 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 111:
-#line 1192 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1190 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_) = (yyvsp[-2].with_list_);
     (yyval.with_list_)->push_back((yyvsp[0].with_list_element_));
   }
-#line 4323 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4323 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 112:
-#line 1198 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1196 "../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 4332 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4332 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 113:
-#line 1205 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1203 "../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 4340 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4340 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 114:
-#line 1210 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1208 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /* $$ = nullptr; */
   }
-#line 4348 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4348 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 115:
-#line 1213 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1211 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     NotSupported(&(yylsp[0]), yyscanner, "ALL in selection");
     YYERROR;
   }
-#line 4357 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4357 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 116:
-#line 1217 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1215 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     NotSupported(&(yylsp[0]), yyscanner, "DISTINCT in selection");
     YYERROR;
   }
-#line 4366 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4366 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 117:
-#line 1223 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1221 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_) = new quickstep::ParseSelectionStar((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 4374 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4374 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 118:
-#line 1226 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1224 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_) = (yyvsp[0].selection_list_);
   }
-#line 4382 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4382 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 119:
-#line 1231 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1229 "../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 4391 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4391 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 120:
-#line 1235 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1233 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_list_) = (yyvsp[-2].selection_list_);
     (yyval.selection_list_)->add((yyvsp[0].selection_item_));
   }
-#line 4400 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4400 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 121:
-#line 1241 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1239 "../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 4408 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4408 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 122:
-#line 1244 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1242 "../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 4416 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4416 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 123:
-#line 1247 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1245 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].expression_));
   }
-#line 4424 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4424 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 124:
-#line 1252 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1250 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_list_) = (yyvsp[0].table_reference_list_);
   }
-#line 4432 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4432 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 125:
-#line 1257 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1255 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.subquery_expression_) = new quickstep::ParseSubqueryExpression((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].select_query_));
   }
-#line 4440 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4440 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 126:
-#line 1262 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1260 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_sample_clause_) = NULL;
   }
-#line 4448 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4448 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 127:
-#line 1265 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1263 "../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 4456 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4456 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 128:
-#line 1268 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1266 "../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 4464 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4464 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 129:
-#line 1273 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1271 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
   }
-#line 4472 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4472 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 130:
-#line 1276 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1274 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
   }
-#line 4480 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4480 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 131:
-#line 1279 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1277 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
   }
-#line 4488 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4488 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 132:
-#line 1282 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1280 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
   }
-#line 4496 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4496 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 133:
-#line 1285 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1283 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
   }
-#line 4504 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4504 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 134:
-#line 1288 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1286 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
   }
-#line 4512 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4512 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 135:
-#line 1291 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1289 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
   }
-#line 4520 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4520 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 136:
-#line 1294 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1292 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
   }
-#line 4528 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4528 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 137:
-#line 1299 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1297 "../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 4536 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4536 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 138:
-#line 1302 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1300 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.table_reference_) = (yyvsp[0].table_reference_);
   }
-#line 4544 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4544 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 139:
-#line 1307 "../SqlParser.ypp" /* yacc.c:1646  */
+#line 1305 "../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 4553 "SqlParser_gen.cpp" /* yacc.c:1646  */
+#line 4553 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 140:
-#line 1311 "../

<TRUNCATED>


[3/4] incubator-quickstep git commit: Refactored partition_type in parser.

Posted by zu...@apache.org.
Refactored partition_type in parser.


Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/86411b9c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/86411b9c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/86411b9c

Branch: refs/heads/refactor-partition-reconstruct
Commit: 86411b9c1a289cf1cbaaa0f65278e69322f07abd
Parents: 5fee821
Author: Zuyu Zhang <zu...@apache.org>
Authored: Tue Jan 10 19:02:34 2017 -0800
Committer: Zuyu Zhang <zu...@apache.org>
Committed: Tue Jan 10 19:02:34 2017 -0800

----------------------------------------------------------------------
 parser/ParsePartitionClause.hpp       |    3 +
 parser/SqlParser.ypp                  |    6 +-
 parser/preprocessed/SqlLexer_gen.cpp  |  386 ++++----
 parser/preprocessed/SqlLexer_gen.hpp  |  190 ++--
 parser/preprocessed/SqlParser_gen.cpp | 1422 ++++++++++++++--------------
 parser/preprocessed/SqlParser_gen.hpp |   12 +-
 parser/tests/Create.test              |    2 +-
 7 files changed, 1065 insertions(+), 956 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/86411b9c/parser/ParsePartitionClause.hpp
----------------------------------------------------------------------
diff --git a/parser/ParsePartitionClause.hpp b/parser/ParsePartitionClause.hpp
index d2912e7..bcc4b52 100644
--- a/parser/ParsePartitionClause.hpp
+++ b/parser/ParsePartitionClause.hpp
@@ -36,6 +36,9 @@ namespace quickstep {
  *  @{
  */
 
+static const char kHashPartitionType[] = "hash";
+static const char kRangePartitionType[] = "range";
+
 /**
  * @brief A parsed representation of partition clause.
  */

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/86411b9c/parser/SqlParser.ypp
----------------------------------------------------------------------
diff --git a/parser/SqlParser.ypp b/parser/SqlParser.ypp
index 547bb40..29b69d7 100644
--- a/parser/SqlParser.ypp
+++ b/parser/SqlParser.ypp
@@ -989,12 +989,10 @@ opt_partition_clause:
 
 partition_type:
   TOKEN_HASH {
-    $$ = new quickstep::ParseString(@1.first_line, @1.first_column,
-           std::to_string(quickstep::PartitionSchemeHeader::PartitionType::kHash));
+    $$ = new quickstep::ParseString(@1.first_line, @1.first_column, quickstep::kHashPartitionType);
   }
   | TOKEN_RANGE{
-    $$ = new quickstep::ParseString(@1.first_line, @1.first_column,
-           std::to_string(quickstep::PartitionSchemeHeader::PartitionType::kRange));
+    $$ = new quickstep::ParseString(@1.first_line, @1.first_column, quickstep::kRangePartitionType);
   };
 
 key_value_list:

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/86411b9c/parser/preprocessed/SqlLexer_gen.cpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlLexer_gen.cpp b/parser/preprocessed/SqlLexer_gen.cpp
index c17e1a1..1cb0ac8 100644
--- a/parser/preprocessed/SqlLexer_gen.cpp
+++ b/parser/preprocessed/SqlLexer_gen.cpp
@@ -1,6 +1,6 @@
-#line 2 "SqlLexer_gen.cpp"
+#line 1 "SqlLexer_gen.cpp"
 
-#line 4 "SqlLexer_gen.cpp"
+#line 3 "SqlLexer_gen.cpp"
 
 #define  YY_INT_ALIGNED short int
 
@@ -9,11 +9,89 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 0
+#define YY_FLEX_SUBMINOR_VERSION 3
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 
+    #define yy_create_buffer quickstep_yy_create_buffer
+
+    #define yy_delete_buffer quickstep_yy_delete_buffer
+
+    #define yy_scan_buffer quickstep_yy_scan_buffer
+
+    #define yy_scan_string quickstep_yy_scan_string
+
+    #define yy_scan_bytes quickstep_yy_scan_bytes
+
+    #define yy_init_buffer quickstep_yy_init_buffer
+
+    #define yy_flush_buffer quickstep_yy_flush_buffer
+
+    #define yy_load_buffer_state quickstep_yy_load_buffer_state
+
+    #define yy_switch_to_buffer quickstep_yy_switch_to_buffer
+
+    #define yypush_buffer_state quickstep_yypush_buffer_state
+
+    #define yypop_buffer_state quickstep_yypop_buffer_state
+
+    #define yyensure_buffer_stack quickstep_yyensure_buffer_stack
+
+    #define yylex quickstep_yylex
+
+    #define yyrestart quickstep_yyrestart
+
+    #define yylex_init quickstep_yylex_init
+
+    #define yylex_init_extra quickstep_yylex_init_extra
+
+    #define yylex_destroy quickstep_yylex_destroy
+
+    #define yyget_debug quickstep_yyget_debug
+
+    #define yyset_debug quickstep_yyset_debug
+
+    #define yyget_extra quickstep_yyget_extra
+
+    #define yyset_extra quickstep_yyset_extra
+
+    #define yyget_in quickstep_yyget_in
+
+    #define yyset_in quickstep_yyset_in
+
+    #define yyget_out quickstep_yyget_out
+
+    #define yyset_out quickstep_yyset_out
+
+    #define yyget_leng quickstep_yyget_leng
+
+    #define yyget_text quickstep_yyget_text
+
+    #define yyget_lineno quickstep_yyget_lineno
+
+    #define yyset_lineno quickstep_yyset_lineno
+
+        #define yyget_column quickstep_yyget_column
+
+        #define yyset_column quickstep_yyset_column
+
+    #define yywrap quickstep_yywrap
+
+    #define yyget_lval quickstep_yyget_lval
+
+    #define yyset_lval quickstep_yyset_lval
+
+    #define yyget_lloc quickstep_yyget_lloc
+
+    #define yyset_lloc quickstep_yyset_lloc
+
+    #define yyalloc quickstep_yyalloc
+
+    #define yyrealloc quickstep_yyrealloc
+
+    #define yyfree quickstep_yyfree
+
 /* First, we deal with  platform-specific or compiler-specific issues. */
 
 /* begin standard C headers. */
@@ -88,36 +166,22 @@ typedef unsigned int flex_uint32_t;
 
 #endif /* ! FLEXINT_H */
 
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
+/* TODO: this is always defined, so inline it */
 #define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* Returned upon end-of-file. */
 #define YY_NULL 0
 
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
+/* Promotes a possibly negative, possibly signed char to an
+ *   integer in range [0..255] for use as an array index.
  */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
 
 /* An opaque pointer. */
 #ifndef YY_TYPEDEF_YY_SCANNER_T
@@ -141,20 +205,16 @@ typedef void* yyscan_t;
  * definition of BEGIN.
  */
 #define BEGIN yyg->yy_start = 1 + 2 *
-
 /* Translate the current start state into a value that can be later handed
  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  * compatibility.
  */
 #define YY_START ((yyg->yy_start - 1) / 2)
 #define YYSTATE YY_START
-
 /* Action number for EOF rule of a given start state. */
 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
 /* Special action meaning "start processing a new file". */
 #define YY_NEW_FILE quickstep_yyrestart(yyin ,yyscanner )
-
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
@@ -187,10 +247,10 @@ typedef size_t yy_size_t;
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
-
+    
     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
      *       access to the local variable yy_act. Since yyless() is a macro, it would break
-     *       existing scanners that call yyless() from OUTSIDE quickstep_yylex. 
+     *       existing scanners that call yyless() from OUTSIDE quickstep_yylex.
      *       One obvious solution it to make yy_act a global. I tried that, and saw
      *       a 5% performance hit in a non-yylineno scanner, because yy_act is
      *       normally declared as a register variable-- so it is not worth it.
@@ -223,7 +283,6 @@ typedef size_t yy_size_t;
 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
 		} \
 	while ( 0 )
-
 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -238,12 +297,12 @@ struct yy_buffer_state
 	/* Size of input buffer in bytes, not including room for EOB
 	 * characters.
 	 */
-	yy_size_t yy_buf_size;
+	int yy_buf_size;
 
 	/* Number of characters read into yy_ch_buf, not including EOB
 	 * characters.
 	 */
-	yy_size_t yy_n_chars;
+	int yy_n_chars;
 
 	/* Whether we "own" the buffer - i.e., we know we created it,
 	 * and can realloc() it to grow it, and should free() it to
@@ -266,7 +325,7 @@ struct yy_buffer_state
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-    
+
 	/* Whether to try to fill the input buffer when we reach the
 	 * end of it.
 	 */
@@ -300,36 +359,33 @@ struct yy_buffer_state
 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
                           : NULL)
-
 /* Same as previous macro, but useful when we know that the buffer stack is not
  * NULL or when we need an lvalue. For internal use only.
  */
 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
 
-void quickstep_yyrestart (FILE *input_file ,yyscan_t yyscanner );
-void quickstep_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-YY_BUFFER_STATE quickstep_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
-void quickstep_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void quickstep_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void quickstep_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-void quickstep_yypop_buffer_state (yyscan_t yyscanner );
-
-static void quickstep_yyensure_buffer_stack (yyscan_t yyscanner );
-static void quickstep_yy_load_buffer_state (yyscan_t yyscanner );
-static void quickstep_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
-
+void quickstep_yyrestart ( FILE *input_file , yyscan_t yyscanner );
+void quickstep_yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+YY_BUFFER_STATE quickstep_yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
+void quickstep_yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void quickstep_yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void quickstep_yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+void quickstep_yypop_buffer_state ( yyscan_t yyscanner );
+
+static void quickstep_yyensure_buffer_stack ( yyscan_t yyscanner );
+static void quickstep_yy_load_buffer_state ( yyscan_t yyscanner );
+static void quickstep_yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
 #define YY_FLUSH_BUFFER quickstep_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
 
-YY_BUFFER_STATE quickstep_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
-YY_BUFFER_STATE quickstep_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE quickstep_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
+YY_BUFFER_STATE quickstep_yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
+YY_BUFFER_STATE quickstep_yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
+YY_BUFFER_STATE quickstep_yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
 
-void *quickstep_yyalloc (yy_size_t ,yyscan_t yyscanner );
-void *quickstep_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
-void quickstep_yyfree (void * ,yyscan_t yyscanner );
+void *quickstep_yyalloc ( yy_size_t , yyscan_t yyscanner );
+void *quickstep_yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
+void quickstep_yyfree ( void * , yyscan_t yyscanner );
 
 #define yy_new_buffer quickstep_yy_create_buffer
-
 #define yy_set_interactive(is_interactive) \
 	{ \
 	if ( ! YY_CURRENT_BUFFER ){ \
@@ -339,7 +395,6 @@ void quickstep_yyfree (void * ,yyscan_t yyscanner );
 	} \
 	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
 	}
-
 #define yy_set_bol(at_bol) \
 	{ \
 	if ( ! YY_CURRENT_BUFFER ){\
@@ -349,38 +404,32 @@ void quickstep_yyfree (void * ,yyscan_t yyscanner );
 	} \
 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
 	}
-
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
 /* Begin user sect3 */
 
 #define quickstep_yywrap(yyscanner) (/*CONSTCOND*/1)
 #define YY_SKIP_YYWRAP
-
-typedef unsigned char YY_CHAR;
+typedef flex_uint8_t YY_CHAR;
 
 typedef int yy_state_type;
 
 #define yytext_ptr yytext_r
 
-static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
-static int yy_get_next_buffer (yyscan_t yyscanner );
-#if defined(__GNUC__) && __GNUC__ >= 3
-__attribute__((__noreturn__))
-#endif
-static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
+static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
+static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  , yyscan_t yyscanner);
+static int yy_get_next_buffer ( yyscan_t yyscanner );
+static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
 
 /* Done after the current pattern has been matched and before the
  * corresponding action - sets up yytext.
  */
 #define YY_DO_BEFORE_ACTION \
 	yyg->yytext_ptr = yy_bp; \
-	yyleng = (size_t) (yy_cp - yy_bp); \
+	yyleng = (int) (yy_cp - yy_bp); \
 	yyg->yy_hold_char = *yy_cp; \
 	*yy_cp = '\0'; \
 	yyg->yy_c_buf_p = yy_cp;
-
 #define YY_NUM_RULES 161
 #define YY_END_OF_BUFFER 162
 /* This struct is not used in this scanner,
@@ -390,7 +439,7 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[593] =
+static const flex_int16_t yy_accept[593] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,  162,    2,    2,  160,  160,  159,  158,  160,
@@ -460,7 +509,7 @@ static yyconst flex_int16_t yy_accept[593] =
 
     } ;
 
-static yyconst YY_CHAR yy_ec[256] =
+static const YY_CHAR yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
@@ -492,7 +541,7 @@ static yyconst YY_CHAR yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst YY_CHAR yy_meta[72] =
+static const YY_CHAR yy_meta[72] =
     {   0,
         1,    1,    2,    1,    1,    3,    1,    4,    1,    5,
         5,    6,    6,    5,    1,    1,    1,    7,    7,    7,
@@ -504,7 +553,7 @@ static yyconst YY_CHAR yy_meta[72] =
         8
     } ;
 
-static yyconst flex_uint16_t yy_base[608] =
+static const flex_int16_t yy_base[608] =
     {   0,
         0,    1,   46,    0,  117,  163,    2,    3,  128,  132,
         6,   10,  211, 1312, 1312,    0, 1312,   13, 1312,  194,
@@ -575,7 +624,7 @@ static yyconst flex_uint16_t yy_base[608] =
      1257, 1267, 1277, 1287, 1297, 1302, 1304
     } ;
 
-static yyconst flex_int16_t yy_def[608] =
+static const flex_int16_t yy_def[608] =
     {   0,
       593,  593,  592,    3,  594,  594,  595,  595,  596,  596,
       597,  597,  592,  592,  592,  598,  592,  592,  592,  592,
@@ -646,7 +695,7 @@ static yyconst flex_int16_t yy_def[608] =
       592,  592,  592,  592,  592,  592,  592
     } ;
 
-static yyconst flex_uint16_t yy_nxt[1384] =
+static const flex_int16_t yy_nxt[1384] =
     {   0,
       592,  592,   15,   15,   61,   61,  155,  155,   67,   62,
        62,   68,   67,  592,   70,   68,   70,   73,   73,   77,
@@ -802,7 +851,7 @@ static yyconst flex_uint16_t yy_nxt[1384] =
       592,  592,  592
     } ;
 
-static yyconst flex_int16_t yy_chk[1384] =
+static const flex_int16_t yy_chk[1384] =
     {   0,
         0,    0,    1,    2,    7,    8,   57,   57,   11,    7,
         8,   11,   12,    0,   18,   12,   18,   25,   25,   27,
@@ -959,7 +1008,7 @@ static yyconst flex_int16_t yy_chk[1384] =
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[162] =
+static const flex_int32_t yy_rule_can_match_eol[162] =
     {   0,
 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -1079,17 +1128,14 @@ class UnaryOperation;
     yycolumn += yyleng;                                   \
   }
 
+#line 1131 "SqlLexer_gen.cpp"
 /* FIXME(chasseur, qzeng): Add support for hexadecimal literals. */
 /**
  * These patterns are based on the SQL-2011 standard for syntax of numeric
  * literals (Part 2, Section 5.3 of the standard).
  **/
 
-
-
-
-
-#line 1093 "SqlLexer_gen.cpp"
+#line 1138 "SqlLexer_gen.cpp"
 
 #define INITIAL 0
 #define CONDITION_SQL 1
@@ -1123,8 +1169,8 @@ struct yyguts_t
     size_t yy_buffer_stack_max; /**< capacity of stack. */
     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
     char yy_hold_char;
-    yy_size_t yy_n_chars;
-    yy_size_t yyleng_r;
+    int yy_n_chars;
+    int yyleng_r;
     char *yy_c_buf_p;
     int yy_init;
     int yy_start;
@@ -1148,7 +1194,7 @@ struct yyguts_t
 
     }; /* end struct yyguts_t */
 
-static int yy_init_globals (yyscan_t yyscanner );
+static int yy_init_globals ( yyscan_t yyscanner );
 
     /* This must go here because YYSTYPE and YYLTYPE are included
      * from bison output in section 1.*/
@@ -1158,48 +1204,48 @@ static int yy_init_globals (yyscan_t yyscanner );
     
 int quickstep_yylex_init (yyscan_t* scanner);
 
-int quickstep_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
+int quickstep_yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
 
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int quickstep_yylex_destroy (yyscan_t yyscanner );
+int quickstep_yylex_destroy ( yyscan_t yyscanner );
 
-int quickstep_yyget_debug (yyscan_t yyscanner );
+int quickstep_yyget_debug ( yyscan_t yyscanner );
 
-void quickstep_yyset_debug (int debug_flag ,yyscan_t yyscanner );
+void quickstep_yyset_debug ( int debug_flag , yyscan_t yyscanner );
 
-YY_EXTRA_TYPE quickstep_yyget_extra (yyscan_t yyscanner );
+YY_EXTRA_TYPE quickstep_yyget_extra ( yyscan_t yyscanner );
 
-void quickstep_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
+void quickstep_yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
 
-FILE *quickstep_yyget_in (yyscan_t yyscanner );
+FILE *quickstep_yyget_in ( yyscan_t yyscanner );
 
-void quickstep_yyset_in  (FILE * _in_str ,yyscan_t yyscanner );
+void quickstep_yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
 
-FILE *quickstep_yyget_out (yyscan_t yyscanner );
+FILE *quickstep_yyget_out ( yyscan_t yyscanner );
 
-void quickstep_yyset_out  (FILE * _out_str ,yyscan_t yyscanner );
+void quickstep_yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
 
-yy_size_t quickstep_yyget_leng (yyscan_t yyscanner );
+			int quickstep_yyget_leng ( yyscan_t yyscanner );
 
-char *quickstep_yyget_text (yyscan_t yyscanner );
+char *quickstep_yyget_text ( yyscan_t yyscanner );
 
-int quickstep_yyget_lineno (yyscan_t yyscanner );
+int quickstep_yyget_lineno ( yyscan_t yyscanner );
 
-void quickstep_yyset_lineno (int _line_number ,yyscan_t yyscanner );
+void quickstep_yyset_lineno ( int _line_number , yyscan_t yyscanner );
 
-int quickstep_yyget_column  (yyscan_t yyscanner );
+int quickstep_yyget_column  ( yyscan_t yyscanner );
 
-void quickstep_yyset_column (int _column_no ,yyscan_t yyscanner );
+void quickstep_yyset_column ( int _column_no , yyscan_t yyscanner );
 
-YYSTYPE * quickstep_yyget_lval (yyscan_t yyscanner );
+YYSTYPE * quickstep_yyget_lval ( yyscan_t yyscanner );
 
-void quickstep_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
+void quickstep_yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
 
-       YYLTYPE *quickstep_yyget_lloc (yyscan_t yyscanner );
+       YYLTYPE *quickstep_yyget_lloc ( yyscan_t yyscanner );
     
-        void quickstep_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
+        void quickstep_yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
     
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1207,9 +1253,9 @@ void quickstep_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int quickstep_yywrap (yyscan_t yyscanner );
+extern "C" int quickstep_yywrap ( yyscan_t yyscanner );
 #else
-extern int quickstep_yywrap (yyscan_t yyscanner );
+extern int quickstep_yywrap ( yyscan_t yyscanner );
 #endif
 #endif
 
@@ -1218,19 +1264,18 @@ extern int quickstep_yywrap (yyscan_t yyscanner );
 #endif
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
+static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
+static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
 #endif
 
 #ifndef YY_NO_INPUT
-
 #ifdef __cplusplus
-static int yyinput (yyscan_t yyscanner );
+static int yyinput ( yyscan_t yyscanner );
 #else
-static int input (yyscan_t yyscanner );
+static int input ( yyscan_t yyscanner );
 #endif
 
 #endif
@@ -1250,7 +1295,7 @@ static int input (yyscan_t yyscanner );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1261,7 +1306,7 @@ static int input (yyscan_t yyscanner );
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		size_t n; \
+		int n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -1274,7 +1319,7 @@ static int input (yyscan_t yyscanner );
 	else \
 		{ \
 		errno=0; \
-		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+		while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
 			{ \
 			if( errno != EINTR) \
 				{ \
@@ -1316,7 +1361,7 @@ static int input (yyscan_t yyscanner );
 #define YY_DECL_IS_OURS 1
 
 extern int quickstep_yylex \
-               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
+               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
 
 #define YY_DECL int quickstep_yylex \
                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
@@ -1380,7 +1425,7 @@ YY_DECL
 #line 131 "../SqlLexer.lpp"
 
 
-#line 1384 "SqlLexer_gen.cpp"
+#line 1428 "SqlLexer_gen.cpp"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -1408,9 +1453,9 @@ yy_match:
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
 				if ( yy_current_state >= 593 )
-					yy_c = yy_meta[(unsigned int) yy_c];
+					yy_c = yy_meta[yy_c];
 				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 			++yy_cp;
 			}
 		while ( yy_current_state != 592 );
@@ -1424,10 +1469,10 @@ yy_find_action:
 
 		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
 			{
-			yy_size_t yyl;
+			int yyl;
 			for ( yyl = 0; yyl < yyleng; ++yyl )
 				if ( yytext[yyl] == '\n' )
-					   
+					
     do{ yylineno++;
         yycolumn=0;
     }while(0)
@@ -2412,7 +2457,7 @@ YY_RULE_SETUP
 #line 466 "../SqlLexer.lpp"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 2416 "SqlLexer_gen.cpp"
+#line 2460 "SqlLexer_gen.cpp"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -2557,7 +2602,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
 	char *source = yyg->yytext_ptr;
-	yy_size_t number_to_move, i;
+	int number_to_move, i;
 	int ret_val;
 
 	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
@@ -2586,7 +2631,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 	/* Try to read more data. */
 
 	/* First move last chars to start of buffer. */
-	number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
+	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
 
 	for ( i = 0; i < number_to_move; ++i )
 		*(dest++) = *(source++);
@@ -2599,7 +2644,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
 	else
 		{
-			yy_size_t num_to_read =
+			int num_to_read =
 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
 		while ( num_to_read <= 0 )
@@ -2613,7 +2658,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
 			if ( b->yy_is_our_buffer )
 				{
-				yy_size_t new_size = b->yy_buf_size * 2;
+				int new_size = b->yy_buf_size * 2;
 
 				if ( new_size <= 0 )
 					b->yy_buf_size += b->yy_buf_size / 8;
@@ -2622,11 +2667,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
 				b->yy_ch_buf = (char *)
 					/* Include room in for 2 EOB chars. */
-					quickstep_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
+					quickstep_yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ,yyscanner );
 				}
 			else
 				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
+				b->yy_ch_buf = NULL;
 
 			if ( ! b->yy_ch_buf )
 				YY_FATAL_ERROR(
@@ -2668,10 +2713,10 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 	else
 		ret_val = EOB_ACT_CONTINUE_SCAN;
 
-	if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+	if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
 		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) quickstep_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
+		int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) quickstep_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ,yyscanner );
 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
 	}
@@ -2707,9 +2752,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
 			if ( yy_current_state >= 593 )
-				yy_c = yy_meta[(unsigned int) yy_c];
+				yy_c = yy_meta[yy_c];
 			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 		}
 
 	return yy_current_state;
@@ -2736,9 +2781,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
 		if ( yy_current_state >= 593 )
-			yy_c = yy_meta[(unsigned int) yy_c];
+			yy_c = yy_meta[yy_c];
 		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 	yy_is_jam = (yy_current_state == 592);
 
 	(void)yyg;
@@ -2774,7 +2819,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
 		else
 			{ /* need more input */
-			yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
+			int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
 			++yyg->yy_c_buf_p;
 
 			switch ( yy_get_next_buffer( yyscanner ) )
@@ -2798,7 +2843,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 				case EOB_ACT_END_OF_FILE:
 					{
 					if ( quickstep_yywrap(yyscanner ) )
-						return EOF;
+						return 0;
 
 					if ( ! yyg->yy_did_buffer_switch_on_eof )
 						YY_NEW_FILE;
@@ -2821,7 +2866,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
 
 	if ( c == '\n' )
-		   
+		
     do{ yylineno++;
         yycolumn=0;
     }while(0)
@@ -2909,12 +2954,12 @@ static void quickstep_yy_load_buffer_state  (yyscan_t yyscanner)
 	if ( ! b )
 		YY_FATAL_ERROR( "out of dynamic memory in quickstep_yy_create_buffer()" );
 
-	b->yy_buf_size = (yy_size_t)size;
+	b->yy_buf_size = size;
 
 	/* yy_ch_buf has to be 2 characters longer than the size given because
 	 * we need to put in 2 end-of-buffer characters.
 	 */
-	b->yy_ch_buf = (char *) quickstep_yyalloc(b->yy_buf_size + 2 ,yyscanner );
+	b->yy_ch_buf = (char *) quickstep_yyalloc((yy_size_t) (b->yy_buf_size + 2) ,yyscanner );
 	if ( ! b->yy_ch_buf )
 		YY_FATAL_ERROR( "out of dynamic memory in quickstep_yy_create_buffer()" );
 
@@ -3070,15 +3115,15 @@ static void quickstep_yyensure_buffer_stack (yyscan_t yyscanner)
 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
 		 * immediate realloc on the next call.
          */
-		num_to_alloc = 1; // After all that talk, this was set to 1 anyways...
+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
 		yyg->yy_buffer_stack = (struct yy_buffer_state**)quickstep_yyalloc
 								(num_to_alloc * sizeof(struct yy_buffer_state*)
 								, yyscanner);
 		if ( ! yyg->yy_buffer_stack )
 			YY_FATAL_ERROR( "out of dynamic memory in quickstep_yyensure_buffer_stack()" );
-								  
+
 		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-				
+
 		yyg->yy_buffer_stack_max = num_to_alloc;
 		yyg->yy_buffer_stack_top = 0;
 		return;
@@ -3107,7 +3152,7 @@ static void quickstep_yyensure_buffer_stack (yyscan_t yyscanner)
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object. 
+ * @return the newly allocated buffer state object.
  */
 YY_BUFFER_STATE quickstep_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
 {
@@ -3117,16 +3162,16 @@ YY_BUFFER_STATE quickstep_yy_scan_buffer  (char * base, yy_size_t  size , yyscan
 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
 		/* They forgot to leave room for the EOB's. */
-		return 0;
+		return NULL;
 
 	b = (YY_BUFFER_STATE) quickstep_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
 	if ( ! b )
 		YY_FATAL_ERROR( "out of dynamic memory in quickstep_yy_scan_buffer()" );
 
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
 	b->yy_buf_pos = b->yy_ch_buf = base;
 	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
+	b->yy_input_file = NULL;
 	b->yy_n_chars = b->yy_buf_size;
 	b->yy_is_interactive = 0;
 	b->yy_at_bol = 1;
@@ -3146,10 +3191,10 @@ YY_BUFFER_STATE quickstep_yy_scan_buffer  (char * base, yy_size_t  size , yyscan
  * @note If you want to scan bytes that may contain NUL values, then use
  *       quickstep_yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE quickstep_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
+YY_BUFFER_STATE quickstep_yy_scan_string (const char * yystr , yyscan_t yyscanner)
 {
     
-	return quickstep_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
+	return quickstep_yy_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner);
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to quickstep_yylex() will
@@ -3159,15 +3204,15 @@ YY_BUFFER_STATE quickstep_yy_scan_string (yyconst char * yystr , yyscan_t yyscan
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE quickstep_yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len , yyscan_t yyscanner)
+YY_BUFFER_STATE quickstep_yy_scan_bytes  (const char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
 	char *buf;
 	yy_size_t n;
-	yy_size_t i;
+	int i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
+	n = (yy_size_t) (_yybytes_len + 2);
 	buf = (char *) quickstep_yyalloc(n ,yyscanner );
 	if ( ! buf )
 		YY_FATAL_ERROR( "out of dynamic memory in quickstep_yy_scan_bytes()" );
@@ -3193,7 +3238,7 @@ YY_BUFFER_STATE quickstep_yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yy
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
+static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
 {
 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	(void)yyg;
@@ -3235,7 +3280,7 @@ YY_EXTRA_TYPE quickstep_yyget_extra  (yyscan_t yyscanner)
 int quickstep_yyget_lineno  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    
+
         if (! YY_CURRENT_BUFFER)
             return 0;
     
@@ -3248,7 +3293,7 @@ int quickstep_yyget_lineno  (yyscan_t yyscanner)
 int quickstep_yyget_column  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    
+
         if (! YY_CURRENT_BUFFER)
             return 0;
     
@@ -3276,7 +3321,7 @@ FILE *quickstep_yyget_out  (yyscan_t yyscanner)
 /** Get the length of the current token.
  * @param yyscanner The scanner object.
  */
-yy_size_t quickstep_yyget_leng  (yyscan_t yyscanner)
+int quickstep_yyget_leng  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yyleng;
@@ -3394,9 +3439,7 @@ void quickstep_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
  * the ONLY reentrant function that doesn't take the scanner as the last argument.
  * That's why we explicitly handle the declaration, instead of using our macros.
  */
-
 int quickstep_yylex_init(yyscan_t* ptr_yy_globals)
-
 {
     if (ptr_yy_globals == NULL){
         errno = EINVAL;
@@ -3423,9 +3466,7 @@ int quickstep_yylex_init(yyscan_t* ptr_yy_globals)
  * The user defined value in the first argument will be available to quickstep_yyalloc in
  * the yyextra field.
  */
-
 int quickstep_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
-
 {
     struct yyguts_t dummy_yyguts;
 
@@ -3435,20 +3476,20 @@ int quickstep_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_gl
         errno = EINVAL;
         return 1;
     }
-	
+
     *ptr_yy_globals = (yyscan_t) quickstep_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
-	
+
     if (*ptr_yy_globals == NULL){
         errno = ENOMEM;
         return 1;
     }
-    
+
     /* By setting to 0xAA, we expose bugs in
     yy_init_globals. Leave at 0x00 for releases. */
     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-    
+
     quickstep_yyset_extra (yy_user_defined, *ptr_yy_globals);
-    
+
     return yy_init_globals ( *ptr_yy_globals );
 }
 
@@ -3459,10 +3500,10 @@ static int yy_init_globals (yyscan_t yyscanner)
      * This function is called from quickstep_yylex_destroy(), so don't allocate here.
      */
 
-    yyg->yy_buffer_stack = 0;
+    yyg->yy_buffer_stack = NULL;
     yyg->yy_buffer_stack_top = 0;
     yyg->yy_buffer_stack_max = 0;
-    yyg->yy_c_buf_p = (char *) 0;
+    yyg->yy_c_buf_p = NULL;
     yyg->yy_init = 0;
     yyg->yy_start = 0;
 
@@ -3475,8 +3516,8 @@ static int yy_init_globals (yyscan_t yyscanner)
     yyin = stdin;
     yyout = stdout;
 #else
-    yyin = (FILE *) 0;
-    yyout = (FILE *) 0;
+    yyin = NULL;
+    yyout = NULL;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
@@ -3520,7 +3561,7 @@ int quickstep_yylex_destroy  (yyscan_t yyscanner)
  */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
+static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
 {
 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	(void)yyg;
@@ -3532,7 +3573,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yysca
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
+static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
 {
 	int n;
 	for ( n = 0; s[n]; ++n )
@@ -3546,7 +3587,7 @@ void *quickstep_yyalloc (yy_size_t  size , yyscan_t yyscanner)
 {
 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	(void)yyg;
-	return (void *) malloc( size );
+	return malloc(size);
 }
 
 void *quickstep_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
@@ -3561,7 +3602,7 @@ void *quickstep_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
 	 * any pointer type to void*, and deal with argument conversions
 	 * as though doing an assignment.
 	 */
-	return (void *) realloc( (char *) ptr, size );
+	return realloc(ptr, size);
 }
 
 void quickstep_yyfree (void * ptr , yyscan_t yyscanner)
@@ -3576,4 +3617,3 @@ void quickstep_yyfree (void * ptr , yyscan_t yyscanner)
 #line 466 "../SqlLexer.lpp"
 
 
-

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/86411b9c/parser/preprocessed/SqlLexer_gen.hpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlLexer_gen.hpp b/parser/preprocessed/SqlLexer_gen.hpp
index 0dd70e4..1997e75 100644
--- a/parser/preprocessed/SqlLexer_gen.hpp
+++ b/parser/preprocessed/SqlLexer_gen.hpp
@@ -2,9 +2,9 @@
 #define quickstep_yyHEADER_H 1
 #define quickstep_yyIN_HEADER 1
 
-#line 6 "SqlLexer_gen.hpp"
+#line 5 "SqlLexer_gen.hpp"
 
-#line 8 "SqlLexer_gen.hpp"
+#line 7 "SqlLexer_gen.hpp"
 
 #define  YY_INT_ALIGNED short int
 
@@ -13,11 +13,89 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 0
+#define YY_FLEX_SUBMINOR_VERSION 3
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 
+    #define yy_create_buffer quickstep_yy_create_buffer
+
+    #define yy_delete_buffer quickstep_yy_delete_buffer
+
+    #define yy_scan_buffer quickstep_yy_scan_buffer
+
+    #define yy_scan_string quickstep_yy_scan_string
+
+    #define yy_scan_bytes quickstep_yy_scan_bytes
+
+    #define yy_init_buffer quickstep_yy_init_buffer
+
+    #define yy_flush_buffer quickstep_yy_flush_buffer
+
+    #define yy_load_buffer_state quickstep_yy_load_buffer_state
+
+    #define yy_switch_to_buffer quickstep_yy_switch_to_buffer
+
+    #define yypush_buffer_state quickstep_yypush_buffer_state
+
+    #define yypop_buffer_state quickstep_yypop_buffer_state
+
+    #define yyensure_buffer_stack quickstep_yyensure_buffer_stack
+
+    #define yylex quickstep_yylex
+
+    #define yyrestart quickstep_yyrestart
+
+    #define yylex_init quickstep_yylex_init
+
+    #define yylex_init_extra quickstep_yylex_init_extra
+
+    #define yylex_destroy quickstep_yylex_destroy
+
+    #define yyget_debug quickstep_yyget_debug
+
+    #define yyset_debug quickstep_yyset_debug
+
+    #define yyget_extra quickstep_yyget_extra
+
+    #define yyset_extra quickstep_yyset_extra
+
+    #define yyget_in quickstep_yyget_in
+
+    #define yyset_in quickstep_yyset_in
+
+    #define yyget_out quickstep_yyget_out
+
+    #define yyset_out quickstep_yyset_out
+
+    #define yyget_leng quickstep_yyget_leng
+
+    #define yyget_text quickstep_yyget_text
+
+    #define yyget_lineno quickstep_yyget_lineno
+
+    #define yyset_lineno quickstep_yyset_lineno
+
+        #define yyget_column quickstep_yyget_column
+
+        #define yyset_column quickstep_yyset_column
+
+    #define yywrap quickstep_yywrap
+
+    #define yyget_lval quickstep_yyget_lval
+
+    #define yyset_lval quickstep_yyset_lval
+
+    #define yyget_lloc quickstep_yyget_lloc
+
+    #define yyset_lloc quickstep_yyset_lloc
+
+    #define yyalloc quickstep_yyalloc
+
+    #define yyrealloc quickstep_yyrealloc
+
+    #define yyfree quickstep_yyfree
+
 /* First, we deal with  platform-specific or compiler-specific issues. */
 
 /* begin standard C headers. */
@@ -92,25 +170,13 @@ typedef unsigned int flex_uint32_t;
 
 #endif /* ! FLEXINT_H */
 
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
+/* TODO: this is always defined, so inline it */
 #define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* An opaque pointer. */
@@ -165,12 +231,12 @@ struct yy_buffer_state
 	/* Size of input buffer in bytes, not including room for EOB
 	 * characters.
 	 */
-	yy_size_t yy_buf_size;
+	int yy_buf_size;
 
 	/* Number of characters read into yy_ch_buf, not including EOB
 	 * characters.
 	 */
-	yy_size_t yy_n_chars;
+	int yy_n_chars;
 
 	/* Whether we "own" the buffer - i.e., we know we created it,
 	 * and can realloc() it to grow it, and should free() it to
@@ -193,7 +259,7 @@ struct yy_buffer_state
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-    
+
 	/* Whether to try to fill the input buffer when we reach the
 	 * end of it.
 	 */
@@ -204,21 +270,21 @@ struct yy_buffer_state
 	};
 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
 
-void quickstep_yyrestart (FILE *input_file ,yyscan_t yyscanner );
-void quickstep_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-YY_BUFFER_STATE quickstep_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
-void quickstep_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void quickstep_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void quickstep_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-void quickstep_yypop_buffer_state (yyscan_t yyscanner );
+void quickstep_yyrestart ( FILE *input_file , yyscan_t yyscanner );
+void quickstep_yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+YY_BUFFER_STATE quickstep_yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
+void quickstep_yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void quickstep_yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void quickstep_yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+void quickstep_yypop_buffer_state ( yyscan_t yyscanner );
 
-YY_BUFFER_STATE quickstep_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
-YY_BUFFER_STATE quickstep_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE quickstep_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
+YY_BUFFER_STATE quickstep_yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
+YY_BUFFER_STATE quickstep_yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
+YY_BUFFER_STATE quickstep_yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
 
-void *quickstep_yyalloc (yy_size_t ,yyscan_t yyscanner );
-void *quickstep_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
-void quickstep_yyfree (void * ,yyscan_t yyscanner );
+void *quickstep_yyalloc ( yy_size_t , yyscan_t yyscanner );
+void *quickstep_yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
+void quickstep_yyfree ( void * , yyscan_t yyscanner );
 
 /* Begin user sect3 */
 
@@ -251,48 +317,48 @@ void quickstep_yyfree (void * ,yyscan_t yyscanner );
 
 int quickstep_yylex_init (yyscan_t* scanner);
 
-int quickstep_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
+int quickstep_yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
 
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int quickstep_yylex_destroy (yyscan_t yyscanner );
+int quickstep_yylex_destroy ( yyscan_t yyscanner );
 
-int quickstep_yyget_debug (yyscan_t yyscanner );
+int quickstep_yyget_debug ( yyscan_t yyscanner );
 
-void quickstep_yyset_debug (int debug_flag ,yyscan_t yyscanner );
+void quickstep_yyset_debug ( int debug_flag , yyscan_t yyscanner );
 
-YY_EXTRA_TYPE quickstep_yyget_extra (yyscan_t yyscanner );
+YY_EXTRA_TYPE quickstep_yyget_extra ( yyscan_t yyscanner );
 
-void quickstep_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
+void quickstep_yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
 
-FILE *quickstep_yyget_in (yyscan_t yyscanner );
+FILE *quickstep_yyget_in ( yyscan_t yyscanner );
 
-void quickstep_yyset_in  (FILE * _in_str ,yyscan_t yyscanner );
+void quickstep_yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
 
-FILE *quickstep_yyget_out (yyscan_t yyscanner );
+FILE *quickstep_yyget_out ( yyscan_t yyscanner );
 
-void quickstep_yyset_out  (FILE * _out_str ,yyscan_t yyscanner );
+void quickstep_yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
 
-yy_size_t quickstep_yyget_leng (yyscan_t yyscanner );
+			int quickstep_yyget_leng ( yyscan_t yyscanner );
 
-char *quickstep_yyget_text (yyscan_t yyscanner );
+char *quickstep_yyget_text ( yyscan_t yyscanner );
 
-int quickstep_yyget_lineno (yyscan_t yyscanner );
+int quickstep_yyget_lineno ( yyscan_t yyscanner );
 
-void quickstep_yyset_lineno (int _line_number ,yyscan_t yyscanner );
+void quickstep_yyset_lineno ( int _line_number , yyscan_t yyscanner );
 
-int quickstep_yyget_column  (yyscan_t yyscanner );
+int quickstep_yyget_column  ( yyscan_t yyscanner );
 
-void quickstep_yyset_column (int _column_no ,yyscan_t yyscanner );
+void quickstep_yyset_column ( int _column_no , yyscan_t yyscanner );
 
-YYSTYPE * quickstep_yyget_lval (yyscan_t yyscanner );
+YYSTYPE * quickstep_yyget_lval ( yyscan_t yyscanner );
 
-void quickstep_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
+void quickstep_yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
 
-       YYLTYPE *quickstep_yyget_lloc (yyscan_t yyscanner );
+       YYLTYPE *quickstep_yyget_lloc ( yyscan_t yyscanner );
     
-        void quickstep_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
+        void quickstep_yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
     
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -300,18 +366,18 @@ void quickstep_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int quickstep_yywrap (yyscan_t yyscanner );
+extern "C" int quickstep_yywrap ( yyscan_t yyscanner );
 #else
-extern int quickstep_yywrap (yyscan_t yyscanner );
+extern int quickstep_yywrap ( yyscan_t yyscanner );
 #endif
 #endif
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
+static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
+static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
 #endif
 
 #ifndef YY_NO_INPUT
@@ -340,7 +406,7 @@ static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
 #define YY_DECL_IS_OURS 1
 
 extern int quickstep_yylex \
-               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
+               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
 
 #define YY_DECL int quickstep_yylex \
                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
@@ -363,6 +429,6 @@ extern int quickstep_yylex \
 #line 466 "../SqlLexer.lpp"
 
 
-#line 367 "SqlLexer_gen.hpp"
+#line 432 "SqlLexer_gen.hpp"
 #undef quickstep_yyIN_HEADER
 #endif /* quickstep_yyHEADER_H */