diff --git a/parser/ParseKeyValue.hpp b/parser/ParseKeyValue.hpp
index 9d6d511..6134379 100644
--- a/parser/ParseKeyValue.hpp
+++ b/parser/ParseKeyValue.hpp
@@ -37,14 +37,15 @@
  */
 class ParseKeyValue : public ParseTreeNode {
  public:
-  enum class KeyValueType {
+  enum KeyValueType {
+    kStringBool = 0,
+    kStringInteger,
     kStringString,
-    kStringStringList,
-    kStringInteger
+    kStringStringList
   };
 
   /**
-   * @brief Single value constructor.
+   * @brief Constructor.
    *
    * @param line_number Line number of the first token of this node in the SQL statement.
    * @param column_number Column number of the first token of this node in the SQL statement.
@@ -87,7 +88,7 @@
 class ParseKeyStringValue : public ParseKeyValue {
  public:
   /**
-   * @brief Single value constructor.
+   * @brief Constructor.
    *
    * @param line_number Line number of the first token of this node in the SQL statement.
    * @param column_number Column number of the first token of this node in the SQL statement.
@@ -102,7 +103,7 @@
         value_(value) { }
 
   KeyValueType getKeyValueType() const override {
-    return ParseKeyValue::KeyValueType::kStringString;
+    return kStringString;
   }
 
   /**
@@ -143,7 +144,7 @@
 class ParseKeyStringList : public ParseKeyValue {
  public:
   /**
-   * @brief Single value constructor.
+   * @brief Constructor.
    *
    * @param line_number Line number of the first token of this node in the SQL statement.
    * @param column_number Column number of the first token of this node in the SQL statement.
@@ -155,10 +156,10 @@
                      ParseString *key,
                      PtrList<ParseString> *value)
       : ParseKeyValue(line_number, column_number, key),
-        value_(value) { }
+        value_(value) {}
 
   KeyValueType getKeyValueType() const override {
-    return ParseKeyValue::KeyValueType::kStringStringList;
+    return kStringStringList;
   }
 
   /**
@@ -197,12 +198,12 @@
 };
 
 /**
- * @brief The parsed representation of a key-value pair.
+ * @brief The parsed representation of a key-value pair. Value is of int type.
  **/
 class ParseKeyIntegerValue : public ParseKeyValue {
  public:
   /**
-   * @brief Single value constructor.
+   * @brief Constructor.
    *
    * @param line_number Line number of the first token of this node in the SQL statement.
    * @param column_number Column number of the first token of this node in the SQL statement.
@@ -214,10 +215,10 @@
                        ParseString *key,
                        NumericParseLiteralValue *value)
       : ParseKeyValue(line_number, column_number, key),
-        value_(value) { }
+        value_(value) {}
 
   KeyValueType getKeyValueType() const override {
-    return ParseKeyValue::KeyValueType::kStringInteger;
+    return kStringInteger;
   }
 
   /**
@@ -252,6 +253,62 @@
   DISALLOW_COPY_AND_ASSIGN(ParseKeyIntegerValue);
 };
 
+/**
+ * @brief The parsed representation of a key-value pair. Value is of bool type.
+ **/
+class ParseKeyBoolValue : public ParseKeyValue {
+ public:
+  /**
+   * @brief Constructor.
+   *
+   * @param line_number Line number of the first token of this node in the SQL statement.
+   * @param column_number Column number of the first token of this node in the SQL statement.
+   * @param key A parse string representing the key.
+   * @param value A single bool literal value.
+   **/
+  ParseKeyBoolValue(const int line_number,
+                    const int column_number,
+                    ParseString *key,
+                    const bool value)
+      : ParseKeyValue(line_number, column_number, key),
+        value_(value) {}
+
+  KeyValueType getKeyValueType() const override {
+    return kStringBool;
+  }
+
+  /**
+   * @return The bool value.
+   */
+  bool value() const {
+    return value_;
+  }
+
+  std::string getName() const override {
+    return "KeyBoolValue";
+  }
+
+ protected:
+  void getFieldStringItems(
+      std::vector<std::string> *inline_field_names,
+      std::vector<std::string> *inline_field_values,
+      std::vector<std::string> *non_container_child_field_names,
+      std::vector<const ParseTreeNode*> *non_container_child_fields,
+      std::vector<std::string> *container_child_field_names,
+      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override {
+    inline_field_names->push_back("key");
+    inline_field_values->push_back(key_->value());
+
+    inline_field_names->push_back("value");
+    inline_field_values->push_back(value_ ? "true" : "false");
+  }
+
+ private:
+  const bool value_;
+
+  DISALLOW_COPY_AND_ASSIGN(ParseKeyBoolValue);
+};
+
 }  // namespace quickstep
 
 #endif  // QUICKSTEP_PARSER_PARSE_KEY_VALUE_HPP_
diff --git a/parser/ParseStatement.hpp b/parser/ParseStatement.hpp
index d876163..cee7221 100644
--- a/parser/ParseStatement.hpp
+++ b/parser/ParseStatement.hpp
@@ -60,16 +60,16 @@
    * @brief The possible types of SQL statements.
    **/
   enum StatementType {
-    kCreateTable,
+    kCommand = 0,
+    kCopy,
     kCreateIndex,
-    kDropTable,
-    kSetOperation,
-    kInsert,
-    kCopyFrom,
-    kUpdate,
+    kCreateTable,
     kDelete,
+    kDropTable,
+    kInsert,
     kQuit,
-    kCommand
+    kSetOperation,
+    kUpdate
   };
 
   /**
@@ -215,9 +215,10 @@
   DISALLOW_COPY_AND_ASSIGN(ParseStatementCreateTable);
 };
 
-  /**
-   * @brief The parsed representation of a CREATE INDEX statement.
-   **/
+
+/**
+ * @brief The parsed representation of a CREATE INDEX statement.
+ **/
 class ParseStatementCreateIndex : public ParseStatement {
  public:
     /**
@@ -423,6 +424,7 @@
     DISALLOW_COPY_AND_ASSIGN(ParseStatementCreateIndex);
 };
 
+
 /**
  * @brief The parsed representation of a DROP TABLE statement.
  **/
@@ -479,6 +481,7 @@
   DISALLOW_COPY_AND_ASSIGN(ParseStatementDropTable);
 };
 
+
 /**
  * @brief The parsed representation of an UNION/INTERSECT/SELECT statement.
  **/
@@ -519,14 +522,14 @@
   std::string getName() const override { return "SetOperationStatement"; }
 
   /**
-   * @return Gets the top-level set operation query.
+   * @return Get the top-level set operation query.
    */
   const ParseSetOperation* set_operation_query() const {
     return set_operation_query_.get();
   }
 
   /**
-   * @brief Gets the WITH table queries.
+   * @brief Get the WITH table queries.
    *
    * @return The parsed WITH table list.
    */
@@ -575,6 +578,7 @@
   DISALLOW_COPY_AND_ASSIGN(ParseStatementSetOperation);
 };
 
+
 /**
  * @brief The parsed representation of an INSERT statement.
  *
@@ -694,6 +698,7 @@
   DISALLOW_COPY_AND_ASSIGN(ParseStatementInsertTuple);
 };
 
+
 /**
  * @brief The parsed representation of an INSERT ... SELECT ... statement.
  **/
@@ -771,122 +776,135 @@
   DISALLOW_COPY_AND_ASSIGN(ParseStatementInsertSelection);
 };
 
-/**
- * @brief Optional parameters for a COPY FROM statement.
- **/
-struct ParseCopyFromParams : public ParseTreeNode {
-  /**
-   * @brief Constructor, sets default values.
-   **/
-  ParseCopyFromParams(const int line_number, const int column_number)
-      : ParseTreeNode(line_number, column_number),
-        escape_strings(true) {
-  }
-
-  std::string getName() const override { return "CopyFromParams"; }
-
-  /**
-   * @brief Sets the column delimiter.
-   *
-   * @param delimiter_in The column delimiter string.
-   */
-  void set_delimiter(ParseString* delimiter_in) {
-    delimiter.reset(delimiter_in);
-  }
-
-  /**
-   * @brief The string which terminates individual attribute values in the
-   *        input file. Can be NULL.
-   **/
-  std::unique_ptr<ParseString> delimiter;
-
-  /**
-   * @brief If true, replace C-style escape sequences in strings from the input
-   *        text file.
-   **/
-  bool escape_strings;
-
- protected:
-  void getFieldStringItems(
-      std::vector<std::string> *inline_field_names,
-      std::vector<std::string> *inline_field_values,
-      std::vector<std::string> *non_container_child_field_names,
-      std::vector<const ParseTreeNode*> *non_container_child_fields,
-      std::vector<std::string> *container_child_field_names,
-      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override {
-    if (delimiter != nullptr) {
-      inline_field_names->push_back("delimiter");
-      inline_field_values->push_back(delimiter->value());
-    }
-
-    inline_field_names->push_back("escape_string");
-    inline_field_values->push_back(escape_strings ? "true" : "false");
-  }
-};
 
 /**
- * @brief The parsed representation of a COPY FROM statement.
+ * @brief The parsed representation of a COPY FROM/COPY TO statement.
  **/
-class ParseStatementCopyFrom : public ParseStatement {
+class ParseStatementCopy : public ParseStatement {
  public:
   /**
-   * @brief Constructor.
+   * @brief Copy direction (FROM text file/TO text file).
+   */
+  enum CopyDirection {
+    kFrom = 0,
+    kTo
+  };
+
+  /**
+   * @brief Constructor for a copy statement that copies a stored relation FROM
+   *        a text file (or multiple text files, in the case that the file name
+   *        is a GLOB pattern) / TO a text file.
    *
    * @param line_number Line number of the first token of this node in the SQL statement.
    * @param column_number Column number of the first token of this node in the SQL statement.
-   * @param relation_name The name of the relation to insert into.
-   * @param source_filename The name of the text file to bulk insert from.
-   * @param params The optional parameters of the COPY FROM statement (should
-   *        be supplied with defaults if not otherwise set).
+   * @param direction The copy direction (FROM/TO).
+   * @param relation_name The name of the relation.
+   * @param file_name The name of the file.
+   * @param params The optional parameters of the COPY statement.
    **/
-  ParseStatementCopyFrom(const int line_number,
-                         const int column_number,
-                         ParseString *relation_name,
-                         ParseString *source_filename,
-                         ParseCopyFromParams *params)
+  ParseStatementCopy(const int line_number,
+                     const int column_number,
+                     const CopyDirection direction,
+                     ParseString *relation_name,
+                     ParseString *file_name,
+                     PtrList<ParseKeyValue> *params)
       : ParseStatement(line_number, column_number),
+        direction_(direction),
         relation_name_(relation_name),
-        source_filename_(source_filename),
+        file_name_(file_name),
+        params_(params) {
+  }
+
+  /**
+   * @brief Constructor for a copy statement that copies the result table of a
+   *        query TO a text file.
+   *
+   * @param line_number Line number of the first token of this node in the SQL statement.
+   * @param column_number Column number of the first token of this node in the SQL statement.
+   * @param set_operation_query The set operation query.
+   * @param with_clause The WITH clause of common table query expressions.
+   * @param file_name The name of the file.
+   * @param params The optional parameters of the COPY statement.
+   **/
+  ParseStatementCopy(const int line_number,
+                     const int column_number,
+                     ParseSetOperation *set_operation_query,
+                     PtrVector<ParseSubqueryTableReference> *with_clause,
+                     ParseString *file_name,
+                     PtrList<ParseKeyValue> *params)
+      : ParseStatement(line_number, column_number),
+        direction_(kTo),
+        set_operation_query_(set_operation_query),
+        with_clause_(with_clause),
+        file_name_(file_name),
         params_(params) {
   }
 
   /**
    * @brief Destructor.
    */
-  ~ParseStatementCopyFrom() override {
+  ~ParseStatementCopy() override {
   }
 
   StatementType getStatementType() const override {
-    return kCopyFrom;
+    return kCopy;
   }
 
-  std::string getName() const override { return "CopyFromStatement"; }
+  std::string getName() const override {
+    return "CopyStatement";
+  }
 
   /**
-   * @brief Get the name of the relation to insert into.
+   * @brief Get the direction (FROM text file/TO text file) of the COPY statement.
    *
-   * @return The name of the relation to insert into.
+   * return The direction of the COPY statement.
+   */
+  const CopyDirection getCopyDirection() const {
+    return direction_;
+  }
+
+  /**
+   * @brief Get the name of the relation.
+   *
+   * @return The name of the relation.
    **/
   const ParseString* relation_name() const {
     return relation_name_.get();
   }
 
   /**
-   * @brief Get the name of the text file to copy from.
+   * @brief Get the set operation query.
    *
-   * @return The name of the text file to copy from.
-   **/
-  const ParseString* source_filename() const {
-    return source_filename_.get();
+   * @return The set operation query.
+   */
+  const ParseSetOperation* set_operation_query() const {
+    return set_operation_query_.get();
   }
 
   /**
-   * @brief Get the additional COPY FROM parameters.
+   * @brief Get the WITH table queries.
    *
-   * @return The string which terminates individual attribute values in the
-   *         input file.
+   * @return The parsed WITH table list.
+   */
+  const PtrVector<ParseSubqueryTableReference>* with_clause() const {
+    return with_clause_.get();
+  }
+
+  /**
+   * @brief Get the name of the text file to import from/export to.
+   *
+   * @return The name of the text file.
    **/
-  const ParseCopyFromParams* params() const {
+  const ParseString* file_name() const {
+    return file_name_.get();
+  }
+
+  /**
+   * @brief Get the additional COPY parameters.
+   *
+   * @return The additional COPY parameters.
+   **/
+  const PtrList<ParseKeyValue>* params() const {
     return params_.get();
   }
 
@@ -898,24 +916,53 @@
       std::vector<const ParseTreeNode*> *non_container_child_fields,
       std::vector<std::string> *container_child_field_names,
       std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override {
-    inline_field_names->push_back("relation_name");
-    inline_field_values->push_back(relation_name_->value());
+    inline_field_names->push_back("direction");
+    inline_field_values->push_back(direction_ == kFrom ? "FROM" : "TO");
 
-    inline_field_names->push_back("source_file");
-    inline_field_values->push_back(source_filename_->value());
+    inline_field_names->push_back("file");
+    inline_field_values->push_back(file_name_->value());
+
+    if (relation_name_ != nullptr) {
+      inline_field_names->push_back("relation_name");
+      inline_field_values->push_back(relation_name_->value());
+    }
+
+    if (set_operation_query_ != nullptr) {
+      non_container_child_field_names->push_back("set_operation_query");
+      non_container_child_fields->push_back(set_operation_query_.get());
+    }
+
+    if (with_clause_ != nullptr && !with_clause_->empty()) {
+      container_child_field_names->push_back("with_clause");
+      container_child_fields->emplace_back();
+      for (const ParseSubqueryTableReference &common_subquery : *with_clause_) {
+        container_child_fields->back().push_back(&common_subquery);
+      }
+    }
 
     if (params_ != nullptr) {
-      non_container_child_field_names->push_back("params");
-      non_container_child_fields->push_back(params_.get());
+      container_child_field_names->push_back("params");
+      container_child_fields->emplace_back();
+      for (const ParseKeyValue &param : *params_) {
+        container_child_fields->back().push_back(&param);
+      }
     }
   }
 
  private:
-  std::unique_ptr<ParseString> relation_name_;
-  std::unique_ptr<ParseString> source_filename_;
-  std::unique_ptr<ParseCopyFromParams> params_;
+  const CopyDirection direction_;
 
-  DISALLOW_COPY_AND_ASSIGN(ParseStatementCopyFrom);
+  // NOTE(jianqiao):
+  // (1) Either relation_name_ or set_operation_query_ has non-null value.
+  // (2) set_operation_query_ must be null for COPY FROM statement.
+  std::unique_ptr<ParseString> relation_name_;
+  std::unique_ptr<ParseSetOperation> set_operation_query_;
+
+  std::unique_ptr<PtrVector<ParseSubqueryTableReference>> with_clause_;
+  std::unique_ptr<ParseString> file_name_;
+  std::unique_ptr<PtrList<ParseKeyValue>> params_;
+
+  DISALLOW_COPY_AND_ASSIGN(ParseStatementCopy);
 };
 
 
@@ -1028,6 +1075,7 @@
   DISALLOW_COPY_AND_ASSIGN(ParseStatementUpdate);
 };
 
+
 /**
  * @brief The parsed representation of a DELETE statement.
  **/
@@ -1140,6 +1188,7 @@
   DISALLOW_COPY_AND_ASSIGN(ParseStatementQuit);
 };
 
+
 /**
  * @brief Class to hold the parsed command name and an optional argument string.
  * @details Commands are non-sql statements which can be issued to quickstep.
diff --git a/parser/SqlLexer.lpp b/parser/SqlLexer.lpp
index c6402e0..d818d0b 100644
--- a/parser/SqlLexer.lpp
+++ b/parser/SqlLexer.lpp
@@ -45,13 +45,13 @@
 class ParseBlockProperties;
 class ParseColumnConstraint;
 class ParseCommand;
-struct ParseCopyFromParams;
 class ParseDataType;
 class ParseExpression;
 struct ParseFrameInfo;
 class ParseFunctionCall;
 class ParseGroupBy;
 class ParseHaving;
+class ParseKeyBoolValue;
 class ParseKeyIntegerValue;
 class ParseKeyStringValue;
 class ParseKeyStringList;
@@ -75,7 +75,7 @@
 class ParseSimpleWhenClause;
 class ParseStringKeyLiteralValues;
 class ParseStatement;
-class ParseStatementCopyFrom;
+class ParseStatementCopy;
 class ParseStatementCreateTable;
 class ParseStatementDelete;
 class ParseStatementDropTable;
@@ -200,7 +200,6 @@
   "decimal"          return TOKEN_DECIMAL;
   "default"          return TOKEN_DEFAULT;
   "delete"           return TOKEN_DELETE;
-  "delimiter"        return TOKEN_DELIMITER;
   "desc"             return TOKEN_DESC;
   "descending"       return TOKEN_DESC;
   "distinct"         return TOKEN_DISTINCT;
@@ -208,7 +207,6 @@
   "drop"             return TOKEN_DROP;
   "else"             return TOKEN_ELSE;
   "end"              return TOKEN_END;
-  "escape_strings"   return TOKEN_ESCAPE_STRINGS;
   "exists"           return TOKEN_EXISTS;
   "extract"          return TOKEN_EXTRACT;
   "false"            return TOKEN_FALSE;
@@ -271,11 +269,14 @@
   "set"              return TOKEN_SET;
   "sma"              return TOKEN_SMA;
   "smallint"         return TOKEN_SMALLINT;
+  "stderr"           return TOKEN_STDERR;
+  "stdout"           return TOKEN_STDOUT;
   "substring"        return TOKEN_SUBSTRING;
   "table"            return TOKEN_TABLE;
   "then"             return TOKEN_THEN;
   "time"             return TOKEN_TIME;
   "timestamp"        return TOKEN_TIMESTAMP;
+  "to"               return TOKEN_TO;
   "true"             return TOKEN_TRUE;
   "tuplesample"      return TOKEN_TUPLESAMPLE;
   "unbounded"        return TOKEN_UNBOUNDED;
diff --git a/parser/SqlParser.ypp b/parser/SqlParser.ypp
index 5db2171..8fbcdd7 100644
--- a/parser/SqlParser.ypp
+++ b/parser/SqlParser.ypp
@@ -168,8 +168,7 @@
   quickstep::ParseKeyStringValue *key_string_value_;
   quickstep::ParseKeyStringList *key_string_list_;
   quickstep::ParseKeyIntegerValue *key_integer_value_;
-
-  quickstep::ParseCopyFromParams *copy_from_params_;
+  quickstep::ParseKeyBoolValue *key_bool_value_;
 
   quickstep::ParseAssignment *assignment_;
   quickstep::PtrList<quickstep::ParseAssignment> *assignment_list_;
@@ -182,7 +181,7 @@
   quickstep::ParseStatementUpdate *update_statement_;
   quickstep::ParseStatementInsert *insert_statement_;
   quickstep::ParseStatementDelete *delete_statement_;
-  quickstep::ParseStatementCopyFrom *copy_from_statement_;
+  quickstep::ParseStatementCopy *copy_statement_;
   quickstep::ParseStatementCreateTable *create_table_statement_;
   quickstep::ParsePartitionClause *partition_clause_;
   quickstep::ParseBlockProperties *block_properties_;
@@ -275,14 +274,12 @@
 %token TOKEN_DECIMAL;
 %token TOKEN_DEFAULT;
 %token TOKEN_DELETE;
-%token TOKEN_DELIMITER;
 %token TOKEN_DESC;
 %token TOKEN_DISTINCT;
 %token TOKEN_DOUBLE;
 %token TOKEN_DROP;
 %token TOKEN_ELSE;
 %token TOKEN_END;
-%token TOKEN_ESCAPE_STRINGS;
 %token TOKEN_EXISTS;
 %token TOKEN_EXTRACT;
 %token TOKEN_FALSE;
@@ -342,11 +339,14 @@
 %token TOKEN_SET;
 %token TOKEN_SMA;
 %token TOKEN_SMALLINT;
+%token TOKEN_STDERR;
+%token TOKEN_STDOUT;
 %token TOKEN_SUBSTRING;
 %token TOKEN_TABLE;
 %token TOKEN_THEN;
 %token TOKEN_TIME;
 %token TOKEN_TIMESTAMP;
+%token TOKEN_TO;
 %token TOKEN_TRUE;
 %token TOKEN_TUPLESAMPLE;
 %token TOKEN_UNBOUNDED;
@@ -370,6 +370,7 @@
   datetime_unit
   index_type
   partition_type
+  copy_to_target
 
 %type <boolean_value_>
   boolean_value
@@ -471,6 +472,7 @@
 
 %type <key_value_list_>
   key_value_list
+  opt_copy_params
   opt_index_properties
 
 %type <key_string_value_>
@@ -482,6 +484,9 @@
 %type <key_integer_value_>
   key_integer_value
 
+%type <key_bool_value_>
+  key_bool_value
+
 %type <assignment_>
   assignment_item
 
@@ -511,12 +516,8 @@
 %type <insert_statement_>
   insert_statement
 
-%type <copy_from_statement_>
-  copy_from_statement
-
-%type <copy_from_params_>
-  copy_from_params
-  opt_copy_from_params
+%type <copy_statement_>
+  copy_statement
 
 %type <create_table_statement_>
   create_table_statement
@@ -665,7 +666,7 @@
   alter_table_statement {
     $$ = $1;
   }
-  | copy_from_statement {
+  | copy_statement {
     $$ = $1;
   }
   | create_table_statement {
@@ -1024,17 +1025,23 @@
   }
   | key_integer_value {
     $$ = $1;
+  }
+  | key_bool_value {
+    $$ = $1;
   };
 
 key_string_value:
   any_name any_name {
     $$ = new quickstep::ParseKeyStringValue(@1.first_line, @1.first_column, $1, $2);
   }
+  | any_name TOKEN_STRING_SINGLE_QUOTED {
+    $$ = new quickstep::ParseKeyStringValue(@1.first_line, @1.first_column, $1, $2);
+  }
   | any_name TOKEN_ALL {
     // This is a special case to handle the COMPRESS ALL option of the BLOCK PROPERTIES.
     $$ = new quickstep::ParseKeyStringValue(@1.first_line, @1.first_column, $1,
         new quickstep::ParseString(@2.first_line, @2.first_column, "ALL"));
-  }
+  };
 
 key_string_list:
   any_name '(' name_commalist ')' {
@@ -1052,6 +1059,11 @@
     $$ = new quickstep::ParseKeyIntegerValue(@1.first_line, @1.first_column, $1, $2);
   };
 
+key_bool_value:
+  any_name boolean_value {
+    $$ = new quickstep::ParseKeyBoolValue(@1.first_line, @1.first_column, $1, $2);
+  };
+
 index_type:
   TOKEN_BITWEAVING {
     // Defaults to BitWeavingV, but IndexProperties can change this to H.
@@ -1100,37 +1112,46 @@
   }
   ;
 
-copy_from_statement:
-  TOKEN_COPY any_name TOKEN_FROM TOKEN_STRING_SINGLE_QUOTED opt_copy_from_params {
-    $$ = new quickstep::ParseStatementCopyFrom(@1.first_line, @1.first_column, $2, $4, $5);
+copy_statement:
+  TOKEN_COPY any_name TOKEN_FROM TOKEN_STRING_SINGLE_QUOTED opt_copy_params {
+    $$ = new quickstep::ParseStatementCopy(@1.first_line, @1.first_column,
+                                           quickstep::ParseStatementCopy::kFrom,
+                                           $2, $4, $5);
+  }
+  | TOKEN_COPY any_name copy_to_target opt_copy_params {
+    $$ = new quickstep::ParseStatementCopy(@1.first_line, @1.first_column,
+                                           quickstep::ParseStatementCopy::kTo,
+                                           $2, $3, $4);
+  }
+  | TOKEN_COPY set_operation_union copy_to_target opt_copy_params {
+    $$ = new quickstep::ParseStatementCopy(@1.first_line, @1.first_column,
+                                           $2, nullptr, $3, $4);
+  }
+  | with_clause TOKEN_COPY set_operation_union copy_to_target opt_copy_params {
+    $$ = new quickstep::ParseStatementCopy(@1.first_line, @1.first_column,
+                                           $3, $1, $4, $5);
   };
 
-opt_copy_from_params:
+copy_to_target:
+  TOKEN_TO TOKEN_STRING_SINGLE_QUOTED {
+    $$ = new quickstep::ParseString($2->line_number(), $2->column_number(), "@" + $2->value());
+    delete $2;
+  }
+  | TOKEN_TO TOKEN_STDOUT {
+    $$ = new quickstep::ParseString(@2.first_line, @2.first_column, "$stdout");
+  }
+  | TOKEN_TO TOKEN_STDERR {
+    $$ = new quickstep::ParseString(@2.first_line, @2.first_column, "$stderr");
+  };
+
+opt_copy_params:
   {
     $$ = nullptr;
   }
-  | TOKEN_WITH '(' copy_from_params ')' {
+  | TOKEN_WITH '(' key_value_list ')' {
     $$ = $3;
   };
 
-copy_from_params:
-  TOKEN_DELIMITER TOKEN_STRING_SINGLE_QUOTED {
-    $$ = new quickstep::ParseCopyFromParams(@1.first_line, @1.first_column);
-    $$->set_delimiter($2);
-  }
-  | TOKEN_ESCAPE_STRINGS boolean_value {
-    $$ = new quickstep::ParseCopyFromParams(@1.first_line, @1.first_column);
-    $$->escape_strings = $2;
-  }
-  | copy_from_params ',' TOKEN_DELIMITER TOKEN_STRING_SINGLE_QUOTED {
-    $$ = $1;
-    $$->set_delimiter($4);
-  }
-  | copy_from_params ',' TOKEN_ESCAPE_STRINGS boolean_value {
-    $$ = $1;
-    $$->escape_strings = $4;
-  };
-
 update_statement:
   TOKEN_UPDATE any_name TOKEN_SET assignment_list opt_where_clause {
     $$ = new quickstep::ParseStatementUpdate(@1.first_line, @1.first_column, $2, $4, $5);
diff --git a/parser/preprocessed/SqlLexer_gen.cpp b/parser/preprocessed/SqlLexer_gen.cpp
index bd77ee1..4800cde 100644
--- a/parser/preprocessed/SqlLexer_gen.cpp
+++ b/parser/preprocessed/SqlLexer_gen.cpp
@@ -9,88 +9,244 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 3
+#define YY_FLEX_SUBMINOR_VERSION 4
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 
-    #define yy_create_buffer quickstep_yy_create_buffer
+#ifdef yy_create_buffer
+#define quickstep_yy_create_buffer_ALREADY_DEFINED
+#else
+#define yy_create_buffer quickstep_yy_create_buffer
+#endif
 
-    #define yy_delete_buffer quickstep_yy_delete_buffer
+#ifdef yy_delete_buffer
+#define quickstep_yy_delete_buffer_ALREADY_DEFINED
+#else
+#define yy_delete_buffer quickstep_yy_delete_buffer
+#endif
 
-    #define yy_scan_buffer quickstep_yy_scan_buffer
+#ifdef yy_scan_buffer
+#define quickstep_yy_scan_buffer_ALREADY_DEFINED
+#else
+#define yy_scan_buffer quickstep_yy_scan_buffer
+#endif
 
-    #define yy_scan_string quickstep_yy_scan_string
+#ifdef yy_scan_string
+#define quickstep_yy_scan_string_ALREADY_DEFINED
+#else
+#define yy_scan_string quickstep_yy_scan_string
+#endif
 
-    #define yy_scan_bytes quickstep_yy_scan_bytes
+#ifdef yy_scan_bytes
+#define quickstep_yy_scan_bytes_ALREADY_DEFINED
+#else
+#define yy_scan_bytes quickstep_yy_scan_bytes
+#endif
 
-    #define yy_init_buffer quickstep_yy_init_buffer
+#ifdef yy_init_buffer
+#define quickstep_yy_init_buffer_ALREADY_DEFINED
+#else
+#define yy_init_buffer quickstep_yy_init_buffer
+#endif
 
-    #define yy_flush_buffer quickstep_yy_flush_buffer
+#ifdef yy_flush_buffer
+#define quickstep_yy_flush_buffer_ALREADY_DEFINED
+#else
+#define yy_flush_buffer quickstep_yy_flush_buffer
+#endif
 
-    #define yy_load_buffer_state quickstep_yy_load_buffer_state
+#ifdef yy_load_buffer_state
+#define quickstep_yy_load_buffer_state_ALREADY_DEFINED
+#else
+#define yy_load_buffer_state quickstep_yy_load_buffer_state
+#endif
 
-    #define yy_switch_to_buffer quickstep_yy_switch_to_buffer
+#ifdef yy_switch_to_buffer
+#define quickstep_yy_switch_to_buffer_ALREADY_DEFINED
+#else
+#define yy_switch_to_buffer quickstep_yy_switch_to_buffer
+#endif
 
-    #define yypush_buffer_state quickstep_yypush_buffer_state
+#ifdef yypush_buffer_state
+#define quickstep_yypush_buffer_state_ALREADY_DEFINED
+#else
+#define yypush_buffer_state quickstep_yypush_buffer_state
+#endif
 
-    #define yypop_buffer_state quickstep_yypop_buffer_state
+#ifdef yypop_buffer_state
+#define quickstep_yypop_buffer_state_ALREADY_DEFINED
+#else
+#define yypop_buffer_state quickstep_yypop_buffer_state
+#endif
 
-    #define yyensure_buffer_stack quickstep_yyensure_buffer_stack
+#ifdef yyensure_buffer_stack
+#define quickstep_yyensure_buffer_stack_ALREADY_DEFINED
+#else
+#define yyensure_buffer_stack quickstep_yyensure_buffer_stack
+#endif
 
-    #define yylex quickstep_yylex
+#ifdef yylex
+#define quickstep_yylex_ALREADY_DEFINED
+#else
+#define yylex quickstep_yylex
+#endif
 
-    #define yyrestart quickstep_yyrestart
+#ifdef yyrestart
+#define quickstep_yyrestart_ALREADY_DEFINED
+#else
+#define yyrestart quickstep_yyrestart
+#endif
 
-    #define yylex_init quickstep_yylex_init
+#ifdef yylex_init
+#define quickstep_yylex_init_ALREADY_DEFINED
+#else
+#define yylex_init quickstep_yylex_init
+#endif
 
-    #define yylex_init_extra quickstep_yylex_init_extra
+#ifdef yylex_init_extra
+#define quickstep_yylex_init_extra_ALREADY_DEFINED
+#else
+#define yylex_init_extra quickstep_yylex_init_extra
+#endif
 
-    #define yylex_destroy quickstep_yylex_destroy
+#ifdef yylex_destroy
+#define quickstep_yylex_destroy_ALREADY_DEFINED
+#else
+#define yylex_destroy quickstep_yylex_destroy
+#endif
 
-    #define yyget_debug quickstep_yyget_debug
+#ifdef yyget_debug
+#define quickstep_yyget_debug_ALREADY_DEFINED
+#else
+#define yyget_debug quickstep_yyget_debug
+#endif
 
-    #define yyset_debug quickstep_yyset_debug
+#ifdef yyset_debug
+#define quickstep_yyset_debug_ALREADY_DEFINED
+#else
+#define yyset_debug quickstep_yyset_debug
+#endif
 
-    #define yyget_extra quickstep_yyget_extra
+#ifdef yyget_extra
+#define quickstep_yyget_extra_ALREADY_DEFINED
+#else
+#define yyget_extra quickstep_yyget_extra
+#endif
 
-    #define yyset_extra quickstep_yyset_extra
+#ifdef yyset_extra
+#define quickstep_yyset_extra_ALREADY_DEFINED
+#else
+#define yyset_extra quickstep_yyset_extra
+#endif
 
-    #define yyget_in quickstep_yyget_in
+#ifdef yyget_in
+#define quickstep_yyget_in_ALREADY_DEFINED
+#else
+#define yyget_in quickstep_yyget_in
+#endif
 
-    #define yyset_in quickstep_yyset_in
+#ifdef yyset_in
+#define quickstep_yyset_in_ALREADY_DEFINED
+#else
+#define yyset_in quickstep_yyset_in
+#endif
 
-    #define yyget_out quickstep_yyget_out
+#ifdef yyget_out
+#define quickstep_yyget_out_ALREADY_DEFINED
+#else
+#define yyget_out quickstep_yyget_out
+#endif
 
-    #define yyset_out quickstep_yyset_out
+#ifdef yyset_out
+#define quickstep_yyset_out_ALREADY_DEFINED
+#else
+#define yyset_out quickstep_yyset_out
+#endif
 
-    #define yyget_leng quickstep_yyget_leng
+#ifdef yyget_leng
+#define quickstep_yyget_leng_ALREADY_DEFINED
+#else
+#define yyget_leng quickstep_yyget_leng
+#endif
 
-    #define yyget_text quickstep_yyget_text
+#ifdef yyget_text
+#define quickstep_yyget_text_ALREADY_DEFINED
+#else
+#define yyget_text quickstep_yyget_text
+#endif
 
-    #define yyget_lineno quickstep_yyget_lineno
+#ifdef yyget_lineno
+#define quickstep_yyget_lineno_ALREADY_DEFINED
+#else
+#define yyget_lineno quickstep_yyget_lineno
+#endif
 
-    #define yyset_lineno quickstep_yyset_lineno
+#ifdef yyset_lineno
+#define quickstep_yyset_lineno_ALREADY_DEFINED
+#else
+#define yyset_lineno quickstep_yyset_lineno
+#endif
 
-        #define yyget_column quickstep_yyget_column
+#ifdef yyget_column
+#define quickstep_yyget_column_ALREADY_DEFINED
+#else
+#define yyget_column quickstep_yyget_column
+#endif
 
-        #define yyset_column quickstep_yyset_column
+#ifdef yyset_column
+#define quickstep_yyset_column_ALREADY_DEFINED
+#else
+#define yyset_column quickstep_yyset_column
+#endif
 
-    #define yywrap quickstep_yywrap
+#ifdef yywrap
+#define quickstep_yywrap_ALREADY_DEFINED
+#else
+#define yywrap quickstep_yywrap
+#endif
 
-    #define yyget_lval quickstep_yyget_lval
+#ifdef yyget_lval
+#define quickstep_yyget_lval_ALREADY_DEFINED
+#else
+#define yyget_lval quickstep_yyget_lval
+#endif
 
-    #define yyset_lval quickstep_yyset_lval
+#ifdef yyset_lval
+#define quickstep_yyset_lval_ALREADY_DEFINED
+#else
+#define yyset_lval quickstep_yyset_lval
+#endif
 
-    #define yyget_lloc quickstep_yyget_lloc
+#ifdef yyget_lloc
+#define quickstep_yyget_lloc_ALREADY_DEFINED
+#else
+#define yyget_lloc quickstep_yyget_lloc
+#endif
 
-    #define yyset_lloc quickstep_yyset_lloc
+#ifdef yyset_lloc
+#define quickstep_yyset_lloc_ALREADY_DEFINED
+#else
+#define yyset_lloc quickstep_yyset_lloc
+#endif
 
-    #define yyalloc quickstep_yyalloc
+#ifdef yyalloc
+#define quickstep_yyalloc_ALREADY_DEFINED
+#else
+#define yyalloc quickstep_yyalloc
+#endif
 
-    #define yyrealloc quickstep_yyrealloc
+#ifdef yyrealloc
+#define quickstep_yyrealloc_ALREADY_DEFINED
+#else
+#define yyrealloc quickstep_yyrealloc
+#endif
 
-    #define yyfree quickstep_yyfree
+#ifdef yyfree
+#define quickstep_yyfree_ALREADY_DEFINED
+#else
+#define yyfree quickstep_yyfree
+#endif
 
 /* First, we deal with  platform-specific or compiler-specific issues. */
 
@@ -162,10 +318,16 @@
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#ifndef SIZE_MAX
+#define SIZE_MAX               (~(size_t)0)
+#endif
+
 #endif /* ! C99 */
 
 #endif /* ! FLEXINT_H */
 
+/* begin standard C++ headers. */
+
 /* TODO: this is always defined, so inline it */
 #define yyconst const
 
@@ -214,7 +376,7 @@
 /* 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_NEW_FILE yyrestart( yyin , yyscanner )
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
@@ -250,7 +412,7 @@
     
     /* 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 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.
@@ -342,7 +504,7 @@
 	 * possible backing-up.
 	 *
 	 * When we actually see the EOF, we change the status to "new"
-	 * (via quickstep_yyrestart()), so that the user can continue scanning by
+	 * (via yyrestart()), so that the user can continue scanning by
 	 * just pointing yyin at a new input file.
 	 */
 #define YY_BUFFER_EOF_PENDING 2
@@ -364,43 +526,43 @@
  */
 #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 );
+void yyrestart ( FILE *input_file , yyscan_t yyscanner );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
+void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+void 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)
+static void yyensure_buffer_stack ( yyscan_t yyscanner );
+static void yy_load_buffer_state ( yyscan_t yyscanner );
+static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
+#define YY_FLUSH_BUFFER 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 ( const char *yy_str , yyscan_t yyscanner );
-YY_BUFFER_STATE quickstep_yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
+YY_BUFFER_STATE 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 *yyalloc ( yy_size_t , yyscan_t yyscanner );
+void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
+void yyfree ( void * , yyscan_t yyscanner );
 
-#define yy_new_buffer quickstep_yy_create_buffer
+#define yy_new_buffer yy_create_buffer
 #define yy_set_interactive(is_interactive) \
 	{ \
 	if ( ! YY_CURRENT_BUFFER ){ \
-        quickstep_yyensure_buffer_stack (yyscanner); \
+        yyensure_buffer_stack (yyscanner); \
 		YY_CURRENT_BUFFER_LVALUE =    \
-            quickstep_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
+            yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
 	} \
 	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
 	}
 #define yy_set_bol(at_bol) \
 	{ \
 	if ( ! YY_CURRENT_BUFFER ){\
-        quickstep_yyensure_buffer_stack (yyscanner); \
+        yyensure_buffer_stack (yyscanner); \
 		YY_CURRENT_BUFFER_LVALUE =    \
-            quickstep_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
+            yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
 	} \
 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
 	}
@@ -430,8 +592,8 @@
 	yyg->yy_hold_char = *yy_cp; \
 	*yy_cp = '\0'; \
 	yyg->yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 163
-#define YY_END_OF_BUFFER 164
+#define YY_NUM_RULES 164
+#define YY_END_OF_BUFFER 165
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -439,74 +601,72 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[599] =
+static const flex_int16_t yy_accept[589] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  164,    2,    2,  162,  162,  161,  160,  162,
-      139,  135,  138,  135,  135,  158,  131,  128,  132,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  136,    4,    5,    5,    3,  154,
-      154,  151,  155,  155,  149,  156,  156,  153,    1,  161,
-      129,  159,  158,  158,  158,    0,  133,  130,  134,  157,
-      157,  157,  157,   10,  157,  157,  157,   22,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  137,
+        0,    0,  165,    2,    2,  163,  163,  162,  161,  163,
+      140,  136,  139,  136,  136,  159,  132,  129,  133,  158,
+      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  137,    4,    5,    5,    3,  155,
+      155,  152,  156,  156,  150,  157,  157,  154,    1,  162,
+      130,  160,  159,  159,  159,    0,  134,  131,  135,  158,
+      158,  158,  158,   10,  158,  158,  158,   22,  158,  158,
+      158,  158,  158,  158,  158,  158,  158,  158,  158,  138,
 
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,   60,   69,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,   83,   84,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,    4,    5,    3,  154,  150,  155,  148,
-      148,  140,  142,  143,  144,  145,  146,  147,  148,  156,
-      152,  159,  158,    0,  158,    6,    7,  157,    9,   11,
-      157,  157,   15,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,   33,  157,  157,  157,  157,  157,
+      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+      158,  158,   58,   67,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  158,   81,   82,  158,  158,  158,
+      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  113,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,    4,    5,    3,  155,  151,  156,
+      149,  149,  141,  143,  144,  145,  146,  147,  148,  149,
+      157,  153,  160,  159,    0,  159,    6,    7,  158,    9,
+       11,  158,  158,   15,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  158,   33,  158,  158,  158,  158,
 
-      157,  157,  157,   44,  157,  157,  157,  157,  157,  157,
-      157,   52,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,   64,  157,   71,  157,  157,  157,  157,  157,  157,
-      157,   79,  157,   82,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  100,  157,  157,
-      105,  106,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  140,  142,
-      141,  157,  157,  157,  157,  157,  157,  157,   20,   23,
-      157,  157,  157,   28,  157,  157,  157,   31,  157,  157,
-      157,  157,   38,  157,  157,   42,   43,  157,  157,  157,
+      158,  158,  158,  158,   43,  158,  158,  158,  158,  158,
+      158,   50,  158,  158,  158,  158,  158,  158,  158,  158,
+      158,   62,  158,   69,  158,  158,  158,  158,  158,  158,
+      158,   77,  158,   80,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  158,  158,  158,   98,  158,  158,
+      103,  104,  158,  158,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  158,  158,  158,  158,  158,  141,
+      143,  142,  158,  158,  158,  158,  158,  158,  158,   20,
+       23,  158,  158,  158,   28,  158,  158,  158,   31,  158,
+      158,  158,   37,  158,  158,   41,   42,  158,  158,  158,
 
-      157,  157,  157,  157,  157,   54,   55,  157,   57,  157,
-       59,  157,  157,  157,  157,   68,   70,   72,   73,   74,
-      157,   76,  157,  157,   80,  157,  157,   87,  157,  157,
-      157,  157,  157,   94,  157,   96,  157,  157,  157,  102,
-      157,  157,  157,  157,  157,  157,  110,  111,  113,  157,
-      157,  157,  157,  157,  157,  157,  157,  122,  157,  157,
-      125,  126,  140,  141,    8,  157,  157,  157,  157,  157,
-      157,  157,   25,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,   48,
-       49,   50,  157,  157,   56,  157,   61,   62,  157,  157,
+      158,  158,  158,  158,   52,   53,  158,   55,  158,   57,
+      158,  158,  158,  158,   66,   68,   70,   71,   72,  158,
+       74,  158,  158,   78,  158,  158,   85,  158,  158,  158,
+      158,  158,   92,  158,   94,  158,  158,  158,  100,  158,
+      158,  158,  158,  158,  158,  158,  158,  110,  111,  114,
+      158,  158,  158,  158,  158,  158,  158,  158,  123,  158,
+      158,  126,  127,  141,  142,    8,  158,  158,  158,  158,
+      158,  158,  158,   25,  158,  158,  158,  158,  158,  158,
+      158,  158,  158,  158,  158,  158,  158,  158,   46,   47,
+       48,  158,  158,   54,  158,   59,   60,  158,  158,  158,
 
-      157,   75,  157,   78,   81,   85,   86,  157,  157,  157,
-      157,  157,   95,  157,  157,   99,  157,  157,  157,  157,
-      157,  109,  157,  157,  157,  116,  157,  157,  119,  157,
-      157,  123,  157,  157,  157,  157,   14,  157,  157,  157,
-      157,  157,   26,  157,   29,  157,  157,  157,  157,  157,
-       36,  157,  157,  157,   41,  157,   46,  157,  157,  157,
-       58,   63,  157,  157,  157,   77,  157,  157,  157,  157,
-      157,  157,   98,  157,  103,  104,  157,  157,  157,  157,
-      157,  117,  118,  120,  157,  124,  157,  157,   13,  157,
-      157,  157,  157,  157,  157,   21,   30,  157,   34,   35,
+       73,  158,   76,   79,   83,   84,  158,  158,  158,  158,
+      158,   93,  158,  158,   97,  158,  158,  158,  158,  158,
+      158,  158,  109,  158,  158,  158,  117,  158,  158,  120,
+      158,  158,  124,  158,  158,  158,  158,   14,  158,  158,
+      158,  158,  158,   26,  158,   29,  158,  158,  158,  158,
+      158,   36,  158,  158,   40,   44,  158,  158,  158,   56,
+       61,  158,  158,  158,   75,  158,  158,  158,  158,  158,
+      158,   96,  158,  101,  102,  158,  106,  107,  158,  158,
+      158,  158,  118,  119,  121,  158,  125,  158,  158,   13,
+      158,  158,  158,  158,  158,  158,   21,   30,  158,   34,
 
-      157,  157,  157,  157,   47,  157,   53,   65,  157,  157,
-      157,   90,  157,   92,  157,  157,  157,  157,  157,  157,
-      157,  157,  121,  157,  157,  157,  157,  157,  157,  157,
-      157,   32,  157,  157,   40,  157,  157,  157,   67,  157,
-      157,   93,  157,  157,  107,  157,  157,  157,  157,  157,
-       12,  157,  157,  157,  157,   24,  157,   37,  157,  157,
-       51,   66,   88,   91,  157,  157,  108,  112,  157,  115,
-      127,   16,  157,  157,  157,   27,   39,  157,   89,   97,
-      157,  157,  157,   18,   19,  157,  157,  114,  157,  157,
-      157,  157,  157,  101,  157,   45,   17,    0
-
+       35,  158,  158,   45,  158,   51,   63,  158,  158,  158,
+       88,  158,   90,  158,  158,  158,  158,  158,  158,  158,
+      158,  122,  158,  158,  158,  158,  158,  158,  158,  158,
+       32,  158,   39,  158,  158,   65,  158,  158,   91,  158,
+      158,  105,  158,  158,  158,  158,  158,   12,  158,  158,
+      158,  158,   24,  158,  158,   49,   64,   86,   89,  158,
+      158,  108,  112,  158,  116,  128,   16,  158,  158,  158,
+       27,   38,   87,   95,  158,  158,  158,   18,   19,  158,
+      115,  158,  158,  158,   99,  158,   17,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -553,157 +713,155 @@
         8
     } ;
 
-static const flex_int16_t yy_base[614] =
+static const flex_int16_t yy_base[604] =
     {   0,
         0,    1,   46,    0,  117,  162,    2,    3,  127,  128,
-        6,   10,  159, 1324, 1324,    0, 1324,   13, 1324,  138,
-     1324, 1324, 1324,  142,    6,  129,    4, 1324,  134,  124,
+        6,   10,  147, 1316, 1316,    0, 1316,   13, 1316,  130,
+     1316, 1316, 1316,  129,    6,  129,    4, 1316,   28,  124,
       159,  213,  165,  167,  263,   92,  158,  163,   96,  107,
-      218,  160,  186,  223,  221,  155,  281,  264,  279,  275,
-      186,  209,    0,  191, 1324,  147,    4,   19,    0,    0,
-        0,  140,    0,    0,  343,    0,    0,  141,    0,   22,
-     1324,    0,  307,  326,  338,   18, 1324, 1324, 1324,    0,
-      220,  315,  234,  239,  234,  288,  261,    0,  280,  335,
-      330,  342,  346,  332,  333,  382,  332,  331,  339, 1324,
+      214,  160,  186,  219,  221,  155,  281,  274,  325,  257,
+      186,  209,    0,  219, 1316,   27,    4,   19,    0,    0,
+        0,   17,    0,    0,  389,    0,    0,    8,    0,   22,
+     1316,    0,  293,  325,  343,   18, 1316, 1316, 1316,    0,
+      223,  265,  234,  242,  260,  292,  288,    0,  299,  330,
+      337,  324,  334,  324,  325,  380,  325,  331,  346, 1316,
 
-      336,  358,  363,  380,  356,  352,  378,  386,  387,  391,
-      390,  387,  386,  406,    0,  399,  386,  393,  407,  408,
-      401,  402,  410,  408,  431,  440,    0,  443,  431,  447,
-      438,  440,  454,  451,  447,  461,  457,  442,  466,  465,
-      468,  469,  468,  461,  456,  463,  502,  479,  475,  498,
-      496,  500,  504,  144,   29,    0,    0, 1324,    0, 1324,
-     1324,   22,   24, 1324, 1324, 1324, 1324, 1324,    0,    0,
-     1324,    0,  522,   26,   28,    0,    0,  504,    0,  514,
-      498,  513,  500,  521,  520,  508,  525,  508,  512,  507,
-      534,  517,  523,  537,    0,  535,  545,  554,  544,  542,
+      348,  364,  378,  376,  371,  378,  382,  386,  390,  389,
+      386,  385,  435,    0,  402,  389,  400,  435,  433,  431,
+      433,  436,  431,  440,  447,    0,  452,  437,  453,  441,
+      442,  456,  453,  449,  465,  457,  444,  494,  468,  495,
+      500,  501,  499,  492,    0,  486,  492,  507,  506,  502,
+      500,  508,  501,  516,    0,   29,    0,    0, 1316,    0,
+     1316, 1316,   22,   24, 1316, 1316, 1316, 1316, 1316,    0,
+        0, 1316,    0,  524,   26,   28,    0,    0,  517,    0,
+      518,  501,  516,  504,  545,  525,  531,  552,  536,  542,
+      537,  562,  544,  547,  561,    0,  558,  567,  564,  567,
 
-      565,  552,  564,    0,  571,  555,  559,  559,  560,  579,
-      569,  577,  570,  572,  564,  578,  578,  571,  585,  588,
-      589,  590,  585,    0,  580,  582,  599,  608,  613,  600,
-      605,    0,  614,    0,  622,  625,  614,  615,  633,  634,
-      625,  619,  634,  630,  638,  639,  637,  628,  633,  646,
-        0,  640,  634,  646,  646,  657,  658,  663,  663,  668,
-      678,  670,  665,  685,  676,  689,  687,  678,   30,  125,
-        0,  679,  684,  694,  686,  696,  691,  690,    0,  704,
-      695,  696,  690,    0,  691,  698,  713,  700,  708,  712,
-      716,  724,  736,  733,  731,    0,    0,  728,  726,  747,
+      551,  570,  557,  569,    0,  556,  558,  560,  561,  580,
+      570,  578,  572,  575,  567,  598,  598,  595,  610,  613,
+      614,  615,  607,    0,  602,  603,  619,  616,  619,  606,
+      608,    0,  617,    0,  626,  627,  615,  614,  634,  635,
+      626,  620,  636,  633,  641,  659,  657,  652,  658,  671,
+        0,  665,  673,  660,  668,  668,  678,  679,  673,  671,
+      672,  689,  677,  671,  692,  683,  692,  690,  681,   30,
+      125,    0,  685,  690,  705,  708,  718,  718,  718,    0,
+      733,  724,  723,  717,    0,  718,  722,  736,  722,  730,
+      723,  725,  741,  738,  736,    0,    0,  729,  749,  748,
 
-      746,  732,  733,  739,  746,    0,    0,  740,    0,  743,
-        0,  734,  741,  742,  756,    0,    0,    0,    0,    0,
-      741,    0,  744,  759,  749,  751,  758,    0,  769,  774,
-      786,  793,  777,    0,  794,    0,  782,  777,  782,    0,
-      800,  792,  806,  798,  791,  807,    0,  794,    0,  809,
-      794,  802,  796,  798,  812,  816,  814,    0,  820,  811,
-        0,  814,  131, 1324,    0,  828,  829,  816,  836,  833,
-      847,  854,    0,  844,  841,  855,  857,  850,  858,  867,
-      857,  865,  862,  858,  859,  869,  870,  857,  874,    0,
-        0,    0,  856,  873,    0,  876,    0,    0,  864,  880,
+      734,  735,  741,  748,    0,    0,  743,    0,  747,    0,
+      738,  750,  762,  774,    0,    0,    0,    0,    0,  767,
+        0,  769,  785,  775,  777,  778,    0,  789,  794,  795,
+      800,  784,    0,  798,    0,  786,  781,  786,    0,  803,
+      794,  808,  800,  795,  793,  795,  812,    0,  800,    0,
+      815,  805,  824,  818,  825,  840,  845,  843,    0,  847,
+      838,    0,  841,  131, 1316,    0,  852,  852,  838,  858,
+      844,  855,  859,    0,  850,  847,  861,  864,  856,  862,
+      871,  861,  870,  863,  864,  879,  877,  894,    0,    0,
+        0,  880,  898,    0,  901,    0,    0,  889,  905,  892,
 
-      873,    0,  885,    0,    0,    0,    0,  874,  893,  906,
-      893,  906,    0,  911,  901,    0,  913,  916,  902,  916,
-      908,    0,  907,  909,  915,    0,  925,  926,    0,  913,
-      932,    0,  911,  920,  928,  924,    0,  919,  924,  942,
-      939,  930,    0,  951,    0,  948,  945,  955,  957,  953,
-        0,  954,  971,  973,    0,   93,    0,  958,  971,  969,
-        0,    0,  966,  980,  985,    0,  978,  968,  980,  965,
-      971,  978,    0,  981,    0,    0,  981,  987,  998,  999,
-      997,    0,    0,    0,  988,    0,  994,  996,    0, 1002,
-     1008, 1013, 1015, 1026, 1023,    0,    0, 1028,    0,    0,
+        0,  907,    0,    0,    0,    0,  895,  902,  913,  900,
+      910,    0,  915,  905,    0,  917,  919,  904,  918,  910,
+      909,  912,    0,  911,  914,  921,    0,  931,  937,    0,
+      935,  954,    0,  938,  948,  957,  953,    0,  946,  951,
+      969,  963,  953,    0,  973,    0,  970,  956,  964,  966,
+      959,    0,  976,  978,    0,    0,  962,  976,  972,    0,
+        0,  969,  983,  988,    0,  982,  973,  985,  975,  992,
+      999,    0, 1007,    0,    0, 1007,    0,    0, 1015, 1024,
+     1025, 1023,    0,    0,    0, 1010,    0, 1016, 1017,    0,
+     1023, 1018, 1021, 1023, 1031, 1028,    0,    0, 1033,    0,
 
-     1029, 1027, 1018, 1022,    0, 1028,    0,    0, 1040, 1032,
-     1030,    0, 1032,    0, 1022, 1045, 1040, 1030, 1037, 1040,
-     1041, 1052,    0, 1038, 1052, 1050, 1050, 1052, 1049, 1063,
-     1070,    0, 1067, 1075,    0, 1070, 1084, 1072,    0, 1080,
-     1089,    0, 1094, 1087,    0, 1094, 1086, 1087, 1100, 1097,
-        0, 1099, 1102, 1096, 1104,    0, 1091,    0, 1105, 1097,
-        0,    0, 1097,    0, 1098, 1113,    0,    0, 1112,    0,
-        0,    0, 1108, 1122, 1121,    0,    0, 1133,    0,    0,
-     1123, 1142, 1128,    0,    0, 1135, 1145,    0, 1143, 1147,
-     1139, 1153, 1140,    0, 1141,    0,    0, 1324, 1206, 1216,
+        0, 1030, 1020,    0, 1029,    0,    0, 1041, 1033, 1031,
+        0, 1033,    0, 1024, 1048, 1043, 1038, 1056, 1058, 1064,
+     1074,    0, 1062, 1076, 1070, 1069, 1070, 1068, 1071, 1076,
+        0, 1077,    0, 1085, 1073,    0, 1080, 1088,    0, 1091,
+     1084,    0, 1091, 1085, 1086, 1099, 1096,    0, 1098, 1102,
+     1097, 1105,    0, 1096, 1121,    0,    0, 1110,    0, 1116,
+     1128,    0,    0, 1128,    0,    0,    0, 1123, 1137, 1125,
+        0,    0,    0,    0, 1124, 1141, 1127,    0,    0, 1143,
+        0, 1140, 1132, 1146,    0, 1133,    0, 1316, 1198, 1208,
+     1218, 1228, 1238, 1242, 1245, 1251, 1261, 1271, 1281, 1291,
 
-     1226, 1236, 1246, 1250, 1253, 1259, 1269, 1279, 1289, 1299,
-     1309, 1314, 1316
+     1301, 1306, 1308
     } ;
 
-static const flex_int16_t yy_def[614] =
+static const flex_int16_t yy_def[604] =
     {   0,
-      599,  599,  598,    3,  600,  600,  601,  601,  602,  602,
-      603,  603,  598,  598,  598,  604,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  598,  598,  598,  598,  606,  607,
-      607,  598,  608,  608,  609,  610,  610,  598,  604,  598,
-      598,  611,  598,  598,  598,  598,  598,  598,  598,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  598,
+      589,  589,  588,    3,  590,  590,  591,  591,  592,  592,
+      593,  593,  588,  588,  588,  594,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  588,  588,  588,  588,  596,  597,
+      597,  588,  598,  598,  599,  600,  600,  588,  594,  588,
+      588,  601,  588,  588,  588,  588,  588,  588,  588,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  588,
 
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  598,  598,  606,  607,  598,  608,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  612,  610,
-      598,  611,  598,  598,  598,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  588,  588,  596,  597,  588,  598,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  602,
+      600,  588,  601,  588,  588,  588,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
 
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  598,  598,
-      613,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  588,
+      588,  603,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
 
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  598,  598,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  588,  588,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
 
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
 
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,  605,  605,  605,
-      605,  605,  605,  605,  605,  605,  605,    0,  598,  598,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,    0,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
 
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598
+      588,  588,  588
     } ;
 
-static const flex_int16_t yy_nxt[1396] =
+static const flex_int16_t yy_nxt[1388] =
     {   0,
-      598,  598,   15,   15,   61,   61,  155,  155,   67,   62,
-       62,   68,   67,  598,   70,   68,   70,   73,   73,   77,
-       78,  155,  155,   70,  598,   70,  174,  174,  598,  175,
-      175,  155,  155,  269,  270,  270,  270,  175,  175,  175,
-      175,  363,  270,  598,   16,   16,   17,   18,   19,   18,
+      588,  155,   15,   15,   61,   61,  156,  156,   67,   62,
+       62,   68,   67,  172,   70,   68,   70,   73,   73,   77,
+       78,  156,  156,   70,  159,   70,  175,  175,  155,  176,
+      176,  156,  156,  270,  271,  271,  271,  176,  176,  176,
+      176,  364,  271,   79,   16,   16,   17,   18,   19,   18,
        20,   21,   22,   23,   22,   24,   25,   26,   26,   17,
        27,   28,   29,   30,   31,   32,   33,   34,   35,   36,
        37,   38,   39,   40,   41,   42,   43,   44,   45,   46,
@@ -712,156 +870,154 @@
 
        38,   39,   40,   41,   42,   43,   44,   45,   46,   47,
        48,   49,   50,   51,   52,   53,   54,   17,   56,   57,
-       58,   17,   17,   17,   17,   17,  111,  116,  117,   64,
-       64,   17,   17,   17,   62,   62,  270,  270,  504,   74,
-       75,   75,  270,  270,   81,  154,  171,  158,  154,   79,
-       76,   72,   82,   71,   83,  111,  116,  117,  598,   84,
+       58,   17,   17,   17,   17,   17,  110,  115,  116,   64,
+       64,   17,   17,   17,   62,   62,  271,  271,   72,   74,
+       75,   75,  271,  271,   81,   71,  588,  588,  588,  588,
+       76,  588,   82,  588,   83,  110,  115,  116,  588,   84,
        17,   17,   17,   56,   57,   58,   17,   17,   17,   17,
-       17,   65,   65,   81,  100,  112,   17,   17,   17,   76,
-       85,   82,   95,   83,   86,  122,   96,   87,   84,  113,
-       97,  123,  134,  114,  598,  101,   98,  102,  115,   99,
+       17,   65,   65,   81,  100,  111,   17,   17,   17,   76,
+       85,   82,   95,   83,   86,  121,   96,   87,   84,  112,
+       97,  122,  133,  113,  588,  101,   98,  102,  114,   99,
 
-       88,  598,  103,  150,  112,   17,   17,  104,  598,   85,
-      598,   95,  153,   86,  122,   96,   87,  124,  113,   97,
-      123,  134,  114,  125,  101,   98,  102,  115,   99,   88,
-       89,  103,  150,  151,  152,  118,  104,   90,  131,  119,
-      176,  153,  132,  120,   91,  126,  124,   92,   93,  121,
-       94,  598,  125,  127,  179,  133,  598,  128,  180,   89,
-      129,  130,  151,  152,  118,  598,   90,  131,  119,  176,
-      181,  132,  120,   91,  126,  598,   92,   93,  121,   94,
-      105,  598,  127,  179,  133,  139,  128,  180,  106,  129,
-      130,  107,  184,  140,  108,  598,  142,  109,  135,  181,
+       88,  588,  588,  151,  111,   17,   17,  103,  588,   85,
+      588,   95,  588,   86,  121,   96,   87,  123,  112,   97,
+      122,  133,  113,  124,  101,   98,  102,  114,   99,   88,
+       89,  117,  151,  152,  153,  118,  103,   90,  130,  119,
+      154,  125,  131,  177,   91,  120,  123,   92,   93,  126,
+       94,  588,  124,  127,  180,  132,  128,  129,  588,   89,
+      117,  181,  152,  153,  118,  588,   90,  130,  119,  154,
+      125,  131,  177,   91,  120,  588,   92,   93,  126,   94,
+      104,  588,  127,  180,  132,  128,  129,  148,  105,  149,
+      181,  106,  150,  178,  107,  138,  182,  108,  134,  588,
 
-      110,  141,  136,  143,  144,  147,  137,  148,  598,  105,
-      149,  182,  138,  145,  139,  185,  146,  106,   73,   73,
-      107,  184,  140,  108,  183,  142,  109,  135,   76,  110,
-      141,  136,  143,  144,  147,  137,  148,  173,  173,  149,
-      182,  138,  145,  177,  185,  146,  161,   76,   74,   75,
-       75,  178,  186,  183,  162,  163,  187,   76,  188,   76,
-      189,  164,  190,  191,  192,  165,  193,  200,  201,  194,
-      202,  203,  177,  166,  195,  598,   76,  167,  204,  168,
-      178,  186,  205,  169,  208,  187,  209,  188,   76,  189,
-      164,  190,  191,  192,  165,  193,  200,  201,  194,  202,
+      109,  179,  135,  139,   73,   73,  136,  588,  588,  104,
+      140,  141,  137,  588,   76,  183,  148,  105,  149,  185,
+      106,  150,  178,  107,  138,  182,  108,  134,  184,  109,
+      179,  135,  139,  588,  186,  136,  174,  174,  588,  140,
+      141,  137,  142,   76,  183,  192,   76,  187,  185,  143,
+      144,  188,  193,   74,   75,   75,  145,  184,  194,  146,
+      201,  195,  147,  186,   76,  189,  196,  190,  202,  191,
+      588,  142,  588,  588,  192,   76,  187,  203,  143,  144,
+      188,  193,  588,  204,  205,  145,  588,  194,  146,  201,
+      195,  147,  162,   76,  189,  196,  190,  202,  191,  197,
 
-      203,  196,  166,  195,  197,  206,  167,  204,  168,  210,
-      198,  205,  169,  208,  211,  209,  207,  199,  213,  214,
-      212,  215,  216,  218,  223,  217,  219,  224,  225,  226,
-      196,  229,  230,  197,  206,  227,  220,  228,  210,  198,
-      231,  221,  222,  211,  232,  207,  199,  213,  214,  212,
-      215,  216,  218,  223,  217,  219,  224,  225,  226,  233,
-      229,  230,  234,  235,  227,  220,  228,  236,  237,  231,
-      221,  222,  238,  232,  239,  240,  242,  243,  244,  241,
-      247,  248,  252,  245,  246,  249,  253,  254,  233,  255,
-      256,  234,  235,  257,  250,  258,  236,  237,  598,  261,
+      163,  164,  198,  206,  208,  209,  203,  165,  199,  210,
+      211,  166,  204,  205,  207,  200,  212,  213,  214,  167,
+      215,  216,  218,  168,  217,  169,  588,  223,  197,  170,
+      224,  198,  206,  208,  209,  225,  165,  199,  210,  211,
+      166,  588,  588,  207,  200,  212,  213,  214,  167,  215,
+      216,  218,  168,  217,  169,  219,  223,  226,  170,  224,
+      227,  229,  228,  230,  225,  220,  231,  232,  233,  234,
+      221,  222,  235,  236,  237,  238,  239,  240,  242,  243,
+      247,  241,  244,  248,  219,  252,  226,  245,  246,  227,
+      229,  228,  230,  588,  220,  231,  232,  233,  234,  221,
 
-      262,  238,  251,  239,  240,  242,  243,  244,  241,  247,
-      248,  252,  245,  246,  249,  253,  254,  265,  255,  256,
-      259,  268,  257,  250,  258,  272,  263,  260,  261,  262,
-      266,  251,  264,  173,  173,  273,  267,  274,  275,  276,
-      277,  279,  280,   76,  281,  282,  265,  283,  284,  259,
-      268,  285,  278,  286,  272,  263,  260,  287,  288,  266,
-      289,  264,  290,  293,  273,  267,  274,  275,  276,  277,
-      279,  280,   76,  281,  282,  291,  283,  284,  294,  292,
-      285,  278,  286,  295,  296,  297,  287,  288,  298,  289,
-      299,  290,  293,  300,  301,  302,  303,  304,  305,  306,
+      222,  235,  236,  237,  238,  239,  240,  242,  243,  247,
+      241,  244,  248,  249,  252,  253,  245,  246,  254,  255,
+      256,  257,  250,  258,  259,  260,  262,  263,  264,  266,
+      251,  267,  261,  269,  265,  174,  174,  268,  273,  274,
+      275,  276,  249,  277,  253,   76,  280,  254,  255,  256,
+      257,  250,  258,  259,  260,  262,  263,  264,  266,  251,
+      267,  261,  269,  265,  278,  281,  268,  273,  274,  275,
+      276,  282,  277,  283,   76,  280,  279,  284,  285,  286,
+      287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
+      297,  298,  299,  278,  281,  300,  301,  302,  303,  304,
 
-      307,  308,  309,  310,  291,  311,  312,  294,  292,  313,
-      314,  315,  295,  296,  297,  317,  318,  298,  319,  299,
-      320,  316,  300,  301,  302,  303,  304,  305,  306,  307,
-      308,  309,  310,  321,  311,  312,  322,  323,  313,  314,
-      315,  324,  325,  326,  317,  318,  327,  319,  328,  320,
-      316,  329,  330,  331,  332,  334,  333,  335,  336,  337,
-      338,  339,  321,  340,  342,  322,  323,  343,  344,  345,
-      324,  325,  326,  341,  346,  327,  347,  328,  348,  349,
-      329,  330,  331,  332,  334,  333,  335,  336,  337,  338,
-      339,  350,  340,  342,  351,  354,  343,  344,  345,  352,
+      282,  305,  283,  306,  307,  279,  284,  285,  286,  287,
+      288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
+      298,  299,  308,  309,  300,  301,  302,  303,  304,  310,
+      305,  311,  306,  307,  312,  313,  314,  316,  317,  318,
+      319,  320,  321,  322,  323,  324,  315,  325,  326,  327,
+      328,  308,  309,  329,  330,  331,  333,  332,  310,  334,
+      311,  335,  336,  312,  313,  314,  316,  317,  318,  319,
+      320,  321,  322,  323,  324,  315,  325,  326,  327,  328,
+      337,  338,  329,  330,  331,  333,  332,  339,  334,  341,
+      335,  336,  342,  343,  344,  346,  347,  340,  348,  349,
 
-      355,  353,  356,  346,  357,  347,  358,  348,  349,  360,
-      359,  361,  362,  365,  366,  367,  368,  369,  370,  371,
-      350,  372,  373,  351,  354,  374,  375,  376,  352,  355,
-      353,  356,  377,  357,  378,  358,  379,  380,  360,  359,
-      361,  362,  365,  366,  367,  368,  369,  370,  371,  381,
-      372,  373,  382,  383,  374,  375,  376,  384,  385,  386,
-      387,  377,  388,  378,  389,  379,  380,  390,  391,  392,
-      393,  394,  395,  396,  397,  398,  399,  402,  381,  400,
-      403,  382,  383,  404,  405,  406,  384,  385,  386,  387,
-      401,  388,  407,  389,  408,  409,  390,  391,  392,  393,
+      350,  351,  352,  353,  345,  354,  355,  356,  357,  337,
+      338,  358,  361,  359,  362,  363,  339,  360,  341,  366,
+      367,  342,  343,  344,  346,  347,  368,  348,  349,  350,
+      351,  352,  353,  345,  354,  355,  356,  357,  369,  370,
+      358,  361,  359,  362,  363,  371,  360,  372,  366,  367,
+      373,  374,  375,  376,  377,  368,  378,  379,  380,  381,
+      382,  383,  384,  385,  386,  387,  388,  369,  370,  389,
+      390,  391,  392,  393,  371,  394,  372,  395,  396,  373,
+      374,  375,  376,  377,  397,  378,  379,  380,  381,  382,
+      383,  384,  385,  386,  387,  388,  398,  399,  389,  390,
 
-      394,  395,  396,  397,  398,  399,  402,  410,  400,  403,
-      411,  412,  404,  405,  406,  413,  414,  415,  416,  401,
-      417,  407,  418,  408,  409,  419,  420,  421,  422,  423,
-      424,  425,  426,  427,  428,  429,  410,  430,  431,  411,
-      412,  432,  433,  434,  413,  414,  415,  416,  435,  417,
-      436,  418,  437,  438,  419,  420,  421,  422,  423,  424,
-      425,  426,  427,  428,  429,  439,  430,  431,  440,  441,
-      432,  433,  434,  442,  443,  444,  445,  435,  446,  436,
-      447,  437,  438,  448,  449,  450,  451,  452,  453,  454,
-      455,  456,  457,  458,  439,  459,  460,  440,  441,  461,
+      391,  392,  393,  401,  394,  402,  395,  396,  400,  403,
+      404,  405,  406,  397,  407,  408,  409,  410,  411,  412,
+      413,  414,  415,  416,  417,  398,  399,  418,  419,  420,
+      421,  422,  401,  423,  402,  424,  425,  400,  403,  404,
+      405,  406,  426,  407,  408,  409,  410,  411,  412,  413,
+      414,  415,  416,  417,  427,  428,  418,  419,  420,  421,
+      422,  429,  423,  430,  424,  425,  431,  432,  433,  434,
+      435,  426,  436,  437,  438,  439,  440,  442,  443,  441,
+      444,  445,  446,  427,  428,  447,  448,  449,  450,  451,
+      429,  452,  430,  453,  454,  431,  432,  433,  434,  435,
 
-      462,  463,  442,  443,  444,  445,  466,  446,  464,  447,
-      467,  465,  448,  449,  450,  451,  452,  453,  454,  455,
-      456,  457,  458,  468,  459,  460,  469,  470,  461,  462,
-      463,  471,  472,  473,  474,  466,  475,  464,  476,  467,
-      465,  477,  478,  479,  480,  481,  482,  483,  484,  485,
-      486,  487,  468,  488,  489,  469,  470,  490,  491,  492,
-      471,  472,  473,  474,  493,  475,  494,  476,  495,  496,
-      477,  478,  479,  480,  481,  482,  483,  484,  485,  486,
-      487,  497,  488,  489,  498,  499,  490,  491,  492,  500,
-      501,  502,  503,  493,  505,  494,  506,  495,  496,  507,
+      455,  436,  437,  438,  439,  440,  442,  443,  441,  444,
+      445,  446,  456,  457,  447,  448,  449,  450,  451,  458,
+      452,  459,  453,  454,  460,  461,  462,  463,  465,  455,
+      464,  466,  467,  468,  469,  470,  471,  472,  473,  474,
+      475,  456,  457,  476,  477,  478,  479,  480,  458,  481,
+      459,  482,  483,  460,  461,  462,  463,  465,  484,  464,
+      466,  467,  468,  469,  470,  471,  472,  473,  474,  475,
+      485,  486,  476,  477,  478,  479,  480,  487,  481,  488,
+      482,  483,  489,  490,  491,  492,  493,  484,  494,  495,
+      496,  497,  498,  499,  500,  501,  502,  503,  504,  485,
 
-      508,  509,  510,  511,  512,  513,  514,  515,  516,  517,
-      497,  518,  519,  498,  499,  520,  521,  522,  500,  501,
-      502,  503,  523,  505,  524,  506,  525,  526,  507,  508,
-      509,  510,  511,  512,  513,  514,  515,  516,  517,  527,
-      518,  519,  528,  529,  520,  521,  522,  530,  531,  532,
-      533,  523,  534,  524,  535,  525,  526,  536,  537,  538,
-      539,  540,  541,  542,  543,  544,  545,  546,  527,  547,
-      548,  528,  529,  549,  550,  551,  530,  531,  532,  533,
-      552,  534,  553,  535,  554,  555,  536,  537,  538,  539,
-      540,  541,  542,  543,  544,  545,  546,  556,  547,  548,
+      486,  505,  506,  507,  508,  509,  487,  510,  488,  511,
+      512,  489,  490,  491,  492,  493,  513,  494,  495,  496,
+      497,  498,  499,  500,  501,  502,  503,  504,  514,  515,
+      505,  506,  507,  508,  509,  516,  510,  517,  511,  512,
+      518,  519,  520,  521,  522,  513,  523,  524,  525,  526,
+      527,  528,  529,  530,  531,  532,  533,  514,  515,  534,
+      535,  536,  537,  538,  516,  539,  517,  540,  541,  518,
+      519,  520,  521,  522,  542,  523,  524,  525,  526,  527,
+      528,  529,  530,  531,  532,  533,  543,  544,  534,  535,
+      536,  537,  538,  545,  539,  546,  540,  541,  547,  548,
 
-      557,  558,  549,  550,  551,  559,  560,  561,  562,  552,
-      563,  553,  564,  554,  555,  565,  566,  567,  568,  569,
-      570,  571,  572,  573,  574,  575,  556,  576,  577,  557,
-      558,  578,  579,  580,  559,  560,  561,  562,  581,  563,
-      582,  564,  583,  584,  565,  566,  567,  568,  569,  570,
-      571,  572,  573,  574,  575,  585,  576,  577,  586,  587,
-      578,  579,  580,  588,  589,  590,  591,  581,  592,  582,
-      593,  583,  584,  594,  595,  596,  597,  598,  598,  598,
-      598,  598,  598,  598,  585,  598,  598,  586,  587,  598,
-      598,  598,  588,  589,  590,  591,  598,  592,  598,  593,
+      549,  550,  551,  542,  552,  553,  554,  555,  556,  557,
+      558,  559,  560,  561,  562,  543,  544,  563,  564,  565,
+      566,  567,  545,  568,  546,  569,  570,  547,  548,  549,
+      550,  551,  571,  552,  553,  554,  555,  556,  557,  558,
+      559,  560,  561,  562,  572,  573,  563,  564,  565,  566,
+      567,  574,  568,  575,  569,  570,  576,  577,  578,  579,
+      580,  571,  581,  582,  583,  584,  585,  586,  587,  588,
+      588,  588,  588,  572,  573,  588,  588,  588,  588,  588,
+      574,  588,  575,  588,  588,  576,  577,  578,  579,  580,
+      588,  581,  582,  583,  584,  585,  586,  587,   14,   14,
 
-      598,  598,  594,  595,  596,  597,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   69,   69,   80,   80,
-       80,  598,   80,  156,  156,  156,  156,  598,  156,  157,
-      157,  157,  598,  157,  157,  157,  157,  157,  157,  159,
-      159,  159,  598,  159,  159,  159,  159,  598,  159,  160,
-      160,  160,  160,  160,  160,  160,  160,  160,  160,  170,
+       14,   14,   14,   14,   14,   14,   14,   14,   59,   59,
+       59,   59,   59,   59,   59,   59,   59,   59,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   66,   66,
+       66,   66,   66,   66,   66,   66,   66,   66,   69,   69,
+       80,   80,   80,  588,   80,  157,  157,  157,  157,  588,
+      157,  158,  158,  158,  588,  158,  158,  158,  158,  158,
+      158,  160,  160,  160,  588,  160,  160,  160,  160,  588,
+      160,  161,  161,  161,  161,  161,  161,  161,  161,  161,
+      161,  171,  171,  588,  171,  171,  171,  171,  171,  171,
 
-      170,  598,  170,  170,  170,  170,  170,  170,  170,  172,
-      598,  172,  172,  172,  172,  172,  172,  172,  172,  271,
-      271,  364,  364,   13,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598
-
+      171,  173,  588,  173,  173,  173,  173,  173,  173,  173,
+      173,  272,  272,  365,  365,   13,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588
     } ;
 
-static const flex_int16_t yy_chk[1396] =
+static const flex_int16_t yy_chk[1388] =
     {   0,
-        0,    0,    1,    2,    7,    8,   57,   57,   11,    7,
-        8,   11,   12,    0,   18,   12,   18,   25,   25,   27,
-       27,   58,   58,   70,    0,   70,   76,   76,    0,   76,
-       76,  155,  155,  162,  162,  163,  163,  174,  174,  175,
-      175,  269,  269,    0,    1,    2,    3,    3,    3,    3,
+        0,  155,    1,    2,    7,    8,   57,   57,   11,    7,
+        8,   11,   12,   68,   18,   12,   18,   25,   25,   27,
+       27,   58,   58,   70,   62,   70,   76,   76,   56,   76,
+       76,  156,  156,  163,  163,  164,  164,  175,  175,  176,
+      176,  270,  270,   29,    1,    2,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
@@ -871,150 +1027,148 @@
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    5,    5,    5,
         5,    5,    5,    5,    5,    5,   36,   39,   40,    9,
-       10,    5,    5,    5,    9,   10,  270,  270,  456,   26,
-       26,   26,  363,  363,   30,  154,   68,   62,   56,   29,
-       26,   24,   30,   20,   30,   36,   39,   40,   13,   30,
+       10,    5,    5,    5,    9,   10,  271,  271,   24,   26,
+       26,   26,  364,  364,   30,   20,   13,    0,    0,    0,
+       26,    0,   30,    0,   30,   36,   39,   40,    0,   30,
         5,    5,    6,    6,    6,    6,    6,    6,    6,    6,
         6,    9,   10,   30,   34,   37,    6,    6,    6,   26,
        31,   30,   33,   30,   31,   42,   33,   31,   30,   37,
        33,   42,   46,   38,    0,   34,   33,   34,   38,   33,
 
-       31,    0,   34,   51,   37,    6,    6,   34,    0,   31,
-        0,   33,   54,   31,   42,   33,   31,   43,   37,   33,
+       31,    0,    0,   51,   37,    6,    6,   34,    0,   31,
+        0,   33,    0,   31,   42,   33,   31,   43,   37,   33,
        42,   46,   38,   43,   34,   33,   34,   38,   33,   31,
-       32,   34,   51,   52,   52,   41,   34,   32,   45,   41,
-       81,   54,   45,   41,   32,   44,   43,   32,   32,   41,
-       32,    0,   43,   44,   83,   45,    0,   44,   84,   32,
-       44,   44,   52,   52,   41,    0,   32,   45,   41,   81,
-       85,   45,   41,   32,   44,    0,   32,   32,   41,   32,
-       35,    0,   44,   83,   45,   48,   44,   84,   35,   44,
-       44,   35,   87,   48,   35,    0,   49,   35,   47,   85,
+       32,   41,   51,   52,   52,   41,   34,   32,   45,   41,
+       54,   44,   45,   81,   32,   41,   43,   32,   32,   44,
+       32,    0,   43,   44,   83,   45,   44,   44,    0,   32,
+       41,   84,   52,   52,   41,    0,   32,   45,   41,   54,
+       44,   45,   81,   32,   41,    0,   32,   32,   44,   32,
+       35,    0,   44,   83,   45,   44,   44,   50,   35,   50,
+       84,   35,   50,   82,   35,   48,   85,   35,   47,    0,
 
-       35,   48,   47,   49,   49,   50,   47,   50,    0,   35,
-       50,   86,   47,   49,   48,   89,   49,   35,   73,   73,
-       35,   87,   48,   35,   86,   49,   35,   47,   73,   35,
-       48,   47,   49,   49,   50,   47,   50,   74,   74,   50,
-       86,   47,   49,   82,   89,   49,   65,   74,   75,   75,
-       75,   82,   90,   86,   65,   65,   90,   73,   91,   75,
-       91,   65,   91,   92,   93,   65,   94,   97,   98,   95,
-       99,  101,   82,   65,   95,    0,   74,   65,  102,   65,
-       82,   90,  103,   65,  105,   90,  106,   91,   75,   91,
-       65,   91,   92,   93,   65,   94,   97,   98,   95,   99,
+       35,   82,   47,   48,   73,   73,   47,    0,    0,   35,
+       48,   48,   47,    0,   73,   86,   50,   35,   50,   87,
+       35,   50,   82,   35,   48,   85,   35,   47,   86,   35,
+       82,   47,   48,    0,   89,   47,   74,   74,    0,   48,
+       48,   47,   49,   73,   86,   92,   74,   90,   87,   49,
+       49,   90,   93,   75,   75,   75,   49,   86,   94,   49,
+       97,   95,   49,   89,   75,   91,   95,   91,   98,   91,
+        0,   49,    0,    0,   92,   74,   90,   99,   49,   49,
+       90,   93,    0,  101,  102,   49,    0,   94,   49,   97,
+       95,   49,   65,   75,   91,   95,   91,   98,   91,   96,
 
-      101,   96,   65,   95,   96,  104,   65,  102,   65,  107,
-       96,  103,   65,  105,  108,  106,  104,   96,  109,  110,
-      108,  111,  112,  113,  116,  112,  114,  117,  118,  119,
-       96,  121,  122,   96,  104,  120,  114,  120,  107,   96,
-      123,  114,  114,  108,  124,  104,   96,  109,  110,  108,
-      111,  112,  113,  116,  112,  114,  117,  118,  119,  125,
-      121,  122,  126,  128,  120,  114,  120,  129,  130,  123,
-      114,  114,  131,  124,  132,  133,  134,  135,  136,  133,
-      137,  138,  140,  136,  136,  139,  141,  142,  125,  143,
-      144,  126,  128,  145,  139,  146,  129,  130,    0,  148,
+       65,   65,   96,  103,  104,  105,   99,   65,   96,  106,
+      107,   65,  101,  102,  103,   96,  107,  108,  109,   65,
+      110,  111,  112,   65,  111,   65,    0,  115,   96,   65,
+      116,   96,  103,  104,  105,  117,   65,   96,  106,  107,
+       65,    0,    0,  103,   96,  107,  108,  109,   65,  110,
+      111,  112,   65,  111,   65,  113,  115,  118,   65,  116,
+      119,  120,  119,  121,  117,  113,  122,  123,  124,  125,
+      113,  113,  127,  128,  129,  130,  131,  132,  133,  134,
+      136,  132,  135,  137,  113,  139,  118,  135,  135,  119,
+      120,  119,  121,    0,  113,  122,  123,  124,  125,  113,
 
-      149,  131,  139,  132,  133,  134,  135,  136,  133,  137,
-      138,  140,  136,  136,  139,  141,  142,  151,  143,  144,
-      147,  153,  145,  139,  146,  178,  150,  147,  148,  149,
-      152,  139,  150,  173,  173,  180,  152,  181,  182,  183,
-      184,  185,  186,  173,  187,  188,  151,  189,  190,  147,
-      153,  191,  184,  192,  178,  150,  147,  193,  194,  152,
-      196,  150,  197,  199,  180,  152,  181,  182,  183,  184,
-      185,  186,  173,  187,  188,  198,  189,  190,  200,  198,
-      191,  184,  192,  201,  202,  203,  193,  194,  205,  196,
-      206,  197,  199,  207,  208,  209,  210,  211,  212,  213,
+      113,  127,  128,  129,  130,  131,  132,  133,  134,  136,
+      132,  135,  137,  138,  139,  140,  135,  135,  141,  142,
+      143,  144,  138,  146,  147,  148,  149,  150,  151,  152,
+      138,  153,  148,  154,  151,  174,  174,  153,  179,  181,
+      182,  183,  138,  184,  140,  174,  186,  141,  142,  143,
+      144,  138,  146,  147,  148,  149,  150,  151,  152,  138,
+      153,  148,  154,  151,  185,  187,  153,  179,  181,  182,
+      183,  188,  184,  189,  174,  186,  185,  190,  191,  192,
+      193,  194,  195,  197,  198,  199,  200,  201,  202,  203,
+      204,  206,  207,  185,  187,  208,  209,  210,  211,  212,
 
-      214,  215,  216,  217,  198,  218,  219,  200,  198,  220,
-      221,  222,  201,  202,  203,  223,  225,  205,  226,  206,
-      227,  222,  207,  208,  209,  210,  211,  212,  213,  214,
-      215,  216,  217,  228,  218,  219,  229,  230,  220,  221,
-      222,  231,  233,  235,  223,  225,  236,  226,  237,  227,
-      222,  238,  239,  240,  241,  242,  241,  243,  244,  245,
-      246,  247,  228,  248,  249,  229,  230,  250,  252,  253,
-      231,  233,  235,  248,  254,  236,  255,  237,  256,  257,
-      238,  239,  240,  241,  242,  241,  243,  244,  245,  246,
-      247,  258,  248,  249,  259,  261,  250,  252,  253,  260,
+      188,  213,  189,  214,  215,  185,  190,  191,  192,  193,
+      194,  195,  197,  198,  199,  200,  201,  202,  203,  204,
+      206,  207,  216,  217,  208,  209,  210,  211,  212,  218,
+      213,  219,  214,  215,  220,  221,  222,  223,  225,  226,
+      227,  228,  229,  230,  231,  233,  222,  235,  236,  237,
+      238,  216,  217,  239,  240,  241,  242,  241,  218,  243,
+      219,  244,  245,  220,  221,  222,  223,  225,  226,  227,
+      228,  229,  230,  231,  233,  222,  235,  236,  237,  238,
+      246,  247,  239,  240,  241,  242,  241,  248,  243,  249,
+      244,  245,  250,  252,  253,  254,  255,  248,  256,  257,
 
-      262,  260,  263,  254,  264,  255,  265,  256,  257,  266,
-      265,  267,  268,  272,  273,  274,  275,  276,  277,  278,
-      258,  280,  281,  259,  261,  282,  283,  285,  260,  262,
-      260,  263,  286,  264,  287,  265,  288,  289,  266,  265,
-      267,  268,  272,  273,  274,  275,  276,  277,  278,  290,
-      280,  281,  291,  292,  282,  283,  285,  293,  294,  295,
-      298,  286,  299,  287,  300,  288,  289,  301,  302,  303,
-      304,  305,  308,  310,  312,  313,  314,  321,  290,  315,
-      323,  291,  292,  324,  325,  326,  293,  294,  295,  298,
-      315,  299,  327,  300,  329,  330,  301,  302,  303,  304,
+      258,  259,  260,  261,  253,  261,  262,  263,  264,  246,
+      247,  265,  267,  266,  268,  269,  248,  266,  249,  273,
+      274,  250,  252,  253,  254,  255,  275,  256,  257,  258,
+      259,  260,  261,  253,  261,  262,  263,  264,  276,  277,
+      265,  267,  266,  268,  269,  278,  266,  279,  273,  274,
+      281,  282,  283,  284,  286,  275,  287,  288,  289,  290,
+      291,  292,  293,  294,  295,  298,  299,  276,  277,  300,
+      301,  302,  303,  304,  278,  307,  279,  309,  311,  281,
+      282,  283,  284,  286,  312,  287,  288,  289,  290,  291,
+      292,  293,  294,  295,  298,  299,  313,  314,  300,  301,
 
-      305,  308,  310,  312,  313,  314,  321,  331,  315,  323,
-      332,  333,  324,  325,  326,  335,  337,  338,  339,  315,
-      341,  327,  342,  329,  330,  343,  344,  345,  346,  348,
-      350,  351,  352,  353,  354,  355,  331,  356,  357,  332,
-      333,  359,  360,  362,  335,  337,  338,  339,  366,  341,
-      367,  342,  368,  369,  343,  344,  345,  346,  348,  350,
-      351,  352,  353,  354,  355,  370,  356,  357,  370,  371,
-      359,  360,  362,  372,  374,  375,  376,  366,  377,  367,
-      378,  368,  369,  379,  380,  381,  382,  383,  384,  385,
-      386,  387,  388,  389,  370,  393,  394,  370,  371,  396,
+      302,  303,  304,  320,  307,  322,  309,  311,  314,  323,
+      324,  325,  326,  312,  328,  329,  330,  331,  332,  334,
+      336,  337,  338,  340,  341,  313,  314,  342,  343,  344,
+      345,  346,  320,  347,  322,  349,  351,  314,  323,  324,
+      325,  326,  352,  328,  329,  330,  331,  332,  334,  336,
+      337,  338,  340,  341,  353,  354,  342,  343,  344,  345,
+      346,  355,  347,  356,  349,  351,  357,  358,  360,  361,
+      363,  352,  367,  368,  369,  370,  371,  372,  373,  371,
+      375,  376,  377,  353,  354,  378,  379,  380,  381,  382,
+      355,  383,  356,  384,  385,  357,  358,  360,  361,  363,
 
-      399,  400,  372,  374,  375,  376,  403,  377,  401,  378,
-      408,  401,  379,  380,  381,  382,  383,  384,  385,  386,
-      387,  388,  389,  409,  393,  394,  410,  411,  396,  399,
-      400,  412,  414,  415,  417,  403,  418,  401,  419,  408,
-      401,  420,  421,  423,  424,  425,  427,  428,  430,  431,
-      433,  434,  409,  435,  436,  410,  411,  438,  439,  440,
-      412,  414,  415,  417,  441,  418,  442,  419,  444,  446,
-      420,  421,  423,  424,  425,  427,  428,  430,  431,  433,
-      434,  447,  435,  436,  448,  449,  438,  439,  440,  450,
-      452,  453,  454,  441,  458,  442,  459,  444,  446,  460,
+      386,  367,  368,  369,  370,  371,  372,  373,  371,  375,
+      376,  377,  387,  388,  378,  379,  380,  381,  382,  392,
+      383,  393,  384,  385,  395,  398,  399,  400,  402,  386,
+      400,  407,  408,  409,  410,  411,  413,  414,  416,  417,
+      418,  387,  388,  419,  420,  421,  422,  424,  392,  425,
+      393,  426,  428,  395,  398,  399,  400,  402,  429,  400,
+      407,  408,  409,  410,  411,  413,  414,  416,  417,  418,
+      431,  432,  419,  420,  421,  422,  424,  434,  425,  435,
+      426,  428,  436,  437,  439,  440,  441,  429,  442,  443,
+      445,  447,  448,  449,  450,  451,  453,  454,  457,  431,
 
-      463,  464,  465,  467,  468,  469,  470,  471,  472,  474,
-      447,  477,  478,  448,  449,  479,  480,  481,  450,  452,
-      453,  454,  485,  458,  487,  459,  488,  490,  460,  463,
-      464,  465,  467,  468,  469,  470,  471,  472,  474,  491,
-      477,  478,  492,  493,  479,  480,  481,  494,  495,  498,
-      501,  485,  502,  487,  503,  488,  490,  504,  506,  509,
-      510,  511,  513,  515,  516,  517,  518,  519,  491,  520,
-      521,  492,  493,  522,  524,  525,  494,  495,  498,  501,
-      526,  502,  527,  503,  528,  529,  504,  506,  509,  510,
-      511,  513,  515,  516,  517,  518,  519,  530,  520,  521,
+      432,  458,  459,  462,  463,  464,  434,  466,  435,  467,
+      468,  436,  437,  439,  440,  441,  469,  442,  443,  445,
+      447,  448,  449,  450,  451,  453,  454,  457,  470,  471,
+      458,  459,  462,  463,  464,  473,  466,  476,  467,  468,
+      479,  480,  481,  482,  486,  469,  488,  489,  491,  492,
+      493,  494,  495,  496,  499,  502,  503,  470,  471,  505,
+      508,  509,  510,  512,  473,  514,  476,  515,  516,  479,
+      480,  481,  482,  486,  517,  488,  489,  491,  492,  493,
+      494,  495,  496,  499,  502,  503,  518,  519,  505,  508,
+      509,  510,  512,  520,  514,  521,  515,  516,  523,  524,
 
-      531,  533,  522,  524,  525,  534,  536,  537,  538,  526,
-      540,  527,  541,  528,  529,  543,  544,  546,  547,  548,
-      549,  550,  552,  553,  554,  555,  530,  557,  559,  531,
-      533,  560,  563,  565,  534,  536,  537,  538,  566,  540,
-      569,  541,  573,  574,  543,  544,  546,  547,  548,  549,
-      550,  552,  553,  554,  555,  575,  557,  559,  578,  581,
-      560,  563,  565,  582,  583,  586,  587,  566,  589,  569,
-      590,  573,  574,  591,  592,  593,  595,    0,    0,    0,
-        0,    0,    0,    0,  575,    0,    0,  578,  581,    0,
-        0,    0,  582,  583,  586,  587,    0,  589,    0,  590,
+      525,  526,  527,  517,  528,  529,  530,  532,  534,  535,
+      537,  538,  540,  541,  543,  518,  519,  544,  545,  546,
+      547,  549,  520,  550,  521,  551,  552,  523,  524,  525,
+      526,  527,  554,  528,  529,  530,  532,  534,  535,  537,
+      538,  540,  541,  543,  555,  558,  544,  545,  546,  547,
+      549,  560,  550,  561,  551,  552,  564,  568,  569,  570,
+      575,  554,  576,  577,  580,  582,  583,  584,  586,    0,
+        0,    0,    0,  555,  558,    0,    0,    0,    0,    0,
+      560,    0,  561,    0,    0,  564,  568,  569,  570,  575,
+        0,  576,  577,  580,  582,  583,  584,  586,  589,  589,
 
-        0,    0,  591,  592,  593,  595,  599,  599,  599,  599,
-      599,  599,  599,  599,  599,  599,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  601,  601,  601,  601,
-      601,  601,  601,  601,  601,  601,  602,  602,  602,  602,
-      602,  602,  602,  602,  602,  602,  603,  603,  603,  603,
-      603,  603,  603,  603,  603,  603,  604,  604,  605,  605,
-      605,    0,  605,  606,  606,  606,  606,    0,  606,  607,
-      607,  607,    0,  607,  607,  607,  607,  607,  607,  608,
-      608,  608,    0,  608,  608,  608,  608,    0,  608,  609,
-      609,  609,  609,  609,  609,  609,  609,  609,  609,  610,
+      589,  589,  589,  589,  589,  589,  589,  589,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  591,  591,
+      591,  591,  591,  591,  591,  591,  591,  591,  592,  592,
+      592,  592,  592,  592,  592,  592,  592,  592,  593,  593,
+      593,  593,  593,  593,  593,  593,  593,  593,  594,  594,
+      595,  595,  595,    0,  595,  596,  596,  596,  596,    0,
+      596,  597,  597,  597,    0,  597,  597,  597,  597,  597,
+      597,  598,  598,  598,    0,  598,  598,  598,  598,    0,
+      598,  599,  599,  599,  599,  599,  599,  599,  599,  599,
+      599,  600,  600,    0,  600,  600,  600,  600,  600,  600,
 
-      610,    0,  610,  610,  610,  610,  610,  610,  610,  611,
-        0,  611,  611,  611,  611,  611,  611,  611,  611,  612,
-      612,  613,  613,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,  598
-
+      600,  601,    0,  601,  601,  601,  601,  601,  601,  601,
+      601,  602,  602,  603,  603,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  588,  588,  588,  588
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static const flex_int32_t yy_rule_can_match_eol[164] =
+static const flex_int32_t yy_rule_can_match_eol[165] =
     {   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, 
@@ -1023,8 +1177,8 @@
     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, 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, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 
-    1, 0, 0, 0,     };
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 
+    0, 1, 0, 0, 0,     };
 
 /* The intent behind this definition is that it'll catch
  * any uses of REJECT which flex missed.
@@ -1074,13 +1228,13 @@
 class ParseBlockProperties;
 class ParseColumnConstraint;
 class ParseCommand;
-struct ParseCopyFromParams;
 class ParseDataType;
 class ParseExpression;
 struct ParseFrameInfo;
 class ParseFunctionCall;
 class ParseGroupBy;
 class ParseHaving;
+class ParseKeyBoolValue;
 class ParseKeyIntegerValue;
 class ParseKeyStringValue;
 class ParseKeyStringList;
@@ -1104,7 +1258,7 @@
 class ParseSimpleWhenClause;
 class ParseStringKeyLiteralValues;
 class ParseStatement;
-class ParseStatementCopyFrom;
+class ParseStatementCopy;
 class ParseStatementCreateTable;
 class ParseStatementDelete;
 class ParseStatementDropTable;
@@ -1135,14 +1289,14 @@
     yycolumn += yyleng;                                   \
   }
 
-#line 1138 "SqlLexer_gen.cpp"
+#line 1292 "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 1145 "SqlLexer_gen.cpp"
+#line 1299 "SqlLexer_gen.cpp"
 
 #define INITIAL 0
 #define CONDITION_SQL 1
@@ -1209,50 +1363,50 @@
     
     #    define yylloc yyg->yylloc_r
     
-int quickstep_yylex_init (yyscan_t* scanner);
+int yylex_init (yyscan_t* scanner);
 
-int quickstep_yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
+int 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 yylex_destroy ( yyscan_t yyscanner );
 
-int quickstep_yyget_debug ( yyscan_t yyscanner );
+int yyget_debug ( yyscan_t yyscanner );
 
-void quickstep_yyset_debug ( int debug_flag , yyscan_t yyscanner );
+void yyset_debug ( int debug_flag , yyscan_t yyscanner );
 
-YY_EXTRA_TYPE quickstep_yyget_extra ( yyscan_t yyscanner );
+YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
 
-void quickstep_yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
+void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
 
-FILE *quickstep_yyget_in ( yyscan_t yyscanner );
+FILE *yyget_in ( yyscan_t yyscanner );
 
-void quickstep_yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
+void yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
 
-FILE *quickstep_yyget_out ( yyscan_t yyscanner );
+FILE *yyget_out ( yyscan_t yyscanner );
 
-void quickstep_yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
+void yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
 
-			int quickstep_yyget_leng ( yyscan_t yyscanner );
+			int yyget_leng ( yyscan_t yyscanner );
 
-char *quickstep_yyget_text ( yyscan_t yyscanner );
+char *yyget_text ( yyscan_t yyscanner );
 
-int quickstep_yyget_lineno ( yyscan_t yyscanner );
+int yyget_lineno ( yyscan_t yyscanner );
 
-void quickstep_yyset_lineno ( int _line_number , yyscan_t yyscanner );
+void yyset_lineno ( int _line_number , yyscan_t yyscanner );
 
-int quickstep_yyget_column  ( yyscan_t yyscanner );
+int yyget_column  ( yyscan_t yyscanner );
 
-void quickstep_yyset_column ( int _column_no , yyscan_t yyscanner );
+void yyset_column ( int _column_no , yyscan_t yyscanner );
 
-YYSTYPE * quickstep_yyget_lval ( yyscan_t yyscanner );
+YYSTYPE * yyget_lval ( yyscan_t yyscanner );
 
-void quickstep_yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
+void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
 
-       YYLTYPE *quickstep_yyget_lloc ( yyscan_t yyscanner );
+       YYLTYPE *yyget_lloc ( yyscan_t yyscanner );
     
-        void quickstep_yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
+        void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
     
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1260,9 +1414,9 @@
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int quickstep_yywrap ( yyscan_t yyscanner );
+extern "C" int yywrap ( yyscan_t yyscanner );
 #else
-extern int quickstep_yywrap ( yyscan_t yyscanner );
+extern int yywrap ( yyscan_t yyscanner );
 #endif
 #endif
 
@@ -1367,10 +1521,10 @@
 #ifndef YY_DECL
 #define YY_DECL_IS_OURS 1
 
-extern int quickstep_yylex \
+extern int yylex \
                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
 
-#define YY_DECL int quickstep_yylex \
+#define YY_DECL int yylex \
                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
 #endif /* !YY_DECL */
 
@@ -1420,19 +1574,19 @@
 			yyout = stdout;
 
 		if ( ! YY_CURRENT_BUFFER ) {
-			quickstep_yyensure_buffer_stack (yyscanner);
+			yyensure_buffer_stack (yyscanner);
 			YY_CURRENT_BUFFER_LVALUE =
-				quickstep_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+				yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
 		}
 
-		quickstep_yy_load_buffer_state(yyscanner );
+		yy_load_buffer_state( yyscanner );
 		}
 
 	{
 #line 132 "../SqlLexer.lpp"
 
 
-#line 1435 "SqlLexer_gen.cpp"
+#line 1589 "SqlLexer_gen.cpp"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -1459,13 +1613,13 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 599 )
+				if ( yy_current_state >= 589 )
 					yy_c = yy_meta[yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 598 );
+		while ( yy_current_state != 588 );
 		yy_cp = yyg->yy_last_accepting_cpos;
 		yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1709,7 +1863,7 @@
 case 37:
 YY_RULE_SETUP
 #line 203 "../SqlLexer.lpp"
-return TOKEN_DELIMITER;
+return TOKEN_DESC;
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
@@ -1719,347 +1873,347 @@
 case 39:
 YY_RULE_SETUP
 #line 205 "../SqlLexer.lpp"
-return TOKEN_DESC;
+return TOKEN_DISTINCT;
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 206 "../SqlLexer.lpp"
-return TOKEN_DISTINCT;
+return TOKEN_DOUBLE;
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 207 "../SqlLexer.lpp"
-return TOKEN_DOUBLE;
+return TOKEN_DROP;
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 208 "../SqlLexer.lpp"
-return TOKEN_DROP;
+return TOKEN_ELSE;
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 209 "../SqlLexer.lpp"
-return TOKEN_ELSE;
+return TOKEN_END;
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 210 "../SqlLexer.lpp"
-return TOKEN_END;
+return TOKEN_EXISTS;
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 211 "../SqlLexer.lpp"
-return TOKEN_ESCAPE_STRINGS;
+return TOKEN_EXTRACT;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 212 "../SqlLexer.lpp"
-return TOKEN_EXISTS;
+return TOKEN_FALSE;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 213 "../SqlLexer.lpp"
-return TOKEN_EXTRACT;
+return TOKEN_FIRST;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 214 "../SqlLexer.lpp"
-return TOKEN_FALSE;
+return TOKEN_FLOAT;
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 215 "../SqlLexer.lpp"
-return TOKEN_FIRST;
+return TOKEN_FOLLOWING;
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 216 "../SqlLexer.lpp"
-return TOKEN_FLOAT;
+return TOKEN_FOR;
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 217 "../SqlLexer.lpp"
-return TOKEN_FOLLOWING;
+return TOKEN_FOREIGN;
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 218 "../SqlLexer.lpp"
-return TOKEN_FOR;
+return TOKEN_FROM;
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 219 "../SqlLexer.lpp"
-return TOKEN_FOREIGN;
+return TOKEN_FULL;
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 220 "../SqlLexer.lpp"
-return TOKEN_FROM;
+return TOKEN_GROUP;
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 221 "../SqlLexer.lpp"
-return TOKEN_FULL;
+return TOKEN_HASH;
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 222 "../SqlLexer.lpp"
-return TOKEN_GROUP;
+return TOKEN_HAVING;
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 223 "../SqlLexer.lpp"
-return TOKEN_HASH;
+return TOKEN_HOUR;
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 224 "../SqlLexer.lpp"
-return TOKEN_HAVING;
+return TOKEN_IN;
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 225 "../SqlLexer.lpp"
-return TOKEN_HOUR;
+return TOKEN_INDEX;
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 226 "../SqlLexer.lpp"
-return TOKEN_IN;
+return TOKEN_INNER;
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 227 "../SqlLexer.lpp"
-return TOKEN_INDEX;
+return TOKEN_INSERT;
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 228 "../SqlLexer.lpp"
-return TOKEN_INNER;
+return TOKEN_INTEGER;
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 229 "../SqlLexer.lpp"
-return TOKEN_INSERT;
+return TOKEN_INTEGER;
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 230 "../SqlLexer.lpp"
-return TOKEN_INTEGER;
+return TOKEN_INTERSECT;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 231 "../SqlLexer.lpp"
-return TOKEN_INTEGER;
+return TOKEN_INTERVAL;
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 232 "../SqlLexer.lpp"
-return TOKEN_INTERSECT;
+return TOKEN_INTO;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 233 "../SqlLexer.lpp"
-return TOKEN_INTERVAL;
+return TOKEN_IS;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 234 "../SqlLexer.lpp"
-return TOKEN_INTO;
+return TOKEN_JOIN;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 235 "../SqlLexer.lpp"
-return TOKEN_IS;
+return TOKEN_KEY;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 236 "../SqlLexer.lpp"
-return TOKEN_JOIN;
+return TOKEN_LAST;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 237 "../SqlLexer.lpp"
-return TOKEN_KEY;
+return TOKEN_LEFT;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 238 "../SqlLexer.lpp"
-return TOKEN_LAST;
+return TOKEN_LIKE;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 239 "../SqlLexer.lpp"
-return TOKEN_LEFT;
+return TOKEN_LIMIT;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 240 "../SqlLexer.lpp"
-return TOKEN_LIKE;
+return TOKEN_LONG;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 241 "../SqlLexer.lpp"
-return TOKEN_LIMIT;
+return TOKEN_MINUTE;
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 242 "../SqlLexer.lpp"
-return TOKEN_LONG;
+return TOKEN_MONTH;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 243 "../SqlLexer.lpp"
-return TOKEN_MINUTE;
+return TOKEN_NOT;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 244 "../SqlLexer.lpp"
-return TOKEN_MONTH;
+return TOKEN_NULL;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 245 "../SqlLexer.lpp"
-return TOKEN_NOT;
+return TOKEN_NULLS;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 246 "../SqlLexer.lpp"
-return TOKEN_NULL;
+return TOKEN_OFF;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 247 "../SqlLexer.lpp"
-return TOKEN_NULLS;
+return TOKEN_ON;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 248 "../SqlLexer.lpp"
-return TOKEN_OFF;
+return TOKEN_OR;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 249 "../SqlLexer.lpp"
-return TOKEN_ON;
+return TOKEN_ORDER;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 250 "../SqlLexer.lpp"
-return TOKEN_OR;
+return TOKEN_OUTER;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 251 "../SqlLexer.lpp"
-return TOKEN_ORDER;
+return TOKEN_OVER;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 252 "../SqlLexer.lpp"
-return TOKEN_OUTER;
+return TOKEN_PARTITION;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 253 "../SqlLexer.lpp"
-return TOKEN_OVER;
+return TOKEN_PARTITIONS;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 254 "../SqlLexer.lpp"
-return TOKEN_PARTITION;
+return TOKEN_PERCENT;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 255 "../SqlLexer.lpp"
-return TOKEN_PARTITIONS;
+return TOKEN_PRECEDING;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 256 "../SqlLexer.lpp"
-return TOKEN_PERCENT;
+return TOKEN_PRIMARY;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 257 "../SqlLexer.lpp"
-return TOKEN_PRECEDING;
+return TOKEN_PRIORITY;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 258 "../SqlLexer.lpp"
-return TOKEN_PRIMARY;
+return TOKEN_QUIT;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 259 "../SqlLexer.lpp"
-return TOKEN_PRIORITY;
+return TOKEN_RANGE;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 260 "../SqlLexer.lpp"
-return TOKEN_QUIT;
+return TOKEN_REAL;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 261 "../SqlLexer.lpp"
-return TOKEN_RANGE;
+return TOKEN_REFERENCES;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 262 "../SqlLexer.lpp"
-return TOKEN_REAL;
+return TOKEN_REGEXP;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 263 "../SqlLexer.lpp"
-return TOKEN_REFERENCES;
+return TOKEN_RIGHT;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 264 "../SqlLexer.lpp"
-return TOKEN_REGEXP;
+return TOKEN_ROW;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 265 "../SqlLexer.lpp"
-return TOKEN_RIGHT;
+return TOKEN_ROW_DELIMITER;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 266 "../SqlLexer.lpp"
-return TOKEN_ROW;
+return TOKEN_ROWS;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 267 "../SqlLexer.lpp"
-return TOKEN_ROW_DELIMITER;
+return TOKEN_SECOND;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 268 "../SqlLexer.lpp"
-return TOKEN_ROWS;
+return TOKEN_SELECT;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 269 "../SqlLexer.lpp"
-return TOKEN_SECOND;
+return TOKEN_SET;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 270 "../SqlLexer.lpp"
-return TOKEN_SELECT;
+return TOKEN_SMA;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 271 "../SqlLexer.lpp"
-return TOKEN_SET;
+return TOKEN_SMALLINT;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 272 "../SqlLexer.lpp"
-return TOKEN_SMA;
+return TOKEN_STDERR;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 273 "../SqlLexer.lpp"
-return TOKEN_SMALLINT;
+return TOKEN_STDOUT;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
@@ -2089,87 +2243,87 @@
 case 113:
 YY_RULE_SETUP
 #line 279 "../SqlLexer.lpp"
-return TOKEN_TRUE;
+return TOKEN_TO;
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 280 "../SqlLexer.lpp"
-return TOKEN_TUPLESAMPLE;
+return TOKEN_TRUE;
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 281 "../SqlLexer.lpp"
-return TOKEN_UNBOUNDED;
+return TOKEN_TUPLESAMPLE;
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 282 "../SqlLexer.lpp"
-return TOKEN_UNION;
+return TOKEN_UNBOUNDED;
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 283 "../SqlLexer.lpp"
-return TOKEN_UNIQUE;
+return TOKEN_UNION;
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 284 "../SqlLexer.lpp"
-return TOKEN_UPDATE;
+return TOKEN_UNIQUE;
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 285 "../SqlLexer.lpp"
-return TOKEN_USING;
+return TOKEN_UPDATE;
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 286 "../SqlLexer.lpp"
-return TOKEN_VALUES;
+return TOKEN_USING;
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 287 "../SqlLexer.lpp"
-return TOKEN_VARCHAR;
+return TOKEN_VALUES;
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 288 "../SqlLexer.lpp"
-return TOKEN_WHEN;
+return TOKEN_VARCHAR;
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 289 "../SqlLexer.lpp"
-return TOKEN_WHERE;
+return TOKEN_WHEN;
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 290 "../SqlLexer.lpp"
-return TOKEN_WINDOW;
+return TOKEN_WHERE;
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 291 "../SqlLexer.lpp"
-return TOKEN_WITH;
+return TOKEN_WINDOW;
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 292 "../SqlLexer.lpp"
-return TOKEN_YEAR;
+return TOKEN_WITH;
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 293 "../SqlLexer.lpp"
-return TOKEN_YEARMONTH;
+return TOKEN_YEAR;
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 295 "../SqlLexer.lpp"
-return TOKEN_EQ;
+#line 294 "../SqlLexer.lpp"
+return TOKEN_YEARMONTH;
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 296 "../SqlLexer.lpp"
-return TOKEN_NEQ;
+return TOKEN_EQ;
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
@@ -2179,56 +2333,61 @@
 case 131:
 YY_RULE_SETUP
 #line 298 "../SqlLexer.lpp"
-return TOKEN_LT;
+return TOKEN_NEQ;
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 299 "../SqlLexer.lpp"
-return TOKEN_GT;
+return TOKEN_LT;
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 300 "../SqlLexer.lpp"
-return TOKEN_LEQ;
+return TOKEN_GT;
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 301 "../SqlLexer.lpp"
-return TOKEN_GEQ;
+return TOKEN_LEQ;
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 303 "../SqlLexer.lpp"
-return yytext[0];
+#line 302 "../SqlLexer.lpp"
+return TOKEN_GEQ;
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 304 "../SqlLexer.lpp"
 return yytext[0];
 	YY_BREAK
+case 137:
+YY_RULE_SETUP
+#line 305 "../SqlLexer.lpp"
+return yytext[0];
+	YY_BREAK
 /**
     * Quoted strings. Prefacing a string with an 'e' or 'E' causes escape
     * sequences to be processed (as in PostgreSQL).
     **/
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 310 "../SqlLexer.lpp"
+#line 311 "../SqlLexer.lpp"
 {
     yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column);
     BEGIN(CONDITION_STRING_SINGLE_QUOTED_ESCAPED);
   }
 	YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 315 "../SqlLexer.lpp"
+#line 316 "../SqlLexer.lpp"
 {
     yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column);
     BEGIN(CONDITION_STRING_SINGLE_QUOTED);
   }
 	YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 320 "../SqlLexer.lpp"
+#line 321 "../SqlLexer.lpp"
 {
     yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column);
     BEGIN(CONDITION_STRING_DOUBLE_QUOTED);
@@ -2240,7 +2399,7 @@
 case YY_STATE_EOF(CONDITION_STRING_SINGLE_QUOTED):
 case YY_STATE_EOF(CONDITION_STRING_SINGLE_QUOTED_ESCAPED):
 case YY_STATE_EOF(CONDITION_STRING_DOUBLE_QUOTED):
-#line 329 "../SqlLexer.lpp"
+#line 330 "../SqlLexer.lpp"
 {
     delete yylval->string_value_;
     BEGIN(INITIAL);
@@ -2251,9 +2410,9 @@
 
 /* Process escape sequences. */
 
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 339 "../SqlLexer.lpp"
+#line 340 "../SqlLexer.lpp"
 {
     /* Octal code */
     unsigned int code;
@@ -2267,9 +2426,9 @@
     yylval->string_value_->push_back(code);
   }
 	YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 351 "../SqlLexer.lpp"
+#line 352 "../SqlLexer.lpp"
 {
     /* Hexadecimal code */
     unsigned int code;
@@ -2277,9 +2436,9 @@
     yylval->string_value_->push_back(code);
   }
 	YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 357 "../SqlLexer.lpp"
+#line 358 "../SqlLexer.lpp"
 {
     /* A numeric escape sequence that isn't correctly specified. */
     delete yylval->string_value_;
@@ -2288,58 +2447,58 @@
     return TOKEN_LEX_ERROR;
   }
 	YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 364 "../SqlLexer.lpp"
+#line 365 "../SqlLexer.lpp"
 {
     /* Backspace */
     yylval->string_value_->push_back('\b');
   }
 	YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 368 "../SqlLexer.lpp"
+#line 369 "../SqlLexer.lpp"
 {
     /* Form-feed */
     yylval->string_value_->push_back('\f');
   }
 	YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 372 "../SqlLexer.lpp"
+#line 373 "../SqlLexer.lpp"
 {
     /* Newline */
     yylval->string_value_->push_back('\n');
   }
 	YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 376 "../SqlLexer.lpp"
+#line 377 "../SqlLexer.lpp"
 {
     /* Carriage-return */
     yylval->string_value_->push_back('\r');
   }
 	YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 380 "../SqlLexer.lpp"
+#line 381 "../SqlLexer.lpp"
 {
     /* Horizontal Tab */
     yylval->string_value_->push_back('\t');
   }
 	YY_BREAK
-case 148:
-/* rule 148 can match eol */
+case 149:
+/* rule 149 can match eol */
 YY_RULE_SETUP
-#line 384 "../SqlLexer.lpp"
+#line 385 "../SqlLexer.lpp"
 {
     /* Any other character (including actual newline or carriage return) */
     yylval->string_value_->push_back(yytext[1]);
   }
 	YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 388 "../SqlLexer.lpp"
+#line 389 "../SqlLexer.lpp"
 {
     /* This should only be encountered right before an EOF. */
     delete yylval->string_value_;
@@ -2350,17 +2509,17 @@
 	YY_BREAK
 
 
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 398 "../SqlLexer.lpp"
+#line 399 "../SqlLexer.lpp"
 {
     /* Two quotes in a row become a single quote (this is specified by the SQL standard). */
     yylval->string_value_->push_back('\'');
   }
 	YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 402 "../SqlLexer.lpp"
+#line 403 "../SqlLexer.lpp"
 {
     /* End string */
     BEGIN(CONDITION_SQL);
@@ -2369,17 +2528,17 @@
 	YY_BREAK
 
 
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 410 "../SqlLexer.lpp"
+#line 411 "../SqlLexer.lpp"
 {
     /* Two quotes in a row become a single quote (this is specified by the SQL standard). */
     yylval->string_value_->push_back('"');
   }
 	YY_BREAK
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 414 "../SqlLexer.lpp"
+#line 415 "../SqlLexer.lpp"
 {
     /* End string */
     BEGIN(CONDITION_SQL);
@@ -2387,94 +2546,94 @@
   }
 	YY_BREAK
 
-case 154:
-/* rule 154 can match eol */
-YY_RULE_SETUP
-#line 421 "../SqlLexer.lpp"
-{
-  /* Scan up to a quote. */
-  yylval->string_value_->append(yytext, yyleng);
-}
-	YY_BREAK
 case 155:
 /* rule 155 can match eol */
 YY_RULE_SETUP
-#line 426 "../SqlLexer.lpp"
+#line 422 "../SqlLexer.lpp"
 {
-  /* Scan up to a quote or escape sequence. */
+  /* Scan up to a quote. */
   yylval->string_value_->append(yytext, yyleng);
 }
 	YY_BREAK
 case 156:
 /* rule 156 can match eol */
 YY_RULE_SETUP
-#line 431 "../SqlLexer.lpp"
+#line 427 "../SqlLexer.lpp"
+{
+  /* Scan up to a quote or escape sequence. */
+  yylval->string_value_->append(yytext, yyleng);
+}
+	YY_BREAK
+case 157:
+/* rule 157 can match eol */
+YY_RULE_SETUP
+#line 432 "../SqlLexer.lpp"
 {
   /* Scan up to a quote. */
   yylval->string_value_->append(yytext, yyleng);
 }
 	YY_BREAK
 
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 437 "../SqlLexer.lpp"
+#line 438 "../SqlLexer.lpp"
 {
     yylval->string_value_ = new quickstep::ParseString(
         yylloc->first_line, yylloc->first_column, std::string(yytext, yyleng));
     return TOKEN_NAME;
   }
 	YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 443 "../SqlLexer.lpp"
+#line 444 "../SqlLexer.lpp"
 {
     yylval->numeric_literal_value_ = new quickstep::NumericParseLiteralValue(
         yylloc->first_line, yylloc->first_column, yytext);
     return TOKEN_UNSIGNED_NUMVAL;
   }
 	YY_BREAK
-case 159:
+case 160:
 YY_RULE_SETUP
-#line 449 "../SqlLexer.lpp"
+#line 450 "../SqlLexer.lpp"
 /* comment */
 	YY_BREAK
-case 160:
-/* rule 160 can match eol */
+case 161:
+/* rule 161 can match eol */
 YY_RULE_SETUP
-#line 451 "../SqlLexer.lpp"
+#line 452 "../SqlLexer.lpp"
 { yycolumn = 0; }
 	YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 453 "../SqlLexer.lpp"
+#line 454 "../SqlLexer.lpp"
 ; /* ignore white space */
 	YY_BREAK
 /* CONDITION_SQL */
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(CONDITION_COMMAND):
 case YY_STATE_EOF(CONDITION_SQL):
-#line 457 "../SqlLexer.lpp"
+#line 458 "../SqlLexer.lpp"
 {
   /* All conditions except for mutli-state string extracting conditions. */
   BEGIN(INITIAL);
   return TOKEN_EOF;
 }
 	YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 463 "../SqlLexer.lpp"
+#line 464 "../SqlLexer.lpp"
 {
   BEGIN(INITIAL);
   quickstep_yyerror(NULL, yyscanner, NULL, "illegal character");
   return TOKEN_LEX_ERROR;
 }
 	YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 469 "../SqlLexer.lpp"
+#line 470 "../SqlLexer.lpp"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 2477 "SqlLexer_gen.cpp"
+#line 2636 "SqlLexer_gen.cpp"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -2490,7 +2649,7 @@
 			/* We're scanning a new file or input source.  It's
 			 * possible that this happened because the user
 			 * just pointed yyin at a new source and called
-			 * quickstep_yylex().  If so, then we have to assure
+			 * yylex().  If so, then we have to assure
 			 * consistency between YY_CURRENT_BUFFER and our
 			 * globals.  Here is the right place to do so, because
 			 * this is the first action (other than possibly a
@@ -2551,7 +2710,7 @@
 				{
 				yyg->yy_did_buffer_switch_on_eof = 0;
 
-				if ( quickstep_yywrap(yyscanner ) )
+				if ( yywrap( yyscanner ) )
 					{
 					/* Note: because we've taken care in
 					 * yy_get_next_buffer() to have set up
@@ -2605,7 +2764,7 @@
 	} /* end of action switch */
 		} /* end of scanning one token */
 	} /* end of user's declarations */
-} /* end of quickstep_yylex */
+} /* end of yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
  *
@@ -2684,7 +2843,8 @@
 
 				b->yy_ch_buf = (char *)
 					/* Include room in for 2 EOB chars. */
-					quickstep_yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ,yyscanner );
+					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. */
@@ -2716,7 +2876,7 @@
 		if ( number_to_move == YY_MORE_ADJ )
 			{
 			ret_val = EOB_ACT_END_OF_FILE;
-			quickstep_yyrestart(yyin  ,yyscanner);
+			yyrestart( yyin  , yyscanner);
 			}
 
 		else
@@ -2733,9 +2893,12 @@
 	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. */
 		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 );
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) 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()" );
+		/* "- 2" to take care of EOB's */
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
 	}
 
 	yyg->yy_n_chars += number_to_move;
@@ -2768,7 +2931,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 599 )
+			if ( yy_current_state >= 589 )
 				yy_c = yy_meta[yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2797,11 +2960,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 599 )
+		if ( yy_current_state >= 589 )
 			yy_c = yy_meta[yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-	yy_is_jam = (yy_current_state == 598);
+	yy_is_jam = (yy_current_state == 588);
 
 	(void)yyg;
 	return yy_is_jam ? 0 : yy_current_state;
@@ -2853,13 +3016,13 @@
 					 */
 
 					/* Reset buffer status. */
-					quickstep_yyrestart(yyin ,yyscanner);
+					yyrestart( yyin , yyscanner);
 
 					/*FALLTHROUGH*/
 
 				case EOB_ACT_END_OF_FILE:
 					{
-					if ( quickstep_yywrap(yyscanner ) )
+					if ( yywrap( yyscanner ) )
 						return 0;
 
 					if ( ! yyg->yy_did_buffer_switch_on_eof )
@@ -2898,34 +3061,34 @@
  * @param yyscanner The scanner object.
  * @note This function does not reset the start condition to @c INITIAL .
  */
-    void quickstep_yyrestart  (FILE * input_file , yyscan_t yyscanner)
+    void yyrestart  (FILE * input_file , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
 	if ( ! YY_CURRENT_BUFFER ){
-        quickstep_yyensure_buffer_stack (yyscanner);
+        yyensure_buffer_stack (yyscanner);
 		YY_CURRENT_BUFFER_LVALUE =
-            quickstep_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+            yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
 	}
 
-	quickstep_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
-	quickstep_yy_load_buffer_state(yyscanner );
+	yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
+	yy_load_buffer_state( yyscanner );
 }
 
 /** Switch to a different input buffer.
  * @param new_buffer The new input buffer.
  * @param yyscanner The scanner object.
  */
-    void quickstep_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
+    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
 	/* TODO. We should be able to replace this entire function body
 	 * with
-	 *		quickstep_yypop_buffer_state();
-	 *		quickstep_yypush_buffer_state(new_buffer);
+	 *		yypop_buffer_state();
+	 *		yypush_buffer_state(new_buffer);
      */
-	quickstep_yyensure_buffer_stack (yyscanner);
+	yyensure_buffer_stack (yyscanner);
 	if ( YY_CURRENT_BUFFER == new_buffer )
 		return;
 
@@ -2938,17 +3101,17 @@
 		}
 
 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-	quickstep_yy_load_buffer_state(yyscanner );
+	yy_load_buffer_state( yyscanner );
 
 	/* We don't actually know whether we did this switch during
-	 * EOF (quickstep_yywrap()) processing, but the only time this flag
-	 * is looked at is after quickstep_yywrap() is called, so it's safe
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
 	 * to go ahead and always set it.
 	 */
 	yyg->yy_did_buffer_switch_on_eof = 1;
 }
 
-static void quickstep_yy_load_buffer_state  (yyscan_t yyscanner)
+static void yy_load_buffer_state  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
@@ -2963,35 +3126,35 @@
  * @param yyscanner The scanner object.
  * @return the allocated buffer state.
  */
-    YY_BUFFER_STATE quickstep_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
+    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
     
-	b = (YY_BUFFER_STATE) quickstep_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
 	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in quickstep_yy_create_buffer()" );
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
 	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((yy_size_t) (b->yy_buf_size + 2) ,yyscanner );
+	b->yy_ch_buf = (char *) 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()" );
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
 	b->yy_is_our_buffer = 1;
 
-	quickstep_yy_init_buffer(b,file ,yyscanner);
+	yy_init_buffer( b, file , yyscanner);
 
 	return b;
 }
 
 /** Destroy the buffer.
- * @param b a buffer created with quickstep_yy_create_buffer()
+ * @param b a buffer created with yy_create_buffer()
  * @param yyscanner The scanner object.
  */
-    void quickstep_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
+    void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
@@ -3002,28 +3165,28 @@
 		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
 	if ( b->yy_is_our_buffer )
-		quickstep_yyfree((void *) b->yy_ch_buf ,yyscanner );
+		yyfree( (void *) b->yy_ch_buf , yyscanner );
 
-	quickstep_yyfree((void *) b ,yyscanner );
+	yyfree( (void *) b , yyscanner );
 }
 
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
- * such as during a quickstep_yyrestart() or at EOF.
+ * such as during a yyrestart() or at EOF.
  */
-    static void quickstep_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
+    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
 
 {
 	int oerrno = errno;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-	quickstep_yy_flush_buffer(b ,yyscanner);
+	yy_flush_buffer( b , yyscanner);
 
 	b->yy_input_file = file;
 	b->yy_fill_buffer = 1;
 
-    /* If b is the current buffer, then quickstep_yy_init_buffer was _probably_
-     * called from quickstep_yyrestart() or through yy_get_next_buffer.
+    /* If b is the current buffer, then yy_init_buffer was _probably_
+     * called from yyrestart() or through yy_get_next_buffer.
      * In that case, we don't want to reset the lineno or column.
      */
     if (b != YY_CURRENT_BUFFER){
@@ -3040,7 +3203,7 @@
  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
  * @param yyscanner The scanner object.
  */
-    void quickstep_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
+    void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	if ( ! b )
@@ -3061,7 +3224,7 @@
 	b->yy_buffer_status = YY_BUFFER_NEW;
 
 	if ( b == YY_CURRENT_BUFFER )
-		quickstep_yy_load_buffer_state(yyscanner );
+		yy_load_buffer_state( yyscanner );
 }
 
 /** Pushes the new state onto the stack. The new state becomes
@@ -3070,15 +3233,15 @@
  *  @param new_buffer The new state.
  *  @param yyscanner The scanner object.
  */
-void quickstep_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	if (new_buffer == NULL)
 		return;
 
-	quickstep_yyensure_buffer_stack(yyscanner);
+	yyensure_buffer_stack(yyscanner);
 
-	/* This block is copied from quickstep_yy_switch_to_buffer. */
+	/* This block is copied from yy_switch_to_buffer. */
 	if ( YY_CURRENT_BUFFER )
 		{
 		/* Flush out information for old buffer. */
@@ -3092,8 +3255,8 @@
 		yyg->yy_buffer_stack_top++;
 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
-	/* copied from quickstep_yy_switch_to_buffer. */
-	quickstep_yy_load_buffer_state(yyscanner );
+	/* copied from yy_switch_to_buffer. */
+	yy_load_buffer_state( yyscanner );
 	yyg->yy_did_buffer_switch_on_eof = 1;
 }
 
@@ -3101,19 +3264,19 @@
  *  The next element becomes the new top.
  *  @param yyscanner The scanner object.
  */
-void quickstep_yypop_buffer_state (yyscan_t yyscanner)
+void yypop_buffer_state (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	if (!YY_CURRENT_BUFFER)
 		return;
 
-	quickstep_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
+	yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
 	YY_CURRENT_BUFFER_LVALUE = NULL;
 	if (yyg->yy_buffer_stack_top > 0)
 		--yyg->yy_buffer_stack_top;
 
 	if (YY_CURRENT_BUFFER) {
-		quickstep_yy_load_buffer_state(yyscanner );
+		yy_load_buffer_state( yyscanner );
 		yyg->yy_did_buffer_switch_on_eof = 1;
 	}
 }
@@ -3121,7 +3284,7 @@
 /* Allocates the stack if it does not exist.
  *  Guarantees space for at least one push.
  */
-static void quickstep_yyensure_buffer_stack (yyscan_t yyscanner)
+static void yyensure_buffer_stack (yyscan_t yyscanner)
 {
 	yy_size_t num_to_alloc;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
@@ -3133,11 +3296,11 @@
 		 * immediate realloc on the next call.
          */
       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
-		yyg->yy_buffer_stack = (struct yy_buffer_state**)quickstep_yyalloc
+		yyg->yy_buffer_stack = (struct yy_buffer_state**)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()" );
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
 		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
 
@@ -3152,12 +3315,12 @@
 		yy_size_t grow_size = 8 /* arbitrary grow size */;
 
 		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
-		yyg->yy_buffer_stack = (struct yy_buffer_state**)quickstep_yyrealloc
+		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
 								(yyg->yy_buffer_stack,
 								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()" );
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
 		/* zero only the new slots.*/
 		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -3171,7 +3334,7 @@
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE quickstep_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
+YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
     
@@ -3181,9 +3344,9 @@
 		/* They forgot to leave room for the EOB's. */
 		return NULL;
 
-	b = (YY_BUFFER_STATE) quickstep_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
 	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in quickstep_yy_scan_buffer()" );
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
 
 	b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
 	b->yy_buf_pos = b->yy_ch_buf = base;
@@ -3195,33 +3358,33 @@
 	b->yy_fill_buffer = 0;
 	b->yy_buffer_status = YY_BUFFER_NEW;
 
-	quickstep_yy_switch_to_buffer(b ,yyscanner );
+	yy_switch_to_buffer( b , yyscanner );
 
 	return b;
 }
 
-/** Setup the input buffer state to scan a string. The next call to quickstep_yylex() will
+/** Setup the input buffer state to scan a string. The next call to yylex() will
  * scan from a @e copy of @a str.
  * @param yystr a NUL-terminated string to scan
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
- *       quickstep_yy_scan_bytes() instead.
+ *       yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE quickstep_yy_scan_string (const char * yystr , yyscan_t yyscanner)
+YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
 {
     
-	return quickstep_yy_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner);
+	return 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
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
  * scan from a @e copy of @a bytes.
  * @param yybytes the byte buffer to scan
  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE quickstep_yy_scan_bytes  (const char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
+YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
 	char *buf;
@@ -3230,18 +3393,18 @@
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
 	n = (yy_size_t) (_yybytes_len + 2);
-	buf = (char *) quickstep_yyalloc(n ,yyscanner );
+	buf = (char *) yyalloc( n , yyscanner );
 	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in quickstep_yy_scan_bytes()" );
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
 
 	for ( i = 0; i < _yybytes_len; ++i )
 		buf[i] = yybytes[i];
 
 	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
-	b = quickstep_yy_scan_buffer(buf,n ,yyscanner);
+	b = yy_scan_buffer( buf, n , yyscanner);
 	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in quickstep_yy_scan_bytes()" );
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
 
 	/* It's okay to grow etc. this buffer, and we should throw it
 	 * away when we're done.
@@ -3259,7 +3422,7 @@
 {
 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	(void)yyg;
-	(void) fprintf( stderr, "%s\n", msg );
+	fprintf( stderr, "%s\n", msg );
 	exit( YY_EXIT_FAILURE );
 }
 
@@ -3285,7 +3448,7 @@
 /** Get the user-defined data for this scanner.
  * @param yyscanner The scanner object.
  */
-YY_EXTRA_TYPE quickstep_yyget_extra  (yyscan_t yyscanner)
+YY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yyextra;
@@ -3294,7 +3457,7 @@
 /** Get the current line number.
  * @param yyscanner The scanner object.
  */
-int quickstep_yyget_lineno  (yyscan_t yyscanner)
+int yyget_lineno  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
@@ -3307,7 +3470,7 @@
 /** Get the current column number.
  * @param yyscanner The scanner object.
  */
-int quickstep_yyget_column  (yyscan_t yyscanner)
+int yyget_column  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
@@ -3320,7 +3483,7 @@
 /** Get the input stream.
  * @param yyscanner The scanner object.
  */
-FILE *quickstep_yyget_in  (yyscan_t yyscanner)
+FILE *yyget_in  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yyin;
@@ -3329,7 +3492,7 @@
 /** Get the output stream.
  * @param yyscanner The scanner object.
  */
-FILE *quickstep_yyget_out  (yyscan_t yyscanner)
+FILE *yyget_out  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yyout;
@@ -3338,7 +3501,7 @@
 /** Get the length of the current token.
  * @param yyscanner The scanner object.
  */
-int quickstep_yyget_leng  (yyscan_t yyscanner)
+int yyget_leng  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yyleng;
@@ -3348,7 +3511,7 @@
  * @param yyscanner The scanner object.
  */
 
-char *quickstep_yyget_text  (yyscan_t yyscanner)
+char *yyget_text  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yytext;
@@ -3358,7 +3521,7 @@
  * @param user_defined The data to be associated with this scanner.
  * @param yyscanner The scanner object.
  */
-void quickstep_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
+void yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     yyextra = user_defined ;
@@ -3368,13 +3531,13 @@
  * @param _line_number line number
  * @param yyscanner The scanner object.
  */
-void quickstep_yyset_lineno (int  _line_number , yyscan_t yyscanner)
+void yyset_lineno (int  _line_number , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
         /* lineno is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           YY_FATAL_ERROR( "quickstep_yyset_lineno called with no buffer" );
+           YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
     
     yylineno = _line_number;
 }
@@ -3383,13 +3546,13 @@
  * @param _column_no column number
  * @param yyscanner The scanner object.
  */
-void quickstep_yyset_column (int  _column_no , yyscan_t yyscanner)
+void yyset_column (int  _column_no , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
         /* column is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           YY_FATAL_ERROR( "quickstep_yyset_column called with no buffer" );
+           YY_FATAL_ERROR( "yyset_column called with no buffer" );
     
     yycolumn = _column_no;
 }
@@ -3398,27 +3561,27 @@
  * input buffer.
  * @param _in_str A readable stream.
  * @param yyscanner The scanner object.
- * @see quickstep_yy_switch_to_buffer
+ * @see yy_switch_to_buffer
  */
-void quickstep_yyset_in (FILE *  _in_str , yyscan_t yyscanner)
+void yyset_in (FILE *  _in_str , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     yyin = _in_str ;
 }
 
-void quickstep_yyset_out (FILE *  _out_str , yyscan_t yyscanner)
+void yyset_out (FILE *  _out_str , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     yyout = _out_str ;
 }
 
-int quickstep_yyget_debug  (yyscan_t yyscanner)
+int yyget_debug  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yy_flex_debug;
 }
 
-void quickstep_yyset_debug (int  _bdebug , yyscan_t yyscanner)
+void yyset_debug (int  _bdebug , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     yy_flex_debug = _bdebug ;
@@ -3426,25 +3589,25 @@
 
 /* Accessor methods for yylval and yylloc */
 
-YYSTYPE * quickstep_yyget_lval  (yyscan_t yyscanner)
+YYSTYPE * yyget_lval  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yylval;
 }
 
-void quickstep_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
+void yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     yylval = yylval_param;
 }
 
-YYLTYPE *quickstep_yyget_lloc  (yyscan_t yyscanner)
+YYLTYPE *yyget_lloc  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yylloc;
 }
     
-void quickstep_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
+void yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     yylloc = yylloc_param;
@@ -3452,18 +3615,18 @@
     
 /* User-visible API */
 
-/* quickstep_yylex_init is special because it creates the scanner itself, so it is
+/* yylex_init is special because it creates the scanner itself, so it is
  * 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)
+int yylex_init(yyscan_t* ptr_yy_globals)
 {
     if (ptr_yy_globals == NULL){
         errno = EINVAL;
         return 1;
     }
 
-    *ptr_yy_globals = (yyscan_t) quickstep_yyalloc ( sizeof( struct yyguts_t ), NULL );
+    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
 
     if (*ptr_yy_globals == NULL){
         errno = ENOMEM;
@@ -3476,25 +3639,25 @@
     return yy_init_globals ( *ptr_yy_globals );
 }
 
-/* quickstep_yylex_init_extra has the same functionality as quickstep_yylex_init, but follows the
+/* yylex_init_extra has the same functionality as yylex_init, but follows the
  * convention of taking the scanner as the last argument. Note however, that
  * this is a *pointer* to a scanner, as it will be allocated by this call (and
  * is the reason, too, why this function also must handle its own declaration).
- * The user defined value in the first argument will be available to quickstep_yyalloc in
+ * The user defined value in the first argument will be available to yyalloc in
  * the yyextra field.
  */
-int quickstep_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
+int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
 {
     struct yyguts_t dummy_yyguts;
 
-    quickstep_yyset_extra (yy_user_defined, &dummy_yyguts);
+    yyset_extra (yy_user_defined, &dummy_yyguts);
 
     if (ptr_yy_globals == NULL){
         errno = EINVAL;
         return 1;
     }
 
-    *ptr_yy_globals = (yyscan_t) quickstep_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
+    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
 
     if (*ptr_yy_globals == NULL){
         errno = ENOMEM;
@@ -3505,7 +3668,7 @@
     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);
+    yyset_extra (yy_user_defined, *ptr_yy_globals);
 
     return yy_init_globals ( *ptr_yy_globals );
 }
@@ -3514,7 +3677,7 @@
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from quickstep_yylex_destroy(), so don't allocate here.
+     * This function is called from yylex_destroy(), so don't allocate here.
      */
 
     yyg->yy_buffer_stack = NULL;
@@ -3538,37 +3701,37 @@
 #endif
 
     /* For future reference: Set errno on error, since we are called by
-     * quickstep_yylex_init()
+     * yylex_init()
      */
     return 0;
 }
 
-/* quickstep_yylex_destroy is for both reentrant and non-reentrant scanners. */
-int quickstep_yylex_destroy  (yyscan_t yyscanner)
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
     /* Pop the buffer stack, destroying each element. */
 	while(YY_CURRENT_BUFFER){
-		quickstep_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
+		yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
 		YY_CURRENT_BUFFER_LVALUE = NULL;
-		quickstep_yypop_buffer_state(yyscanner);
+		yypop_buffer_state(yyscanner);
 	}
 
 	/* Destroy the stack itself. */
-	quickstep_yyfree(yyg->yy_buffer_stack ,yyscanner);
+	yyfree(yyg->yy_buffer_stack , yyscanner);
 	yyg->yy_buffer_stack = NULL;
 
     /* Destroy the start condition stack. */
-        quickstep_yyfree(yyg->yy_start_stack ,yyscanner );
+        yyfree( yyg->yy_start_stack , yyscanner );
         yyg->yy_start_stack = NULL;
 
     /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * quickstep_yylex() is called, initialization will occur. */
+     * yylex() is called, initialization will occur. */
     yy_init_globals( yyscanner);
 
     /* Destroy the main struct (reentrant only). */
-    quickstep_yyfree ( yyscanner , yyscanner );
+    yyfree ( yyscanner , yyscanner );
     yyscanner = NULL;
     return 0;
 }
@@ -3600,14 +3763,14 @@
 }
 #endif
 
-void *quickstep_yyalloc (yy_size_t  size , yyscan_t yyscanner)
+void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
 {
 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	(void)yyg;
 	return malloc(size);
 }
 
-void *quickstep_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
+void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
 {
 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	(void)yyg;
@@ -3622,15 +3785,15 @@
 	return realloc(ptr, size);
 }
 
-void quickstep_yyfree (void * ptr , yyscan_t yyscanner)
+void yyfree (void * ptr , yyscan_t yyscanner)
 {
 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	(void)yyg;
-	free( (char *) ptr );	/* see quickstep_yyrealloc() for (char *) cast */
+	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
 }
 
 #define YYTABLES_NAME "yytables"
 
-#line 469 "../SqlLexer.lpp"
+#line 470 "../SqlLexer.lpp"
 
 
diff --git a/parser/preprocessed/SqlLexer_gen.hpp b/parser/preprocessed/SqlLexer_gen.hpp
index 86e36f0..5fafae5 100644
--- a/parser/preprocessed/SqlLexer_gen.hpp
+++ b/parser/preprocessed/SqlLexer_gen.hpp
@@ -13,88 +13,244 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 3
+#define YY_FLEX_SUBMINOR_VERSION 4
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 
-    #define yy_create_buffer quickstep_yy_create_buffer
+#ifdef yy_create_buffer
+#define quickstep_yy_create_buffer_ALREADY_DEFINED
+#else
+#define yy_create_buffer quickstep_yy_create_buffer
+#endif
 
-    #define yy_delete_buffer quickstep_yy_delete_buffer
+#ifdef yy_delete_buffer
+#define quickstep_yy_delete_buffer_ALREADY_DEFINED
+#else
+#define yy_delete_buffer quickstep_yy_delete_buffer
+#endif
 
-    #define yy_scan_buffer quickstep_yy_scan_buffer
+#ifdef yy_scan_buffer
+#define quickstep_yy_scan_buffer_ALREADY_DEFINED
+#else
+#define yy_scan_buffer quickstep_yy_scan_buffer
+#endif
 
-    #define yy_scan_string quickstep_yy_scan_string
+#ifdef yy_scan_string
+#define quickstep_yy_scan_string_ALREADY_DEFINED
+#else
+#define yy_scan_string quickstep_yy_scan_string
+#endif
 
-    #define yy_scan_bytes quickstep_yy_scan_bytes
+#ifdef yy_scan_bytes
+#define quickstep_yy_scan_bytes_ALREADY_DEFINED
+#else
+#define yy_scan_bytes quickstep_yy_scan_bytes
+#endif
 
-    #define yy_init_buffer quickstep_yy_init_buffer
+#ifdef yy_init_buffer
+#define quickstep_yy_init_buffer_ALREADY_DEFINED
+#else
+#define yy_init_buffer quickstep_yy_init_buffer
+#endif
 
-    #define yy_flush_buffer quickstep_yy_flush_buffer
+#ifdef yy_flush_buffer
+#define quickstep_yy_flush_buffer_ALREADY_DEFINED
+#else
+#define yy_flush_buffer quickstep_yy_flush_buffer
+#endif
 
-    #define yy_load_buffer_state quickstep_yy_load_buffer_state
+#ifdef yy_load_buffer_state
+#define quickstep_yy_load_buffer_state_ALREADY_DEFINED
+#else
+#define yy_load_buffer_state quickstep_yy_load_buffer_state
+#endif
 
-    #define yy_switch_to_buffer quickstep_yy_switch_to_buffer
+#ifdef yy_switch_to_buffer
+#define quickstep_yy_switch_to_buffer_ALREADY_DEFINED
+#else
+#define yy_switch_to_buffer quickstep_yy_switch_to_buffer
+#endif
 
-    #define yypush_buffer_state quickstep_yypush_buffer_state
+#ifdef yypush_buffer_state
+#define quickstep_yypush_buffer_state_ALREADY_DEFINED
+#else
+#define yypush_buffer_state quickstep_yypush_buffer_state
+#endif
 
-    #define yypop_buffer_state quickstep_yypop_buffer_state
+#ifdef yypop_buffer_state
+#define quickstep_yypop_buffer_state_ALREADY_DEFINED
+#else
+#define yypop_buffer_state quickstep_yypop_buffer_state
+#endif
 
-    #define yyensure_buffer_stack quickstep_yyensure_buffer_stack
+#ifdef yyensure_buffer_stack
+#define quickstep_yyensure_buffer_stack_ALREADY_DEFINED
+#else
+#define yyensure_buffer_stack quickstep_yyensure_buffer_stack
+#endif
 
-    #define yylex quickstep_yylex
+#ifdef yylex
+#define quickstep_yylex_ALREADY_DEFINED
+#else
+#define yylex quickstep_yylex
+#endif
 
-    #define yyrestart quickstep_yyrestart
+#ifdef yyrestart
+#define quickstep_yyrestart_ALREADY_DEFINED
+#else
+#define yyrestart quickstep_yyrestart
+#endif
 
-    #define yylex_init quickstep_yylex_init
+#ifdef yylex_init
+#define quickstep_yylex_init_ALREADY_DEFINED
+#else
+#define yylex_init quickstep_yylex_init
+#endif
 
-    #define yylex_init_extra quickstep_yylex_init_extra
+#ifdef yylex_init_extra
+#define quickstep_yylex_init_extra_ALREADY_DEFINED
+#else
+#define yylex_init_extra quickstep_yylex_init_extra
+#endif
 
-    #define yylex_destroy quickstep_yylex_destroy
+#ifdef yylex_destroy
+#define quickstep_yylex_destroy_ALREADY_DEFINED
+#else
+#define yylex_destroy quickstep_yylex_destroy
+#endif
 
-    #define yyget_debug quickstep_yyget_debug
+#ifdef yyget_debug
+#define quickstep_yyget_debug_ALREADY_DEFINED
+#else
+#define yyget_debug quickstep_yyget_debug
+#endif
 
-    #define yyset_debug quickstep_yyset_debug
+#ifdef yyset_debug
+#define quickstep_yyset_debug_ALREADY_DEFINED
+#else
+#define yyset_debug quickstep_yyset_debug
+#endif
 
-    #define yyget_extra quickstep_yyget_extra
+#ifdef yyget_extra
+#define quickstep_yyget_extra_ALREADY_DEFINED
+#else
+#define yyget_extra quickstep_yyget_extra
+#endif
 
-    #define yyset_extra quickstep_yyset_extra
+#ifdef yyset_extra
+#define quickstep_yyset_extra_ALREADY_DEFINED
+#else
+#define yyset_extra quickstep_yyset_extra
+#endif
 
-    #define yyget_in quickstep_yyget_in
+#ifdef yyget_in
+#define quickstep_yyget_in_ALREADY_DEFINED
+#else
+#define yyget_in quickstep_yyget_in
+#endif
 
-    #define yyset_in quickstep_yyset_in
+#ifdef yyset_in
+#define quickstep_yyset_in_ALREADY_DEFINED
+#else
+#define yyset_in quickstep_yyset_in
+#endif
 
-    #define yyget_out quickstep_yyget_out
+#ifdef yyget_out
+#define quickstep_yyget_out_ALREADY_DEFINED
+#else
+#define yyget_out quickstep_yyget_out
+#endif
 
-    #define yyset_out quickstep_yyset_out
+#ifdef yyset_out
+#define quickstep_yyset_out_ALREADY_DEFINED
+#else
+#define yyset_out quickstep_yyset_out
+#endif
 
-    #define yyget_leng quickstep_yyget_leng
+#ifdef yyget_leng
+#define quickstep_yyget_leng_ALREADY_DEFINED
+#else
+#define yyget_leng quickstep_yyget_leng
+#endif
 
-    #define yyget_text quickstep_yyget_text
+#ifdef yyget_text
+#define quickstep_yyget_text_ALREADY_DEFINED
+#else
+#define yyget_text quickstep_yyget_text
+#endif
 
-    #define yyget_lineno quickstep_yyget_lineno
+#ifdef yyget_lineno
+#define quickstep_yyget_lineno_ALREADY_DEFINED
+#else
+#define yyget_lineno quickstep_yyget_lineno
+#endif
 
-    #define yyset_lineno quickstep_yyset_lineno
+#ifdef yyset_lineno
+#define quickstep_yyset_lineno_ALREADY_DEFINED
+#else
+#define yyset_lineno quickstep_yyset_lineno
+#endif
 
-        #define yyget_column quickstep_yyget_column
+#ifdef yyget_column
+#define quickstep_yyget_column_ALREADY_DEFINED
+#else
+#define yyget_column quickstep_yyget_column
+#endif
 
-        #define yyset_column quickstep_yyset_column
+#ifdef yyset_column
+#define quickstep_yyset_column_ALREADY_DEFINED
+#else
+#define yyset_column quickstep_yyset_column
+#endif
 
-    #define yywrap quickstep_yywrap
+#ifdef yywrap
+#define quickstep_yywrap_ALREADY_DEFINED
+#else
+#define yywrap quickstep_yywrap
+#endif
 
-    #define yyget_lval quickstep_yyget_lval
+#ifdef yyget_lval
+#define quickstep_yyget_lval_ALREADY_DEFINED
+#else
+#define yyget_lval quickstep_yyget_lval
+#endif
 
-    #define yyset_lval quickstep_yyset_lval
+#ifdef yyset_lval
+#define quickstep_yyset_lval_ALREADY_DEFINED
+#else
+#define yyset_lval quickstep_yyset_lval
+#endif
 
-    #define yyget_lloc quickstep_yyget_lloc
+#ifdef yyget_lloc
+#define quickstep_yyget_lloc_ALREADY_DEFINED
+#else
+#define yyget_lloc quickstep_yyget_lloc
+#endif
 
-    #define yyset_lloc quickstep_yyset_lloc
+#ifdef yyset_lloc
+#define quickstep_yyset_lloc_ALREADY_DEFINED
+#else
+#define yyset_lloc quickstep_yyset_lloc
+#endif
 
-    #define yyalloc quickstep_yyalloc
+#ifdef yyalloc
+#define quickstep_yyalloc_ALREADY_DEFINED
+#else
+#define yyalloc quickstep_yyalloc
+#endif
 
-    #define yyrealloc quickstep_yyrealloc
+#ifdef yyrealloc
+#define quickstep_yyrealloc_ALREADY_DEFINED
+#else
+#define yyrealloc quickstep_yyrealloc
+#endif
 
-    #define yyfree quickstep_yyfree
+#ifdef yyfree
+#define quickstep_yyfree_ALREADY_DEFINED
+#else
+#define yyfree quickstep_yyfree
+#endif
 
 /* First, we deal with  platform-specific or compiler-specific issues. */
 
@@ -166,10 +322,16 @@
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#ifndef SIZE_MAX
+#define SIZE_MAX               (~(size_t)0)
+#endif
+
 #endif /* ! C99 */
 
 #endif /* ! FLEXINT_H */
 
+/* begin standard C++ headers. */
+
 /* TODO: this is always defined, so inline it */
 #define yyconst const
 
@@ -270,21 +432,21 @@
 	};
 #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 yyrestart ( FILE *input_file , yyscan_t yyscanner );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
+void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+void 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 ( const char *yy_str , yyscan_t yyscanner );
-YY_BUFFER_STATE quickstep_yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
+YY_BUFFER_STATE 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 *yyalloc ( yy_size_t , yyscan_t yyscanner );
+void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
+void yyfree ( void * , yyscan_t yyscanner );
 
 /* Begin user sect3 */
 
@@ -315,50 +477,50 @@
 #define YY_EXTRA_TYPE void *
 #endif
 
-int quickstep_yylex_init (yyscan_t* scanner);
+int yylex_init (yyscan_t* scanner);
 
-int quickstep_yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
+int 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 yylex_destroy ( yyscan_t yyscanner );
 
-int quickstep_yyget_debug ( yyscan_t yyscanner );
+int yyget_debug ( yyscan_t yyscanner );
 
-void quickstep_yyset_debug ( int debug_flag , yyscan_t yyscanner );
+void yyset_debug ( int debug_flag , yyscan_t yyscanner );
 
-YY_EXTRA_TYPE quickstep_yyget_extra ( yyscan_t yyscanner );
+YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
 
-void quickstep_yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
+void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
 
-FILE *quickstep_yyget_in ( yyscan_t yyscanner );
+FILE *yyget_in ( yyscan_t yyscanner );
 
-void quickstep_yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
+void yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
 
-FILE *quickstep_yyget_out ( yyscan_t yyscanner );
+FILE *yyget_out ( yyscan_t yyscanner );
 
-void quickstep_yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
+void yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
 
-			int quickstep_yyget_leng ( yyscan_t yyscanner );
+			int yyget_leng ( yyscan_t yyscanner );
 
-char *quickstep_yyget_text ( yyscan_t yyscanner );
+char *yyget_text ( yyscan_t yyscanner );
 
-int quickstep_yyget_lineno ( yyscan_t yyscanner );
+int yyget_lineno ( yyscan_t yyscanner );
 
-void quickstep_yyset_lineno ( int _line_number , yyscan_t yyscanner );
+void yyset_lineno ( int _line_number , yyscan_t yyscanner );
 
-int quickstep_yyget_column  ( yyscan_t yyscanner );
+int yyget_column  ( yyscan_t yyscanner );
 
-void quickstep_yyset_column ( int _column_no , yyscan_t yyscanner );
+void yyset_column ( int _column_no , yyscan_t yyscanner );
 
-YYSTYPE * quickstep_yyget_lval ( yyscan_t yyscanner );
+YYSTYPE * yyget_lval ( yyscan_t yyscanner );
 
-void quickstep_yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
+void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
 
-       YYLTYPE *quickstep_yyget_lloc ( yyscan_t yyscanner );
+       YYLTYPE *yyget_lloc ( yyscan_t yyscanner );
     
-        void quickstep_yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
+        void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
     
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -366,9 +528,9 @@
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int quickstep_yywrap ( yyscan_t yyscanner );
+extern "C" int yywrap ( yyscan_t yyscanner );
 #else
-extern int quickstep_yywrap ( yyscan_t yyscanner );
+extern int yywrap ( yyscan_t yyscanner );
 #endif
 #endif
 
@@ -405,10 +567,10 @@
 #ifndef YY_DECL
 #define YY_DECL_IS_OURS 1
 
-extern int quickstep_yylex \
+extern int yylex \
                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
 
-#define YY_DECL int quickstep_yylex \
+#define YY_DECL int yylex \
                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
 #endif /* !YY_DECL */
 
@@ -426,9 +588,154 @@
 #undef YY_DECL
 #endif
 
-#line 469 "../SqlLexer.lpp"
+#ifndef quickstep_yy_create_buffer_ALREADY_DEFINED
+#undef yy_create_buffer
+#endif
+#ifndef quickstep_yy_delete_buffer_ALREADY_DEFINED
+#undef yy_delete_buffer
+#endif
+#ifndef quickstep_yy_scan_buffer_ALREADY_DEFINED
+#undef yy_scan_buffer
+#endif
+#ifndef quickstep_yy_scan_string_ALREADY_DEFINED
+#undef yy_scan_string
+#endif
+#ifndef quickstep_yy_scan_bytes_ALREADY_DEFINED
+#undef yy_scan_bytes
+#endif
+#ifndef quickstep_yy_init_buffer_ALREADY_DEFINED
+#undef yy_init_buffer
+#endif
+#ifndef quickstep_yy_flush_buffer_ALREADY_DEFINED
+#undef yy_flush_buffer
+#endif
+#ifndef quickstep_yy_load_buffer_state_ALREADY_DEFINED
+#undef yy_load_buffer_state
+#endif
+#ifndef quickstep_yy_switch_to_buffer_ALREADY_DEFINED
+#undef yy_switch_to_buffer
+#endif
+#ifndef quickstep_yypush_buffer_state_ALREADY_DEFINED
+#undef yypush_buffer_state
+#endif
+#ifndef quickstep_yypop_buffer_state_ALREADY_DEFINED
+#undef yypop_buffer_state
+#endif
+#ifndef quickstep_yyensure_buffer_stack_ALREADY_DEFINED
+#undef yyensure_buffer_stack
+#endif
+#ifndef quickstep_yylex_ALREADY_DEFINED
+#undef yylex
+#endif
+#ifndef quickstep_yyrestart_ALREADY_DEFINED
+#undef yyrestart
+#endif
+#ifndef quickstep_yylex_init_ALREADY_DEFINED
+#undef yylex_init
+#endif
+#ifndef quickstep_yylex_init_extra_ALREADY_DEFINED
+#undef yylex_init_extra
+#endif
+#ifndef quickstep_yylex_destroy_ALREADY_DEFINED
+#undef yylex_destroy
+#endif
+#ifndef quickstep_yyget_debug_ALREADY_DEFINED
+#undef yyget_debug
+#endif
+#ifndef quickstep_yyset_debug_ALREADY_DEFINED
+#undef yyset_debug
+#endif
+#ifndef quickstep_yyget_extra_ALREADY_DEFINED
+#undef yyget_extra
+#endif
+#ifndef quickstep_yyset_extra_ALREADY_DEFINED
+#undef yyset_extra
+#endif
+#ifndef quickstep_yyget_in_ALREADY_DEFINED
+#undef yyget_in
+#endif
+#ifndef quickstep_yyset_in_ALREADY_DEFINED
+#undef yyset_in
+#endif
+#ifndef quickstep_yyget_out_ALREADY_DEFINED
+#undef yyget_out
+#endif
+#ifndef quickstep_yyset_out_ALREADY_DEFINED
+#undef yyset_out
+#endif
+#ifndef quickstep_yyget_leng_ALREADY_DEFINED
+#undef yyget_leng
+#endif
+#ifndef quickstep_yyget_text_ALREADY_DEFINED
+#undef yyget_text
+#endif
+#ifndef quickstep_yyget_lineno_ALREADY_DEFINED
+#undef yyget_lineno
+#endif
+#ifndef quickstep_yyset_lineno_ALREADY_DEFINED
+#undef yyset_lineno
+#endif
+#ifndef quickstep_yyget_column_ALREADY_DEFINED
+#undef yyget_column
+#endif
+#ifndef quickstep_yyset_column_ALREADY_DEFINED
+#undef yyset_column
+#endif
+#ifndef quickstep_yywrap_ALREADY_DEFINED
+#undef yywrap
+#endif
+#ifndef quickstep_yyget_lval_ALREADY_DEFINED
+#undef yyget_lval
+#endif
+#ifndef quickstep_yyset_lval_ALREADY_DEFINED
+#undef yyset_lval
+#endif
+#ifndef quickstep_yyget_lloc_ALREADY_DEFINED
+#undef yyget_lloc
+#endif
+#ifndef quickstep_yyset_lloc_ALREADY_DEFINED
+#undef yyset_lloc
+#endif
+#ifndef quickstep_yyalloc_ALREADY_DEFINED
+#undef yyalloc
+#endif
+#ifndef quickstep_yyrealloc_ALREADY_DEFINED
+#undef yyrealloc
+#endif
+#ifndef quickstep_yyfree_ALREADY_DEFINED
+#undef yyfree
+#endif
+#ifndef quickstep_yytext_ALREADY_DEFINED
+#undef yytext
+#endif
+#ifndef quickstep_yyleng_ALREADY_DEFINED
+#undef yyleng
+#endif
+#ifndef quickstep_yyin_ALREADY_DEFINED
+#undef yyin
+#endif
+#ifndef quickstep_yyout_ALREADY_DEFINED
+#undef yyout
+#endif
+#ifndef quickstep_yy_flex_debug_ALREADY_DEFINED
+#undef yy_flex_debug
+#endif
+#ifndef quickstep_yylineno_ALREADY_DEFINED
+#undef yylineno
+#endif
+#ifndef quickstep_yytables_fload_ALREADY_DEFINED
+#undef yytables_fload
+#endif
+#ifndef quickstep_yytables_destroy_ALREADY_DEFINED
+#undef yytables_destroy
+#endif
+#ifndef quickstep_yyTABLES_NAME_ALREADY_DEFINED
+#undef yyTABLES_NAME
+#endif
+
+#line 470 "../SqlLexer.lpp"
 
 
-#line 432 "SqlLexer_gen.hpp"
+#line 739 "SqlLexer_gen.hpp"
 #undef quickstep_yyIN_HEADER
 #endif /* quickstep_yyHEADER_H */
diff --git a/parser/preprocessed/SqlParser_gen.cpp b/parser/preprocessed/SqlParser_gen.cpp
index 5cd7426..72c61dd 100644
--- a/parser/preprocessed/SqlParser_gen.cpp
+++ b/parser/preprocessed/SqlParser_gen.cpp
@@ -237,90 +237,91 @@
     TOKEN_DECIMAL = 304,
     TOKEN_DEFAULT = 305,
     TOKEN_DELETE = 306,
-    TOKEN_DELIMITER = 307,
-    TOKEN_DESC = 308,
-    TOKEN_DISTINCT = 309,
-    TOKEN_DOUBLE = 310,
-    TOKEN_DROP = 311,
-    TOKEN_ELSE = 312,
-    TOKEN_END = 313,
-    TOKEN_ESCAPE_STRINGS = 314,
-    TOKEN_EXISTS = 315,
-    TOKEN_EXTRACT = 316,
-    TOKEN_FALSE = 317,
-    TOKEN_FIRST = 318,
-    TOKEN_FLOAT = 319,
-    TOKEN_FOLLOWING = 320,
-    TOKEN_FOR = 321,
-    TOKEN_FOREIGN = 322,
-    TOKEN_FROM = 323,
-    TOKEN_FULL = 324,
-    TOKEN_GROUP = 325,
-    TOKEN_HASH = 326,
-    TOKEN_HAVING = 327,
-    TOKEN_HOUR = 328,
-    TOKEN_IN = 329,
-    TOKEN_INDEX = 330,
-    TOKEN_INNER = 331,
-    TOKEN_INSERT = 332,
-    TOKEN_INTEGER = 333,
-    TOKEN_INTERVAL = 334,
-    TOKEN_INTO = 335,
-    TOKEN_JOIN = 336,
-    TOKEN_KEY = 337,
-    TOKEN_LAST = 338,
-    TOKEN_LEFT = 339,
-    TOKEN_LIMIT = 340,
-    TOKEN_LONG = 341,
-    TOKEN_MINUTE = 342,
-    TOKEN_MONTH = 343,
-    TOKEN_NULL = 344,
-    TOKEN_NULLS = 345,
-    TOKEN_OFF = 346,
-    TOKEN_ON = 347,
-    TOKEN_ORDER = 348,
-    TOKEN_OUTER = 349,
-    TOKEN_OVER = 350,
-    TOKEN_PARTITION = 351,
-    TOKEN_PARTITIONS = 352,
-    TOKEN_PERCENT = 353,
-    TOKEN_PRECEDING = 354,
-    TOKEN_PRIMARY = 355,
-    TOKEN_PRIORITY = 356,
-    TOKEN_QUIT = 357,
-    TOKEN_RANGE = 358,
-    TOKEN_REAL = 359,
-    TOKEN_REFERENCES = 360,
-    TOKEN_RIGHT = 361,
-    TOKEN_ROW = 362,
-    TOKEN_ROW_DELIMITER = 363,
-    TOKEN_ROWS = 364,
-    TOKEN_SECOND = 365,
-    TOKEN_SELECT = 366,
-    TOKEN_SET = 367,
-    TOKEN_SMA = 368,
-    TOKEN_SMALLINT = 369,
+    TOKEN_DESC = 307,
+    TOKEN_DISTINCT = 308,
+    TOKEN_DOUBLE = 309,
+    TOKEN_DROP = 310,
+    TOKEN_ELSE = 311,
+    TOKEN_END = 312,
+    TOKEN_EXISTS = 313,
+    TOKEN_EXTRACT = 314,
+    TOKEN_FALSE = 315,
+    TOKEN_FIRST = 316,
+    TOKEN_FLOAT = 317,
+    TOKEN_FOLLOWING = 318,
+    TOKEN_FOR = 319,
+    TOKEN_FOREIGN = 320,
+    TOKEN_FROM = 321,
+    TOKEN_FULL = 322,
+    TOKEN_GROUP = 323,
+    TOKEN_HASH = 324,
+    TOKEN_HAVING = 325,
+    TOKEN_HOUR = 326,
+    TOKEN_IN = 327,
+    TOKEN_INDEX = 328,
+    TOKEN_INNER = 329,
+    TOKEN_INSERT = 330,
+    TOKEN_INTEGER = 331,
+    TOKEN_INTERVAL = 332,
+    TOKEN_INTO = 333,
+    TOKEN_JOIN = 334,
+    TOKEN_KEY = 335,
+    TOKEN_LAST = 336,
+    TOKEN_LEFT = 337,
+    TOKEN_LIMIT = 338,
+    TOKEN_LONG = 339,
+    TOKEN_MINUTE = 340,
+    TOKEN_MONTH = 341,
+    TOKEN_NULL = 342,
+    TOKEN_NULLS = 343,
+    TOKEN_OFF = 344,
+    TOKEN_ON = 345,
+    TOKEN_ORDER = 346,
+    TOKEN_OUTER = 347,
+    TOKEN_OVER = 348,
+    TOKEN_PARTITION = 349,
+    TOKEN_PARTITIONS = 350,
+    TOKEN_PERCENT = 351,
+    TOKEN_PRECEDING = 352,
+    TOKEN_PRIMARY = 353,
+    TOKEN_PRIORITY = 354,
+    TOKEN_QUIT = 355,
+    TOKEN_RANGE = 356,
+    TOKEN_REAL = 357,
+    TOKEN_REFERENCES = 358,
+    TOKEN_RIGHT = 359,
+    TOKEN_ROW = 360,
+    TOKEN_ROW_DELIMITER = 361,
+    TOKEN_ROWS = 362,
+    TOKEN_SECOND = 363,
+    TOKEN_SELECT = 364,
+    TOKEN_SET = 365,
+    TOKEN_SMA = 366,
+    TOKEN_SMALLINT = 367,
+    TOKEN_STDERR = 368,
+    TOKEN_STDOUT = 369,
     TOKEN_SUBSTRING = 370,
     TOKEN_TABLE = 371,
     TOKEN_THEN = 372,
     TOKEN_TIME = 373,
     TOKEN_TIMESTAMP = 374,
-    TOKEN_TRUE = 375,
-    TOKEN_TUPLESAMPLE = 376,
-    TOKEN_UNBOUNDED = 377,
-    TOKEN_UNIQUE = 378,
-    TOKEN_UPDATE = 379,
-    TOKEN_USING = 380,
-    TOKEN_VALUES = 381,
-    TOKEN_VARCHAR = 382,
-    TOKEN_WHEN = 383,
-    TOKEN_WHERE = 384,
-    TOKEN_WINDOW = 385,
-    TOKEN_WITH = 386,
-    TOKEN_YEAR = 387,
-    TOKEN_YEARMONTH = 388,
-    TOKEN_EOF = 389,
-    TOKEN_LEX_ERROR = 390
+    TOKEN_TO = 375,
+    TOKEN_TRUE = 376,
+    TOKEN_TUPLESAMPLE = 377,
+    TOKEN_UNBOUNDED = 378,
+    TOKEN_UNIQUE = 379,
+    TOKEN_UPDATE = 380,
+    TOKEN_USING = 381,
+    TOKEN_VALUES = 382,
+    TOKEN_VARCHAR = 383,
+    TOKEN_WHEN = 384,
+    TOKEN_WHERE = 385,
+    TOKEN_WINDOW = 386,
+    TOKEN_WITH = 387,
+    TOKEN_YEAR = 388,
+    TOKEN_YEARMONTH = 389,
+    TOKEN_EOF = 390,
+    TOKEN_LEX_ERROR = 391
   };
 #endif
 
@@ -380,8 +381,7 @@
   quickstep::ParseKeyStringValue *key_string_value_;
   quickstep::ParseKeyStringList *key_string_list_;
   quickstep::ParseKeyIntegerValue *key_integer_value_;
-
-  quickstep::ParseCopyFromParams *copy_from_params_;
+  quickstep::ParseKeyBoolValue *key_bool_value_;
 
   quickstep::ParseAssignment *assignment_;
   quickstep::PtrList<quickstep::ParseAssignment> *assignment_list_;
@@ -394,7 +394,7 @@
   quickstep::ParseStatementUpdate *update_statement_;
   quickstep::ParseStatementInsert *insert_statement_;
   quickstep::ParseStatementDelete *delete_statement_;
-  quickstep::ParseStatementCopyFrom *copy_from_statement_;
+  quickstep::ParseStatementCopy *copy_statement_;
   quickstep::ParseStatementCreateTable *create_table_statement_;
   quickstep::ParsePartitionClause *partition_clause_;
   quickstep::ParseBlockProperties *block_properties_;
@@ -460,7 +460,7 @@
 #endif /* !YY_QUICKSTEP_YY_SQLPARSER_GEN_HPP_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
-#line 223 "../SqlParser.ypp" /* yacc.c:358  */
+#line 222 "../SqlParser.ypp" /* yacc.c:358  */
 
 /* This header needs YYSTYPE, which is defined by the %union directive above */
 #include "SqlLexer_gen.hpp"
@@ -708,23 +708,23 @@
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  49
+#define YYFINAL  50
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1207
+#define YYLAST   1391
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  147
+#define YYNTOKENS  148
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  109
+#define YYNNTS  110
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  293
+#define YYNRULES  298
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  543
+#define YYNSTATES  550
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   390
+#define YYMAXUTOK   391
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -734,11 +734,11 @@
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     142,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     143,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,   146,     2,     2,
-     143,   144,    23,    21,   145,    22,    27,    24,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,   141,
+       2,     2,     2,     2,     2,     2,     2,   147,     2,     2,
+     144,   145,    23,    21,   146,    22,    27,    24,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,   142,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -772,43 +772,43 @@
      110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
      120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
      130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140
+     140,   141
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   639,   639,   643,   647,   651,   655,   658,   665,   668,
-     671,   674,   677,   680,   683,   686,   689,   692,   698,   704,
-     711,   717,   724,   733,   738,   747,   752,   757,   761,   767,
-     772,   775,   778,   783,   786,   789,   792,   795,   798,   801,
-     804,   807,   810,   822,   825,   828,   846,   866,   869,   872,
-     877,   882,   888,   894,   903,   907,   913,   916,   921,   926,
-     931,   938,   945,   949,   955,   958,   963,   966,   971,   974,
-     979,   982,  1001,  1004,  1009,  1013,  1019,  1022,  1025,  1030,
-    1033,  1040,  1045,  1056,  1061,  1065,  1069,  1075,  1078,  1084,
-    1092,  1095,  1098,  1104,  1109,  1112,  1117,  1121,  1125,  1129,
-    1135,  1140,  1145,  1149,  1155,  1164,  1167,  1172,  1175,  1194,
-    1199,  1203,  1209,  1215,  1224,  1229,  1237,  1243,  1249,  1252,
-    1255,  1260,  1263,  1268,  1272,  1278,  1281,  1284,  1289,  1294,
-    1299,  1302,  1305,  1310,  1313,  1316,  1319,  1322,  1325,  1328,
-    1331,  1336,  1339,  1344,  1348,  1352,  1355,  1359,  1362,  1367,
-    1370,  1375,  1378,  1383,  1387,  1393,  1396,  1401,  1404,  1409,
-    1412,  1417,  1420,  1439,  1442,  1447,  1451,  1457,  1463,  1468,
-    1471,  1476,  1479,  1484,  1487,  1492,  1495,  1500,  1501,  1504,
-    1509,  1510,  1513,  1518,  1522,  1528,  1535,  1538,  1541,  1546,
-    1549,  1552,  1558,  1561,  1566,  1571,  1580,  1585,  1594,  1599,
-    1602,  1607,  1610,  1615,  1621,  1627,  1630,  1633,  1636,  1639,
-    1642,  1648,  1657,  1660,  1665,  1668,  1673,  1676,  1681,  1684,
-    1687,  1690,  1694,  1698,  1701,  1704,  1707,  1710,  1715,  1719,
-    1723,  1726,  1731,  1736,  1740,  1746,  1749,  1754,  1758,  1764,
-    1769,  1773,  1779,  1784,  1787,  1792,  1796,  1802,  1805,  1808,
-    1811,  1823,  1827,  1846,  1859,  1874,  1877,  1880,  1883,  1886,
-    1889,  1894,  1898,  1904,  1907,  1912,  1916,  1923,  1926,  1929,
-    1932,  1935,  1938,  1941,  1944,  1947,  1950,  1955,  1966,  1969,
-    1974,  1977,  1980,  1986,  1990,  1996,  1999,  2007,  2010,  2013,
-    2016,  2022,  2027,  2032
+       0,   640,   640,   644,   648,   652,   656,   659,   666,   669,
+     672,   675,   678,   681,   684,   687,   690,   693,   699,   705,
+     712,   718,   725,   734,   739,   748,   753,   758,   762,   768,
+     773,   776,   779,   784,   787,   790,   793,   796,   799,   802,
+     805,   808,   811,   823,   826,   829,   847,   867,   870,   873,
+     878,   883,   889,   895,   904,   908,   914,   917,   922,   927,
+     932,   939,   946,   950,   956,   959,   964,   967,   972,   975,
+     980,   983,  1002,  1005,  1010,  1014,  1020,  1023,  1026,  1029,
+    1034,  1037,  1040,  1047,  1052,  1063,  1068,  1073,  1077,  1081,
+    1087,  1090,  1096,  1104,  1107,  1110,  1116,  1121,  1126,  1130,
+    1136,  1140,  1143,  1148,  1151,  1156,  1161,  1166,  1170,  1176,
+    1185,  1188,  1193,  1196,  1215,  1220,  1224,  1230,  1236,  1245,
+    1250,  1258,  1264,  1270,  1273,  1276,  1281,  1284,  1289,  1293,
+    1299,  1302,  1305,  1310,  1315,  1320,  1323,  1326,  1331,  1334,
+    1337,  1340,  1343,  1346,  1349,  1352,  1357,  1360,  1365,  1369,
+    1373,  1376,  1380,  1383,  1388,  1391,  1396,  1399,  1404,  1408,
+    1414,  1417,  1422,  1425,  1430,  1433,  1438,  1441,  1460,  1463,
+    1468,  1472,  1478,  1484,  1489,  1492,  1497,  1500,  1505,  1508,
+    1513,  1516,  1521,  1522,  1525,  1530,  1531,  1534,  1539,  1543,
+    1549,  1556,  1559,  1562,  1567,  1570,  1573,  1579,  1582,  1587,
+    1592,  1601,  1606,  1615,  1620,  1623,  1628,  1631,  1636,  1642,
+    1648,  1651,  1654,  1657,  1660,  1663,  1669,  1678,  1681,  1686,
+    1689,  1694,  1697,  1702,  1705,  1708,  1711,  1715,  1719,  1722,
+    1725,  1728,  1731,  1736,  1740,  1744,  1747,  1752,  1757,  1761,
+    1767,  1770,  1775,  1779,  1785,  1790,  1794,  1800,  1805,  1808,
+    1813,  1817,  1823,  1826,  1829,  1832,  1844,  1848,  1867,  1880,
+    1895,  1898,  1901,  1904,  1907,  1910,  1915,  1919,  1925,  1928,
+    1933,  1937,  1944,  1947,  1950,  1953,  1956,  1959,  1962,  1965,
+    1968,  1971,  1976,  1987,  1990,  1995,  1998,  2001,  2007,  2011,
+    2017,  2020,  2028,  2031,  2034,  2037,  2043,  2048,  2053
 };
 #endif
 
@@ -830,38 +830,38 @@
   "TOKEN_CHARACTER", "TOKEN_CHECK", "TOKEN_COLUMN", "TOKEN_CONSTRAINT",
   "TOKEN_COPY", "TOKEN_CREATE", "TOKEN_CURRENT", "TOKEN_DATE",
   "TOKEN_DATETIME", "TOKEN_DAY", "TOKEN_DECIMAL", "TOKEN_DEFAULT",
-  "TOKEN_DELETE", "TOKEN_DELIMITER", "TOKEN_DESC", "TOKEN_DISTINCT",
-  "TOKEN_DOUBLE", "TOKEN_DROP", "TOKEN_ELSE", "TOKEN_END",
-  "TOKEN_ESCAPE_STRINGS", "TOKEN_EXISTS", "TOKEN_EXTRACT", "TOKEN_FALSE",
-  "TOKEN_FIRST", "TOKEN_FLOAT", "TOKEN_FOLLOWING", "TOKEN_FOR",
-  "TOKEN_FOREIGN", "TOKEN_FROM", "TOKEN_FULL", "TOKEN_GROUP", "TOKEN_HASH",
-  "TOKEN_HAVING", "TOKEN_HOUR", "TOKEN_IN", "TOKEN_INDEX", "TOKEN_INNER",
-  "TOKEN_INSERT", "TOKEN_INTEGER", "TOKEN_INTERVAL", "TOKEN_INTO",
-  "TOKEN_JOIN", "TOKEN_KEY", "TOKEN_LAST", "TOKEN_LEFT", "TOKEN_LIMIT",
-  "TOKEN_LONG", "TOKEN_MINUTE", "TOKEN_MONTH", "TOKEN_NULL", "TOKEN_NULLS",
-  "TOKEN_OFF", "TOKEN_ON", "TOKEN_ORDER", "TOKEN_OUTER", "TOKEN_OVER",
-  "TOKEN_PARTITION", "TOKEN_PARTITIONS", "TOKEN_PERCENT",
+  "TOKEN_DELETE", "TOKEN_DESC", "TOKEN_DISTINCT", "TOKEN_DOUBLE",
+  "TOKEN_DROP", "TOKEN_ELSE", "TOKEN_END", "TOKEN_EXISTS", "TOKEN_EXTRACT",
+  "TOKEN_FALSE", "TOKEN_FIRST", "TOKEN_FLOAT", "TOKEN_FOLLOWING",
+  "TOKEN_FOR", "TOKEN_FOREIGN", "TOKEN_FROM", "TOKEN_FULL", "TOKEN_GROUP",
+  "TOKEN_HASH", "TOKEN_HAVING", "TOKEN_HOUR", "TOKEN_IN", "TOKEN_INDEX",
+  "TOKEN_INNER", "TOKEN_INSERT", "TOKEN_INTEGER", "TOKEN_INTERVAL",
+  "TOKEN_INTO", "TOKEN_JOIN", "TOKEN_KEY", "TOKEN_LAST", "TOKEN_LEFT",
+  "TOKEN_LIMIT", "TOKEN_LONG", "TOKEN_MINUTE", "TOKEN_MONTH", "TOKEN_NULL",
+  "TOKEN_NULLS", "TOKEN_OFF", "TOKEN_ON", "TOKEN_ORDER", "TOKEN_OUTER",
+  "TOKEN_OVER", "TOKEN_PARTITION", "TOKEN_PARTITIONS", "TOKEN_PERCENT",
   "TOKEN_PRECEDING", "TOKEN_PRIMARY", "TOKEN_PRIORITY", "TOKEN_QUIT",
   "TOKEN_RANGE", "TOKEN_REAL", "TOKEN_REFERENCES", "TOKEN_RIGHT",
   "TOKEN_ROW", "TOKEN_ROW_DELIMITER", "TOKEN_ROWS", "TOKEN_SECOND",
   "TOKEN_SELECT", "TOKEN_SET", "TOKEN_SMA", "TOKEN_SMALLINT",
-  "TOKEN_SUBSTRING", "TOKEN_TABLE", "TOKEN_THEN", "TOKEN_TIME",
-  "TOKEN_TIMESTAMP", "TOKEN_TRUE", "TOKEN_TUPLESAMPLE", "TOKEN_UNBOUNDED",
-  "TOKEN_UNIQUE", "TOKEN_UPDATE", "TOKEN_USING", "TOKEN_VALUES",
-  "TOKEN_VARCHAR", "TOKEN_WHEN", "TOKEN_WHERE", "TOKEN_WINDOW",
-  "TOKEN_WITH", "TOKEN_YEAR", "TOKEN_YEARMONTH", "TOKEN_EOF",
-  "TOKEN_LEX_ERROR", "';'", "'\\n'", "'('", "')'", "','", "'%'", "$accept",
-  "start", "sql_statement", "quit_statement", "alter_table_statement",
-  "create_table_statement", "create_index_statement",
-  "drop_table_statement", "column_def", "column_def_commalist",
-  "data_type", "column_constraint_def", "column_constraint_def_list",
-  "opt_column_constraint_def_list", "table_constraint_def",
-  "table_constraint_def_commalist", "opt_table_constraint_def_commalist",
-  "opt_column_list", "opt_block_properties", "opt_partition_clause",
-  "partition_type", "key_value_list", "key_value", "key_string_value",
-  "key_string_list", "key_integer_value", "index_type",
-  "opt_index_properties", "insert_statement", "copy_from_statement",
-  "opt_copy_from_params", "copy_from_params", "update_statement",
+  "TOKEN_STDERR", "TOKEN_STDOUT", "TOKEN_SUBSTRING", "TOKEN_TABLE",
+  "TOKEN_THEN", "TOKEN_TIME", "TOKEN_TIMESTAMP", "TOKEN_TO", "TOKEN_TRUE",
+  "TOKEN_TUPLESAMPLE", "TOKEN_UNBOUNDED", "TOKEN_UNIQUE", "TOKEN_UPDATE",
+  "TOKEN_USING", "TOKEN_VALUES", "TOKEN_VARCHAR", "TOKEN_WHEN",
+  "TOKEN_WHERE", "TOKEN_WINDOW", "TOKEN_WITH", "TOKEN_YEAR",
+  "TOKEN_YEARMONTH", "TOKEN_EOF", "TOKEN_LEX_ERROR", "';'", "'\\n'", "'('",
+  "')'", "','", "'%'", "$accept", "start", "sql_statement",
+  "quit_statement", "alter_table_statement", "create_table_statement",
+  "create_index_statement", "drop_table_statement", "column_def",
+  "column_def_commalist", "data_type", "column_constraint_def",
+  "column_constraint_def_list", "opt_column_constraint_def_list",
+  "table_constraint_def", "table_constraint_def_commalist",
+  "opt_table_constraint_def_commalist", "opt_column_list",
+  "opt_block_properties", "opt_partition_clause", "partition_type",
+  "key_value_list", "key_value", "key_string_value", "key_string_list",
+  "key_integer_value", "key_bool_value", "index_type",
+  "opt_index_properties", "insert_statement", "copy_statement",
+  "copy_to_target", "opt_copy_params", "update_statement",
   "delete_statement", "assignment_list", "assignment_item",
   "set_operation_statement", "opt_priority_clause", "with_clause",
   "with_list", "with_list_element", "set_operation_union",
@@ -909,16 +909,16 @@
      360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
      370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
      380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
-     390,    59,    10,    40,    41,    44,    37
+     390,   391,    59,    10,    40,    41,    44,    37
 };
 # endif
 
-#define YYPACT_NINF -244
+#define YYPACT_NINF -395
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-244)))
+  (!!((Yystate) == (-395)))
 
-#define YYTABLE_NINF -134
+#define YYTABLE_NINF -139
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -927,61 +927,61 @@
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     807,  -244,  -244,   -55,   203,   -26,    -2,    -6,    43,  -244,
-      86,   203,   203,  -244,   136,   125,  -244,  -244,  -244,  -244,
-    -244,  -244,  -244,  -244,  -244,  -244,   -22,    -3,   128,  -244,
-     -78,   182,   203,  -244,  -244,   130,   203,   203,   203,   203,
-     203,  -244,  -244,   633,   107,    89,  -244,   209,   120,  -244,
-    -244,  -244,   197,    -3,    86,   161,  -244,   137,  -244,  -244,
-    -244,    27,   265,   180,   141,   170,  -244,   -25,  -244,  -244,
-     301,   313,  -244,  -244,  -244,   660,   188,  -244,   249,  -244,
-    -244,   206,  -244,  -244,   357,  -244,  -244,  -244,  -244,   221,
-    -244,  -244,   222,   282,   783,   366,   299,   231,  -244,  -244,
-     272,     7,  -244,  -244,   277,  -244,  -244,  -244,  -244,  -244,
-     933,    -5,   203,   203,   237,   203,   203,  -244,   137,   374,
-    -244,   233,   239,   246,   203,   203,   551,  -244,  -244,   244,
-     203,  -244,  -244,  -244,   551,    47,    40,  -244,   376,  -244,
-     153,   153,   960,   381,  -244,     8,    24,  -244,    23,   170,
-     960,  -244,  -244,   203,   960,  -244,  -244,  -244,  -244,   960,
-      36,   313,  -244,   203,   363,    94,  -244,   378,  -244,   137,
-    -244,   144,  -244,   137,   128,  -244,   203,   -21,   203,   203,
-     248,  -244,   250,  -244,   147,  1069,   810,   237,   469,   387,
-     388,  -244,  -244,   329,   380,  1042,   152,    45,   960,    48,
-    -244,   960,  -244,   333,   257,  -244,  -244,  -244,  -244,  -244,
-    -244,   330,  -244,   168,   260,  -244,  -244,    19,    66,   146,
-    -244,   264,    66,    51,   335,  -244,  -244,     7,  -244,   304,
-    -244,  -244,   267,   960,  -244,   279,   158,   203,  -244,   960,
-    -244,   203,  -244,  -244,   270,   331,   334,   273,  -244,  -244,
-    -244,   165,   203,   290,   -21,   203,  -244,    77,  -244,  -244,
-       2,    64,   551,   551,   193,  -244,  -244,  -244,  -244,  -244,
-    -244,  -244,  -244,   960,   281,   960,    31,  -244,   162,   294,
-     960,    71,  -244,   364,   279,  -244,  -244,   960,   419,  -244,
-     110,   203,  -244,  -244,   332,  -244,   336,   337,   342,    23,
-    -244,   423,   426,    66,   392,   361,   397,   296,   343,  -244,
-     166,  -244,   960,  -244,   279,  -244,   551,   300,   302,   203,
-     437,   119,   169,  -244,   172,   421,    60,  -244,   305,   316,
-    -244,   355,   310,  1042,  -244,   368,   203,  -244,  -244,    77,
-    -244,  -244,   388,  -244,  -244,  -244,   960,   315,    95,   783,
-    -244,   279,   362,  -244,  -244,  1042,   317,   279,   960,  -244,
-      26,   -15,  -244,  -244,  -244,  -244,  -244,    23,   146,   356,
-     358,  -244,   960,   551,   365,   960,  -244,   420,   111,  -244,
-     279,     4,   203,   203,   174,  -244,  -244,  -244,  -244,  -244,
-    -244,  -244,   201,  -244,   203,  -244,  -244,  -244,  -244,   321,
-     -21,   427,   369,  -244,   551,  -244,  -244,   323,  -244,   238,
-     783,  -244,   960,   179,  -244,  -244,  1042,   279,  -244,   460,
-    -244,   384,  -244,  -244,   326,   387,   435,   394,   326,   960,
-    -244,  -244,  -244,   459,  -244,   181,   183,  -244,   480,   119,
-    -244,   203,  -244,  -244,   345,   447,  -244,     6,   203,   960,
-     185,   279,  -244,   192,   349,   551,   960,   489,   367,   353,
-    -244,   240,    12,   389,  -244,  -244,  -244,   208,  -244,  -244,
-    -244,  -244,    11,   203,    22,  -244,   359,   279,  -244,  -244,
-    -244,   387,   353,  -244,   203,  -244,   367,  -244,   960,  -244,
-    -244,   405,   404,   398,   407,   500,   203,  -244,   203,  -244,
-    -244,   203,  -244,   210,  -244,  -244,   371,  -244,   482,  -244,
-    -244,   129,  -244,  -244,  -244,  -244,    13,   373,  -244,   212,
-    -244,   203,   375,  -244,  -244,   449,   410,   454,  -244,   203,
-    -244,   214,   304,  -244,  -244,  -244,   216,   424,   383,  -244,
-     521,  -244,  -244
+     174,  -395,  -395,   -64,    85,   -26,    14,   -31,   -16,  -395,
+      40,   196,   196,  -395,   109,   102,  -395,  -395,  -395,  -395,
+    -395,  -395,  -395,  -395,  -395,  -395,   148,    -3,    87,  -395,
+     -40,   121,   196,  -395,  -395,     1,    -5,   196,   196,   196,
+     196,   196,  -395,  -395,   716,    82,     2,  -395,   153,    63,
+    -395,  -395,  -395,    98,   152,    -3,    40,   141,  -395,    98,
+    -395,  -395,  -395,    12,    97,   116,   261,   116,   169,   126,
+     138,  -395,   176,  -395,  -395,   270,   274,  -395,  -395,  -395,
+     807,   139,  -395,   210,  -395,  -395,   154,  -395,  -395,   297,
+    -395,  -395,  -395,  -395,   172,  -395,  -395,   177,   231,   901,
+     313,   265,   192,  -395,  -395,   338,    23,  -395,  -395,   243,
+    -395,  -395,  -395,  -395,  -395,  1083,    -7,   196,   196,   214,
+     196,     1,   196,  -395,    98,   363,  -395,   205,   263,  -395,
+    -395,  -395,   255,  -395,   116,  -395,   196,   196,   625,  -395,
+    -395,   262,   196,  -395,  -395,  -395,   625,    33,   -29,  -395,
+     409,  -395,   165,   165,  1174,   411,  -395,   -14,    28,  -395,
+      13,   138,  1174,  -395,  -395,   196,  1174,  -395,  -395,  -395,
+    -395,  1174,    18,   274,  -395,   196,   398,    59,  -395,   417,
+    -395,    98,  -395,   202,  -395,   116,    98,    87,  -395,   196,
+      80,   196,   196,   196,  -395,   285,  -395,   211,  1241,   992,
+     214,   534,   422,   423,  -395,  -395,   312,   415,  1252,   219,
+      43,  1174,    61,  -395,  1174,  -395,   369,   292,  -395,  -395,
+    -395,  -395,  -395,  -395,   367,  -395,   216,   294,  -395,  -395,
+       7,   186,   267,  -395,   298,   186,     3,   372,  -395,  -395,
+      23,  -395,   347,  -395,  -395,   295,  1174,  -395,   351,   229,
+     196,  -395,  1174,  -395,   196,  -395,  -395,  -395,   303,   366,
+     368,   304,  -395,  -395,  -395,   232,  -395,  -395,  -395,  -395,
+    -395,    34,   196,   323,    80,   196,  -395,   188,  -395,  -395,
+       4,    65,   625,   625,   276,  -395,  -395,  -395,  -395,  -395,
+    -395,  -395,  -395,  1174,   311,  1174,    51,  -395,   234,   326,
+    1174,    71,  -395,   399,   351,  -395,  -395,  1174,   453,  -395,
+     160,   196,  -395,  -395,   370,  -395,   373,   374,   379,    13,
+    -395,   457,   462,   186,   430,   400,   431,   329,   380,  -395,
+     236,  -395,  1174,  -395,   351,  -395,   625,   333,   334,   196,
+    -395,   196,  -395,  -395,  -395,  -395,  -395,  -395,  -395,   196,
+    -395,  -395,  -395,   238,   454,   184,  -395,   336,   348,  -395,
+     391,   342,  1252,  -395,   403,   196,  -395,  -395,   188,  -395,
+    -395,   423,  -395,  -395,  -395,  1174,   345,   341,   901,  -395,
+     351,   401,  -395,  -395,  1252,   350,   351,  1174,  -395,    37,
+      35,  -395,  -395,  -395,  -395,  -395,    13,   267,   390,   395,
+    -395,  1174,   625,   396,  1174,  -395,   455,   108,  -395,   351,
+       8,   196,   196,   240,  -395,   242,  -395,   196,  -395,  -395,
+    -395,  -395,   354,    80,   461,   402,  -395,   625,  -395,  -395,
+     356,  -395,   346,   901,  -395,  1174,   245,  -395,  -395,  1252,
+     351,  -395,   495,  -395,   408,  -395,  -395,   358,   422,   464,
+     420,   358,  1174,  -395,  -395,  -395,   490,  -395,   249,   251,
+    -395,  -395,  -395,   196,  -395,  -395,   375,   468,  -395,    19,
+     196,  1174,   264,   351,  -395,   266,   371,   625,  1174,   504,
+     376,   377,  -395,   227,    46,   405,  -395,   269,   196,    -9,
+    -395,   381,   351,  -395,  -395,  -395,   422,   377,  -395,   196,
+    -395,   376,  -395,  1174,  -395,  -395,   421,   418,   407,   425,
+     515,   196,  -395,   277,  -395,  -395,   384,  -395,   496,  -395,
+    -395,    49,  -395,  -395,  -395,  -395,    56,   386,  -395,   196,
+     388,  -395,  -395,   466,   426,   467,  -395,   196,   279,   347,
+    -395,  -395,  -395,   281,   445,   404,  -395,   539,  -395,  -395
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -989,93 +989,93 @@
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     6,   293,     0,     0,     0,     0,     0,     0,    18,
-     118,     0,     0,     7,     0,     0,    15,     8,    10,    11,
-      13,    14,     9,    17,    12,    16,     0,   107,   114,   116,
-       0,   291,     0,   285,   286,     0,     0,     0,     0,     0,
-       0,   119,   120,     0,     0,   109,   110,     0,   151,     1,
-       3,     2,     0,   107,   118,     0,   105,     0,     5,     4,
-     292,     0,     0,     0,     0,   192,    25,     0,   251,   248,
-       0,   277,   121,    40,    29,     0,     0,    30,    31,    34,
-      36,     0,    37,    39,     0,    41,   247,    35,    38,     0,
-      32,    33,     0,     0,     0,     0,     0,   122,   123,   227,
-     127,   213,   215,   217,   220,   223,   224,   225,   219,   218,
-       0,   263,     0,     0,     0,     0,     0,   106,     0,     0,
-     115,     0,     0,    94,     0,     0,     0,   101,   193,     0,
-       0,    91,   249,   250,     0,     0,   243,   240,     0,    43,
-       0,   252,     0,     0,    44,     0,     0,   254,     0,   192,
-       0,   278,   279,     0,     0,   126,   281,   282,   280,     0,
-       0,     0,   216,     0,     0,   192,   103,     0,   111,     0,
-     112,     0,   283,     0,   113,   108,     0,     0,     0,     0,
-       0,    93,    66,    27,     0,     0,     0,     0,     0,   194,
-     196,   198,   200,     0,   218,     0,     0,     0,     0,   243,
-     237,     0,   241,     0,     0,   257,   258,   259,   256,   260,
-     255,     0,   253,     0,     0,   129,   226,     0,     0,   153,
-     142,   128,   147,   130,   155,   124,   125,   212,   214,   169,
-     221,   264,     0,     0,   228,   245,     0,     0,   100,     0,
-     152,     0,    92,    19,     0,     0,     0,     0,    20,    21,
-      22,     0,     0,     0,    64,     0,    42,    56,   199,   207,
-       0,     0,     0,     0,     0,   267,   269,   270,   271,   272,
-     268,   273,   275,     0,     0,     0,     0,   261,     0,     0,
-       0,     0,   238,     0,   244,   236,    45,     0,     0,    46,
-     133,     0,   143,   149,   139,   134,   135,   137,     0,     0,
-     146,     0,     0,   145,     0,   157,     0,     0,   171,   229,
-       0,   230,     0,   102,   104,   284,     0,     0,     0,     0,
-       0,     0,     0,   265,     0,   263,     0,    63,    65,    68,
-      28,     0,     0,     0,    47,     0,     0,    49,    55,    57,
-      26,   206,   195,   197,   274,   276,     0,     0,     0,     0,
-     208,   205,     0,   204,    90,     0,     0,   242,     0,   235,
-       0,     0,   148,   150,   140,   136,   138,     0,   154,     0,
-       0,   144,     0,     0,   159,     0,   222,     0,   173,   231,
-     246,     0,     0,     0,     0,    96,   289,   290,   288,   287,
-      97,    95,     0,    67,     0,    83,    84,    85,    86,    87,
-       0,     0,    70,    48,     0,    51,    50,     0,    54,     0,
-       0,   210,     0,     0,   203,   262,     0,   239,   232,     0,
-     233,     0,   131,   132,   156,   158,     0,   161,   170,     0,
-     176,   175,   168,     0,    61,     0,     0,    58,     0,     0,
-     266,     0,    24,    62,     0,     0,    23,     0,     0,     0,
-       0,   201,   209,     0,     0,     0,     0,     0,   163,   172,
-     183,   186,     0,     0,    59,    98,    99,     0,    74,    76,
-      77,    78,     0,     0,     0,    52,     0,   202,   211,    89,
-     234,   141,   160,   162,     0,   117,   164,   165,     0,   187,
-     188,   189,     0,     0,     0,     0,     0,    88,     0,    82,
-      80,     0,    79,     0,    72,    73,     0,    53,     0,   166,
-     184,     0,   185,   177,   179,   178,     0,     0,    75,     0,
-      69,     0,     0,   190,   191,     0,     0,     0,   174,     0,
-      81,     0,   169,   180,   182,   181,     0,     0,     0,    60,
-       0,   167,    71
+       0,     6,   298,     0,     0,     0,     0,     0,     0,    18,
+     123,     0,     0,     7,     0,     0,    15,     8,    10,    11,
+      13,    14,     9,    17,    12,    16,     0,   112,   119,   121,
+       0,   296,     0,   290,   291,     0,     0,     0,     0,     0,
+       0,     0,   124,   125,     0,     0,   114,   115,     0,   156,
+       1,     3,     2,     0,     0,   112,   123,     0,   110,     0,
+       5,     4,   297,     0,     0,   103,     0,   103,     0,     0,
+     197,    25,     0,   256,   253,     0,   282,   126,    40,    29,
+       0,     0,    30,    31,    34,    36,     0,    37,    39,     0,
+      41,   252,    35,    38,     0,    32,    33,     0,     0,     0,
+       0,     0,   127,   128,   232,   132,   218,   220,   222,   225,
+     228,   229,   230,   224,   223,     0,   268,     0,     0,     0,
+       0,     0,     0,   111,     0,     0,   120,     0,     0,   100,
+     102,   101,     0,    98,   103,    97,     0,     0,     0,   106,
+     198,     0,     0,    94,   254,   255,     0,     0,   248,   245,
+       0,    43,     0,   257,     0,     0,    44,     0,     0,   259,
+       0,   197,     0,   283,   284,     0,     0,   131,   286,   287,
+     285,     0,     0,     0,   221,     0,     0,   197,   108,     0,
+     116,     0,   117,     0,   288,   103,     0,   118,   113,     0,
+       0,     0,     0,     0,    96,    66,    27,     0,     0,     0,
+       0,     0,   199,   201,   203,   205,     0,   223,     0,     0,
+       0,     0,   248,   242,     0,   246,     0,     0,   262,   263,
+     264,   261,   265,   260,     0,   258,     0,     0,   134,   231,
+       0,     0,   158,   147,   133,   152,   135,   160,   129,   130,
+     217,   219,   174,   226,   269,     0,     0,   233,   250,     0,
+       0,   105,     0,   157,     0,    99,    95,    19,     0,     0,
+       0,     0,    20,    21,    22,     0,    74,    76,    77,    78,
+      79,     0,     0,     0,    64,     0,    42,    56,   204,   212,
+       0,     0,     0,     0,     0,   272,   274,   275,   276,   277,
+     273,   278,   280,     0,     0,     0,     0,   266,     0,     0,
+       0,     0,   243,     0,   249,   241,    45,     0,     0,    46,
+     138,     0,   148,   154,   144,   139,   140,   142,     0,     0,
+     151,     0,     0,   150,     0,   162,     0,     0,   176,   234,
+       0,   235,     0,   107,   109,   289,     0,     0,     0,     0,
+     104,     0,    81,    84,    82,   294,   295,   293,   292,     0,
+      80,    85,   270,     0,   268,     0,    63,    65,    68,    28,
+       0,     0,     0,    47,     0,     0,    49,    55,    57,    26,
+     211,   200,   202,   279,   281,     0,     0,     0,     0,   213,
+     210,     0,   209,    93,     0,     0,   247,     0,   240,     0,
+       0,   153,   155,   145,   141,   143,     0,   159,     0,     0,
+     149,     0,     0,   164,     0,   227,     0,   178,   236,   251,
+       0,     0,     0,     0,    75,     0,    67,     0,    86,    87,
+      88,    89,    90,     0,     0,    70,    48,     0,    51,    50,
+       0,    54,     0,     0,   215,     0,     0,   208,   267,     0,
+     244,   237,     0,   238,     0,   136,   137,   161,   163,     0,
+     166,   175,     0,   181,   180,   173,     0,    61,     0,     0,
+      58,    83,   271,     0,    24,    62,     0,     0,    23,     0,
+       0,     0,     0,   206,   214,     0,     0,     0,     0,     0,
+     168,   177,   188,   191,     0,     0,    59,     0,     0,     0,
+      52,     0,   207,   216,    92,   239,   146,   165,   167,     0,
+     122,   169,   170,     0,   192,   193,   194,     0,     0,     0,
+       0,     0,    91,     0,    72,    73,     0,    53,     0,   171,
+     189,     0,   190,   182,   184,   183,     0,     0,    69,     0,
+       0,   195,   196,     0,     0,     0,   179,     0,     0,   174,
+     185,   187,   186,     0,     0,     0,    60,     0,   172,    71
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -244,  -244,  -244,  -244,  -244,  -244,  -244,  -244,  -132,  -244,
-     346,   191,  -244,  -244,  -243,  -244,  -244,  -244,  -244,  -244,
-    -244,    59,    35,  -244,  -244,  -244,  -244,  -244,  -244,  -244,
-    -244,  -244,  -244,  -244,  -244,   303,  -244,   483,  -244,  -244,
-     428,   200,   425,    -8,   485,  -244,  -244,   395,  -244,   -98,
-    -244,  -244,  -165,   175,  -179,   -10,  -244,  -244,  -244,  -244,
-    -244,  -244,  -244,    58,     5,  -244,  -244,  -244,  -244,  -244,
-    -244,    90,    61,  -244,  -244,    39,  -244,  -133,   285,   287,
-     379,   -37,   400,   403,   438,  -144,  -244,  -244,  -244,  -244,
-     352,  -244,   430,   360,  -212,  -186,   429,   148,  -121,  -244,
-    -244,  -244,  -244,  -244,  -127,    -4,   132,  -244,  -244
+    -395,  -395,  -395,  -395,  -395,  -395,  -395,  -395,  -164,  -395,
+     349,   180,  -395,  -395,  -271,  -395,  -395,  -395,  -395,  -395,
+    -395,  -394,   209,  -395,  -395,  -395,  -395,  -395,  -395,  -395,
+    -395,    24,   -46,  -395,  -395,  -395,   301,  -395,   497,  -395,
+    -395,   435,   259,   433,   -28,   498,  -395,  -395,   397,  -395,
+     -90,  -395,  -395,  -207,   162,  -187,   -10,  -395,  -395,  -395,
+    -395,  -395,  -395,  -395,    60,    21,  -395,  -395,  -395,  -395,
+    -395,  -395,    84,    62,  -395,  -395,   -54,  -395,  -145,   282,
+     280,   382,   -35,   406,   412,   451,  -156,  -395,  -395,  -395,
+    -395,   355,  -395,   427,   359,  -232,  -203,   429,   129,  -128,
+    -395,  -395,  -395,  -395,  -395,  -136,    -4,  -395,  -395,  -395
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    14,    15,    16,    17,    18,    19,    20,   183,   184,
-      95,   338,   339,   340,   248,   328,   329,   253,   402,   446,
-     506,   467,   468,   469,   470,   471,   399,   442,    21,    22,
-     181,   322,    23,    24,   165,   166,    25,    56,    26,    45,
-      46,   145,    28,    29,    43,    96,    97,    98,   149,    99,
-     303,   298,   219,   220,   292,   293,   221,   305,   374,   427,
-     458,   485,   486,   487,   307,   308,   378,   432,   433,   495,
-     528,   459,   460,   491,   512,   127,   128,   189,   190,   191,
-     192,   193,   101,   102,   103,   104,   105,   106,   107,   199,
-     200,   136,   137,   203,   236,   108,   211,   278,   109,   324,
-     275,   110,   154,   159,   171,   111,   390,    30,    31
+      -1,    14,    15,    16,    17,    18,    19,    20,   196,   197,
+     100,   367,   368,   369,   262,   357,   358,   273,   425,   468,
+     516,   265,   266,   267,   268,   269,   270,   422,   464,    21,
+      22,    65,   133,    23,    24,   177,   178,    25,    58,    26,
+      46,    47,   157,    28,    29,    44,   101,   102,   103,   161,
+     104,   323,   318,   232,   233,   312,   313,   234,   325,   403,
+     450,   480,   500,   501,   502,   327,   328,   407,   455,   456,
+     510,   536,   481,   482,   506,   522,   139,   140,   202,   203,
+     204,   205,   206,   106,   107,   108,   109,   110,   111,   112,
+     212,   213,   148,   149,   216,   249,   113,   224,   298,   114,
+     353,   295,   115,   166,   171,   183,   116,   351,    30,    31
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1083,348 +1083,386 @@
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      35,   197,    47,   196,   222,   194,   100,    44,    48,   277,
-     262,   327,   262,   194,   262,    33,   170,    34,   499,   492,
-     525,   310,   163,    33,   244,    34,    54,    33,    61,    34,
-     156,   157,    63,    64,    65,    66,    67,    54,   135,   500,
-      33,   352,    34,   300,   243,   151,   152,   151,   152,   120,
-     218,   245,   290,   262,    36,   260,   419,   146,   121,   131,
-      52,    58,   493,   526,    59,   194,    32,   194,   151,   152,
-      33,    38,    34,   222,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   246,   151,   152,   331,   122,   259,
-     301,    10,   151,   152,    10,    37,   155,   395,   504,   291,
-     396,   397,   201,    47,   412,   213,   129,   247,   167,    48,
-     201,   172,   173,   100,    41,    39,   151,   152,   130,   218,
-     182,   185,   332,   330,   371,   353,   172,   235,    40,   420,
-     505,   323,   333,    55,   368,    10,    49,   413,   164,   494,
-     527,   194,   194,   274,   223,    42,   341,   405,   434,   226,
-     475,   261,   215,   158,   501,   222,   230,   443,    57,   231,
-     424,   281,   217,   428,   284,   242,   217,   280,   216,   415,
-     418,   334,   185,   134,   249,   250,   350,   302,   398,   229,
-     198,   198,   335,   381,   294,    60,   386,   336,   224,   151,
-     152,   295,   384,   358,   164,   194,   235,   523,   450,   296,
-      27,   218,   314,    62,   238,   337,   205,    33,   216,    34,
-     344,   345,   346,   223,    48,   387,   388,   524,    48,   430,
-     294,   297,   320,   222,   112,   431,    53,   295,   126,   321,
-     277,   206,  -133,   167,   113,   296,   348,   315,   351,   237,
-     425,   288,   114,   357,   389,   207,   208,   449,   325,   411,
-     360,   185,   194,    10,   362,   435,   436,   297,   438,   151,
-     152,   151,   152,   115,    50,   439,    51,   119,   209,   218,
-     123,   447,   347,   440,   489,   380,    33,   124,    34,   176,
-     177,   363,   116,   194,   125,   178,   179,    48,   240,   241,
-     210,   254,   255,   151,   152,   223,   279,   241,   490,    48,
-     151,   152,   311,   312,   126,   153,   354,   355,   132,   409,
-     379,   312,   235,   391,   392,   172,   393,   394,   437,   241,
-     133,   417,   481,   452,   312,   463,   241,   464,   241,   478,
-     312,   138,   407,   139,   194,   235,   479,   355,   235,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   140,
-     151,   152,   497,   498,   520,   498,   530,   241,   537,   241,
-     539,   241,   141,   223,   142,   143,   144,    33,    68,    34,
-      69,   147,   148,   235,   519,   451,   150,   160,   172,   172,
-     169,   175,   180,   204,    70,    71,   232,   195,   214,   239,
-     325,   251,   461,   252,   531,   262,   285,   263,    73,    74,
-     276,   286,   536,   287,   289,   306,    75,    76,   274,   299,
-     304,   309,   477,   316,    77,    78,   319,    79,   317,   461,
-     326,   318,   233,    80,   349,   356,   361,   359,   367,    81,
-     369,   364,    82,   370,   372,   365,   366,   472,   373,   375,
-     376,   377,   385,   382,   476,   383,    83,    84,   163,   403,
-     400,   461,   401,   404,    85,   406,   414,    86,   410,   422,
-     416,   423,   429,   426,   441,   444,   448,   454,   502,   472,
-     445,   312,    87,    33,    68,    34,    69,   456,   462,   186,
-     508,   455,    88,    89,   457,   465,    90,    91,   473,   474,
-      70,    71,   517,   480,   472,    92,   483,   172,   488,   496,
-     511,    93,   484,   507,    73,    74,    94,   234,   513,   516,
-     514,   515,    75,    76,   521,   522,   529,   172,   532,   533,
-      77,    78,   534,    79,   535,   172,   540,   541,   542,    80,
-     408,   257,   503,   518,   187,    81,   117,   538,    82,   118,
-     313,   168,   421,   174,   509,   225,   482,   342,   162,   510,
-     343,   282,    83,    84,   227,    33,    68,    34,    69,   283,
-      85,   186,   228,    86,   453,   258,   202,     0,     0,     0,
-     212,   466,    70,    71,     0,     0,     0,     0,    87,     0,
-       0,     0,     0,     0,     0,    10,    73,    74,    88,    89,
-       0,     0,    90,    91,    75,    76,     0,     0,     0,     0,
-       0,    92,    77,    78,     0,    79,     0,    93,     0,     0,
-       0,    80,   188,     0,     0,     0,   187,    81,     0,     0,
-      82,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    83,    84,     0,    33,    68,    34,
-      69,     0,    85,     0,     0,    86,     0,     0,     0,     0,
-       0,     0,     0,     0,    70,    71,    72,     0,     0,     0,
-      87,     0,     0,     0,    33,    68,    34,    69,    73,    74,
-      88,    89,     0,     0,    90,    91,    75,    76,     0,     0,
-       0,    70,    71,    92,    77,    78,     0,    79,     0,    93,
-       0,     0,     0,    80,   188,    73,    74,     0,     0,    81,
-       0,     0,    82,    75,    76,     0,     0,     0,     0,     0,
-       0,    77,    78,     0,    79,     0,    83,    84,     0,     0,
-      80,     0,     0,     0,    85,     0,    81,    86,     0,    82,
+      36,   210,    48,   356,   235,   297,   209,    45,    49,   105,
+     207,    33,   282,    34,   330,    56,   282,    33,   207,    34,
+     175,   135,    33,   310,    34,   257,    56,   282,    63,   182,
+      56,   126,   214,    68,    69,    70,    71,    72,    33,   342,
+      34,   343,   321,   127,   143,   147,   168,   169,   320,   163,
+     164,   282,    37,   507,   163,   164,   280,    32,   163,   164,
+      67,   381,   344,   533,   158,   514,    66,    41,    42,   487,
+     231,   207,   128,   207,   235,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,    39,   163,   164,   194,    33,
+      40,    34,   163,   164,   513,    38,   508,   515,    43,   345,
+      60,   167,   129,    61,   442,   146,   534,   237,    48,    50,
+     279,   359,   397,   179,    49,   531,   184,    59,   186,   226,
+      64,    10,   214,   251,    62,   258,    64,   105,   346,   347,
+     322,   228,   195,   198,    57,   532,   400,   176,   184,   255,
+     231,   248,   294,   382,   352,   185,   436,   176,   118,   370,
+     259,   230,   465,   457,   207,   207,   236,   230,   256,   428,
+     348,   239,   242,   235,   490,   300,   281,   211,   243,   447,
+     170,   244,   451,   229,   509,     1,   301,     2,   349,   304,
+     443,   438,   441,   260,   535,   198,   119,   263,   264,   271,
+      33,   410,    34,   387,   138,   211,    53,   117,   360,    10,
+      33,   472,    34,   413,   379,   250,     3,   120,   207,   261,
+     229,   248,    10,   415,   453,   130,   131,   334,   218,   311,
+     454,   418,     4,     5,   419,   420,   236,    49,    54,   231,
+       6,    49,   314,   361,     7,   122,   297,   163,   164,   315,
+     235,   219,    51,   362,    52,   125,   179,   316,   163,   164,
+     335,   189,   190,   132,     8,   220,   221,   448,   377,    27,
+     380,   504,    10,    35,   136,   386,   134,   350,   354,   317,
+     137,   198,   389,   138,   207,   458,   459,   144,   222,     9,
+     363,   145,   469,   150,   505,    55,   434,   308,    10,   462,
+      10,   364,   151,   373,   374,   375,   365,   409,   152,   207,
+     421,   392,   153,   223,    11,   391,   231,    49,   141,   191,
+     192,    12,   121,   156,    13,   236,   154,   366,   159,    49,
+     142,   155,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   496,   163,   164,   184,   160,   271,   162,   314,
+     432,   172,    33,   248,    34,   184,   315,   253,   254,   207,
+     435,  -138,   440,   376,   316,   471,   274,   275,   181,   163,
+     164,   430,   163,   164,   299,   254,   248,   163,   164,   248,
+     188,   165,   163,   164,   331,   332,   317,   340,   341,   383,
+     384,   408,   332,   416,   417,   460,   254,   461,   254,   294,
+     474,   332,   236,   538,   485,   254,   486,   254,   248,   193,
+     473,   543,    33,    73,    34,    74,   208,   184,   184,   493,
+     332,   494,   384,   354,   512,   341,   217,   483,   227,    75,
+      76,   245,   528,   341,   544,   254,   546,   254,   252,   272,
+     282,   305,   283,    78,    79,   296,   492,   306,   307,   309,
+     329,    80,    81,   483,   319,   324,   326,   336,   339,    82,
+      83,   337,    84,   338,   355,   378,   246,    85,   385,   271,
+     390,   388,    86,   396,   398,    87,   491,   393,   483,   399,
+     394,   395,   401,   404,   405,   402,   406,   411,   412,    88,
+      89,   175,   423,   426,   271,   424,   427,    90,   429,   433,
+      91,   445,   449,   437,   439,   518,   446,   452,   463,   466,
+     470,   467,   476,   477,   332,    92,   478,   527,   479,   484,
+     489,   498,   499,   511,   521,    93,   495,   524,    94,   488,
+     523,    95,    96,   503,   526,   184,   517,   525,   529,   530,
+     537,    97,   539,   184,   540,   542,   541,    98,    33,    73,
+      34,    74,    99,   247,   199,   547,   549,   277,   431,   548,
+     414,   333,   123,   180,   124,    75,    76,   187,   444,   238,
+     545,   519,   497,   372,   371,   520,   174,   302,   475,    78,
+      79,   303,   240,     0,     0,   215,     0,    80,    81,     0,
+       0,   278,   225,   241,     0,    82,    83,     0,    84,     0,
+       0,     0,     0,    85,     0,     0,     0,   200,    86,     0,
+       0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    88,    89,     0,     0,     0,
+       0,     0,     0,    90,     0,     0,    91,     0,     0,    33,
+      73,    34,    74,     0,     0,   199,     0,     0,     0,     0,
+       0,    92,     0,     0,     0,     0,    75,    76,    10,     0,
+       0,    93,     0,     0,    94,     0,     0,    95,    96,     0,
+      78,    79,     0,     0,     0,     0,     0,    97,    80,    81,
+       0,     0,     0,    98,     0,     0,    82,    83,   201,    84,
+       0,     0,     0,     0,    85,     0,     0,     0,   200,    86,
+       0,     0,    87,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    88,    89,     0,     0,
+       0,     0,     0,     0,    90,     0,     0,    91,     0,     0,
+      33,    73,    34,    74,     0,     0,     0,     0,     0,     0,
+       0,     0,    92,     0,     0,     0,     0,    75,    76,    77,
+       0,     0,    93,     0,     0,    94,     0,     0,    95,    96,
+       0,    78,    79,     0,     0,     0,     0,     0,    97,    80,
+      81,     0,     0,     0,    98,     0,     0,    82,    83,   201,
+      84,     0,     0,     0,     0,    85,     0,     0,     0,     0,
+      86,     0,     0,    87,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    88,    89,     0,
+       0,     0,     0,     0,     0,    90,     0,     0,    91,     0,
+       0,    33,    73,    34,    74,     0,     0,     0,     0,     0,
+       0,     0,     0,    92,     0,     0,     0,     0,    75,    76,
+       0,     0,     0,    93,     0,     0,    94,     0,     0,    95,
+      96,     0,    78,    79,     0,     0,     0,     0,     0,    97,
+      80,    81,     0,     0,     0,    98,     0,     0,    82,    83,
+      99,    84,     0,     0,     0,     0,    85,     0,     0,     0,
+       0,    86,     0,     0,    87,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    88,    89,
+       0,     0,     0,     0,     0,     0,    90,     0,     0,    91,
+       0,     0,     0,     0,     0,    33,    73,    34,    74,     0,
+       0,     0,     0,     0,    92,     0,     0,     0,     0,     0,
+       0,     0,    75,    76,    93,     0,     0,    94,     0,     0,
+      95,    96,     0,     0,     0,     0,    78,    79,     0,     0,
+      97,   146,     0,     0,    80,    81,    98,     0,     0,     0,
+       0,    99,    82,    83,     0,    84,     0,     0,     0,     0,
+      85,     0,     0,     0,     0,    86,     0,     0,    87,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    87,    83,    84,     0,     0,     0,     0,     0,
-       0,    85,    88,    89,    86,     0,    90,    91,     0,     0,
-       0,     0,     0,     0,     0,    92,     0,     0,     0,    87,
-       0,    93,     0,     0,     0,     0,    94,     0,     0,    88,
-      89,     0,     0,    90,    91,     0,     0,    33,    68,    34,
-      69,     0,    92,   134,     0,     0,     0,     0,    93,     0,
-       0,     0,     0,    94,    70,    71,     0,     0,     1,     0,
-       2,     0,     0,     0,    33,    68,    34,    69,    73,    74,
-       0,     0,     0,     0,     0,     0,    75,    76,     0,     0,
-       0,    70,    71,     0,    77,    78,     0,    79,     0,     3,
-       0,     0,     0,    80,     0,    73,    74,     0,     0,    81,
-       0,     0,    82,    75,    76,     4,     5,     0,     0,     0,
-       0,    77,    78,     6,    79,     0,    83,    84,     7,     0,
-      80,     0,     0,     0,    85,   187,    81,    86,     0,    82,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     8,
-       0,     0,    87,    83,    84,     0,     0,     0,     0,    10,
-       0,    85,    88,    89,    86,     0,    90,    91,     0,     0,
-       0,     0,     0,     0,     9,    92,     0,     0,     0,    87,
-       0,    93,     0,    10,     0,     0,    94,     0,     0,    88,
-      89,     0,     0,    90,    91,     0,    11,    33,    68,    34,
-      69,     0,    92,    12,     0,     0,    13,     0,    93,     0,
-       0,     0,     0,   188,    70,   161,     0,     0,     0,     0,
-       0,     0,     0,     0,    33,    68,    34,    69,    73,    74,
-       0,     0,     0,     0,     0,     0,    75,    76,     0,     0,
-       0,    70,    71,     0,    77,    78,     0,    79,     0,     0,
-       0,     0,     0,    80,     0,    73,    74,     0,     0,    81,
-       0,     0,    82,    75,    76,     0,     0,     0,     0,     0,
-       0,    77,    78,     0,    79,     0,    83,    84,     0,     0,
-      80,     0,     0,     0,    85,     0,    81,    86,     0,    82,
+       0,     0,    88,    89,     0,     0,     0,     0,     0,     0,
+      90,     0,     0,    91,     0,     0,    33,    73,    34,    74,
+       0,     0,     0,     0,     0,     0,     0,     0,    92,     0,
+       0,     0,     0,    75,    76,    10,     0,     0,    93,     0,
+       0,    94,     0,     0,    95,    96,     0,    78,    79,     0,
+       0,     0,     0,     0,    97,    80,    81,     0,     0,     0,
+      98,     0,     0,    82,    83,    99,    84,     0,     0,     0,
+       0,    85,     0,     0,     0,   200,    86,     0,     0,    87,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    87,    83,    84,     0,     0,    68,     0,    69,
-       0,    85,    88,    89,    86,     0,    90,    91,     0,     0,
-       0,     0,     0,    70,   161,    92,     0,     0,     0,    87,
-       0,    93,     0,     0,     0,     0,    94,    73,    74,    88,
-      89,     0,     0,    90,    91,     0,    76,     0,     0,     0,
-       0,     0,    92,    77,    78,     0,    79,     0,    93,     0,
-       0,     0,    80,    94,    73,    74,     0,     0,     0,     0,
-       0,    82,     0,    76,     0,     0,     0,     0,     0,     0,
-      77,    78,     0,    79,     0,    83,    84,     0,     0,    80,
-       0,     0,     0,    85,     0,     0,    86,     0,    82,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    87,    83,   256,     0,     0,     0,     0,     0,     0,
-      85,    88,     0,     0,     0,    90,    91,     0,     0,     0,
-       0,     0,     0,     0,    92,     0,     0,     0,    87,     0,
-      93,     0,     0,     0,     0,     0,     0,     0,    88,     0,
-       0,     0,    90,    91,     0,     0,     0,     0,     0,     0,
-       0,    92,     0,     0,     0,     0,     0,    93
+       0,     0,     0,    88,    89,     0,     0,     0,     0,     0,
+       0,    90,     0,     0,    91,     0,     0,    33,    73,    34,
+      74,     0,     0,     0,     0,     0,     0,     0,     0,    92,
+       0,     0,     0,     0,    75,   173,     0,     0,     0,    93,
+       0,     0,    94,     0,     0,    95,    96,     0,    78,    79,
+       0,     0,     0,     0,     0,    97,    80,    81,     0,     0,
+       0,    98,     0,     0,    82,    83,   201,    84,     0,     0,
+       0,     0,    85,     0,     0,     0,     0,    86,     0,     0,
+      87,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    88,    89,     0,     0,     0,     0,
+       0,     0,    90,     0,     0,    91,     0,     0,    33,    73,
+      34,    74,     0,     0,     0,     0,     0,     0,     0,     0,
+      92,     0,     0,     0,     0,    75,    76,     0,     0,     0,
+      93,     0,     0,    94,     0,     0,    95,    96,     0,    78,
+      79,     0,     0,     0,     0,     0,    97,    80,    81,     0,
+       0,     0,    98,     0,     0,    82,    83,    99,    84,     0,
+       0,     0,     0,    85,     0,     0,     0,     0,    86,     0,
+       0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    88,    89,    73,     0,    74,
+       0,     0,     0,    90,     0,     0,    91,     0,     0,     0,
+       0,     0,     0,    75,   173,     0,    78,    79,     0,     0,
+       0,    92,     0,     0,     0,    81,     0,    78,    79,     0,
+       0,    93,    82,    83,    94,    84,    81,    95,    96,     0,
+      85,     0,     0,    82,    83,     0,    84,    97,    87,     0,
+       0,    85,     0,    98,     0,     0,     0,     0,    99,    87,
+       0,     0,    88,   276,     0,     0,     0,     0,     0,     0,
+      90,     0,     0,    88,    89,     0,     0,     0,     0,     0,
+       0,    90,     0,     0,    91,     0,     0,     0,    92,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    93,    92,
+       0,     0,     0,     0,    95,    96,     0,     0,     0,    93,
+       0,     0,     0,     0,    97,    95,    96,     0,     0,     0,
+      98,     0,     0,     0,     0,    97,     0,     0,     0,     0,
+       0,    98
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,   134,    12,   130,   148,   126,    43,    11,    12,   195,
-       8,   254,     8,   134,     8,     4,   114,     6,     7,     7,
-       7,   233,    27,     4,    45,     6,    29,     4,    32,     6,
-      23,    24,    36,    37,    38,    39,    40,    29,    75,    28,
-       4,    10,     6,   222,   176,    21,    22,    21,    22,    57,
-     148,    72,   217,     8,    80,   188,    71,    94,    31,    67,
-      82,   139,    50,    50,   142,   186,   121,   188,    21,    22,
-       4,    73,     6,   217,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,   105,    21,    22,    10,    61,   187,
-      39,   116,    21,    22,   116,   121,   100,    37,    76,    33,
-      40,    41,    62,   113,     9,   142,   131,   128,   112,   113,
-      62,   115,   116,   150,    28,   121,    21,    22,   143,   217,
-     124,   125,    45,   255,   303,    94,   130,   164,    85,   144,
-     108,   252,    55,   136,   299,   116,     0,   349,   143,   127,
-     127,   262,   263,    79,   148,    59,   144,   333,   144,   153,
-     144,   188,   144,   146,   143,   299,   160,   400,    30,   163,
-     372,   198,   143,   375,   201,   173,   143,   122,   144,   355,
-     144,    94,   176,   133,   178,   179,   274,   126,   118,   143,
-     133,   133,   105,   316,    74,     3,    67,   110,   149,    21,
-      22,    81,   319,   122,   143,   316,   233,    68,   410,    89,
-       0,   299,   239,    73,   165,   128,    53,     4,   144,     6,
-      17,    18,    19,   217,   218,    96,    97,    88,   222,   108,
-      74,   111,    57,   367,   117,   114,    26,    81,   134,    64,
-     416,    78,    86,   237,   145,    89,   273,   241,   275,   145,
-     373,    73,    33,   280,   125,    92,    93,     9,   252,   347,
-     287,   255,   373,   116,   144,   382,   383,   111,    57,    21,
-      22,    21,    22,   143,   139,    64,   141,   106,   115,   367,
-       5,   404,    79,   394,    34,   312,     4,    97,     6,    46,
-      47,   291,    85,   404,   143,    46,    47,   291,   144,   145,
-     137,   144,   145,    21,    22,   299,   144,   145,    58,   303,
-      21,    22,   144,   145,   134,    33,   144,   145,     7,   346,
-     144,   145,   349,   144,   145,   319,   144,   145,   144,   145,
-       7,   358,   455,   144,   145,   144,   145,   144,   145,   144,
-     145,   143,   336,    84,   455,   372,   144,   145,   375,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,   143,
-      21,    22,   144,   145,   144,   145,   144,   145,   144,   145,
-     144,   145,     5,   367,   143,   143,    84,     4,     5,     6,
-       7,     5,    73,   410,   501,   412,   145,   100,   382,   383,
-     143,     7,   136,     7,    21,    22,    23,   143,     7,    11,
-     394,   143,   429,   143,   521,     8,    63,     9,    35,    36,
-      20,   144,   529,    73,   144,   101,    43,    44,    79,   145,
-      75,   144,   449,   143,    51,    52,   143,    54,    87,   456,
-     130,    87,    59,    60,   143,   131,     7,    63,    86,    66,
-       7,    99,    69,     7,    42,    99,    99,   441,    77,    42,
-     144,    98,     5,   143,   448,   143,    83,    84,    27,    94,
-     145,   488,   136,   143,    91,    87,    94,    94,   143,   103,
-     143,   103,    42,    98,   143,    38,   143,     7,   472,   473,
-     101,   145,   109,     4,     5,     6,     7,    42,    19,    10,
-     484,    97,   119,   120,    90,     5,   123,   124,   143,    42,
-      21,    22,   496,   144,   498,   132,     7,   501,   145,   110,
-      95,   138,   135,   144,    35,    36,   143,   144,   104,     9,
-     112,   104,    43,    44,   143,    33,   143,   521,   143,    70,
-      51,    52,   112,    54,    70,   529,   102,   144,     7,    60,
-     339,   185,   473,   498,    65,    66,    53,   532,    69,    54,
-     237,   113,   367,   118,   486,   150,   456,   262,   110,   488,
-     263,   199,    83,    84,   154,     4,     5,     6,     7,   199,
-      91,    10,   159,    94,   416,   186,   136,    -1,    -1,    -1,
-     141,   439,    21,    22,    -1,    -1,    -1,    -1,   109,    -1,
-      -1,    -1,    -1,    -1,    -1,   116,    35,    36,   119,   120,
-      -1,    -1,   123,   124,    43,    44,    -1,    -1,    -1,    -1,
-      -1,   132,    51,    52,    -1,    54,    -1,   138,    -1,    -1,
-      -1,    60,   143,    -1,    -1,    -1,    65,    66,    -1,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    83,    84,    -1,     4,     5,     6,
-       7,    -1,    91,    -1,    -1,    94,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    21,    22,    23,    -1,    -1,    -1,
-     109,    -1,    -1,    -1,     4,     5,     6,     7,    35,    36,
-     119,   120,    -1,    -1,   123,   124,    43,    44,    -1,    -1,
-      -1,    21,    22,   132,    51,    52,    -1,    54,    -1,   138,
-      -1,    -1,    -1,    60,   143,    35,    36,    -1,    -1,    66,
-      -1,    -1,    69,    43,    44,    -1,    -1,    -1,    -1,    -1,
-      -1,    51,    52,    -1,    54,    -1,    83,    84,    -1,    -1,
-      60,    -1,    -1,    -1,    91,    -1,    66,    94,    -1,    69,
+       4,   146,    12,   274,   160,   208,   142,    11,    12,    44,
+     138,     4,     8,     6,   246,    29,     8,     4,   146,     6,
+      27,    67,     4,   230,     6,   189,    29,     8,    32,   119,
+      29,    59,    61,    37,    38,    39,    40,    41,     4,     5,
+       6,     7,    39,    31,    72,    80,    23,    24,   235,    21,
+      22,     8,    78,     7,    21,    22,   201,   121,    21,    22,
+      36,    10,    28,     7,    99,    74,    71,    83,    28,   463,
+     160,   199,    60,   201,   230,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    71,    21,    22,   134,     4,
+     121,     6,    21,    22,   488,   121,    50,   106,    58,    65,
+     140,   105,     5,   143,    69,   134,    50,   161,   118,     0,
+     200,   275,   319,   117,   118,    66,   120,    30,   122,   154,
+     125,   114,    61,   177,     3,    45,   125,   162,    94,    95,
+     127,   145,   136,   137,   137,    86,   323,   144,   142,   185,
+     230,   176,    77,    92,   272,   121,   378,   144,   146,   145,
+      70,   144,   423,   145,   282,   283,   160,   144,   186,   362,
+     126,   165,   144,   319,   145,   122,   201,   134,   172,   401,
+     147,   175,   404,   145,   128,     1,   211,     3,   144,   214,
+     145,   384,   145,   103,   128,   189,    33,   191,   192,   193,
+       4,   336,     6,   122,   135,   134,    48,   115,    10,   114,
+       4,   433,     6,   339,   294,   146,    32,   144,   336,   129,
+     145,   246,   114,   349,   106,   118,   119,   252,    53,    33,
+     112,    37,    48,    49,    40,    41,   230,   231,    80,   319,
+      56,   235,    72,    45,    60,    83,   439,    21,    22,    79,
+     396,    76,   140,    55,   142,   104,   250,    87,    21,    22,
+     254,    46,    47,   137,    80,    90,    91,   402,   293,     0,
+     295,    34,   114,     4,    95,   300,     5,   271,   272,   109,
+     144,   275,   307,   135,   402,   411,   412,     7,   113,   105,
+      92,     7,   427,   144,    57,    26,   376,    71,   114,   417,
+     114,   103,    82,    17,    18,    19,   108,   332,   144,   427,
+     116,   311,     5,   138,   130,   145,   396,   311,   132,    46,
+      47,   137,    53,    82,   140,   319,   144,   129,     5,   323,
+     144,   144,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,   477,    21,    22,   339,    71,   341,   146,    72,
+     375,    98,     4,   378,     6,   349,    79,   145,   146,   477,
+       9,    84,   387,    77,    87,     9,   145,   146,   144,    21,
+      22,   365,    21,    22,   145,   146,   401,    21,    22,   404,
+       7,    33,    21,    22,   145,   146,   109,   145,   146,   145,
+     146,   145,   146,   145,   146,   145,   146,   145,   146,    77,
+     145,   146,   396,   529,   145,   146,   145,   146,   433,   144,
+     435,   537,     4,     5,     6,     7,   144,   411,   412,   145,
+     146,   145,   146,   417,   145,   146,     7,   452,     7,    21,
+      22,    23,   145,   146,   145,   146,   145,   146,    11,   144,
+       8,    62,     9,    35,    36,    20,   471,   145,    71,   145,
+     145,    43,    44,   478,   146,    73,    99,   144,   144,    51,
+      52,    85,    54,    85,   131,   144,    58,    59,   132,   463,
+       7,    62,    64,    84,     7,    67,   470,    97,   503,     7,
+      97,    97,    42,    42,   145,    75,    96,   144,   144,    81,
+      82,    27,   146,    92,   488,   137,   144,    89,    85,   144,
+      92,   101,    96,    92,   144,   499,   101,    42,   144,    38,
+     144,    99,     7,    95,   146,   107,    42,   511,    88,    19,
+      42,     7,   136,   108,    93,   117,   145,   110,   120,   144,
+     102,   123,   124,   146,     9,   529,   145,   102,   144,    33,
+     144,   133,   144,   537,    68,    68,   110,   139,     4,     5,
+       6,     7,   144,   145,    10,   100,     7,   198,   368,   145,
+     341,   250,    55,   118,    56,    21,    22,   124,   396,   162,
+     539,   501,   478,   283,   282,   503,   115,   212,   439,    35,
+      36,   212,   166,    -1,    -1,   148,    -1,    43,    44,    -1,
+      -1,   199,   153,   171,    -1,    51,    52,    -1,    54,    -1,
+      -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,
+      -1,    -1,    -1,    89,    -1,    -1,    92,    -1,    -1,     4,
+       5,     6,     7,    -1,    -1,    10,    -1,    -1,    -1,    -1,
+      -1,   107,    -1,    -1,    -1,    -1,    21,    22,   114,    -1,
+      -1,   117,    -1,    -1,   120,    -1,    -1,   123,   124,    -1,
+      35,    36,    -1,    -1,    -1,    -1,    -1,   133,    43,    44,
+      -1,    -1,    -1,   139,    -1,    -1,    51,    52,   144,    54,
+      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
+      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,
+      -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    -1,    -1,
+       4,     5,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   107,    -1,    -1,    -1,    -1,    21,    22,    23,
+      -1,    -1,   117,    -1,    -1,   120,    -1,    -1,   123,   124,
+      -1,    35,    36,    -1,    -1,    -1,    -1,    -1,   133,    43,
+      44,    -1,    -1,    -1,   139,    -1,    -1,    51,    52,   144,
+      54,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
+      64,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,
+      -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    -1,
+      -1,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    21,    22,
+      -1,    -1,    -1,   117,    -1,    -1,   120,    -1,    -1,   123,
+     124,    -1,    35,    36,    -1,    -1,    -1,    -1,    -1,   133,
+      43,    44,    -1,    -1,    -1,   139,    -1,    -1,    51,    52,
+     144,    54,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,
+      -1,    64,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
+      -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,    -1,
+      -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    21,    22,   117,    -1,    -1,   120,    -1,    -1,
+     123,   124,    -1,    -1,    -1,    -1,    35,    36,    -1,    -1,
+     133,   134,    -1,    -1,    43,    44,   139,    -1,    -1,    -1,
+      -1,   144,    51,    52,    -1,    54,    -1,    -1,    -1,    -1,
+      59,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   109,    83,    84,    -1,    -1,    -1,    -1,    -1,
-      -1,    91,   119,   120,    94,    -1,   123,   124,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,   109,
-      -1,   138,    -1,    -1,    -1,    -1,   143,    -1,    -1,   119,
-     120,    -1,    -1,   123,   124,    -1,    -1,     4,     5,     6,
-       7,    -1,   132,   133,    -1,    -1,    -1,    -1,   138,    -1,
-      -1,    -1,    -1,   143,    21,    22,    -1,    -1,     1,    -1,
-       3,    -1,    -1,    -1,     4,     5,     6,     7,    35,    36,
-      -1,    -1,    -1,    -1,    -1,    -1,    43,    44,    -1,    -1,
-      -1,    21,    22,    -1,    51,    52,    -1,    54,    -1,    32,
-      -1,    -1,    -1,    60,    -1,    35,    36,    -1,    -1,    66,
-      -1,    -1,    69,    43,    44,    48,    49,    -1,    -1,    -1,
-      -1,    51,    52,    56,    54,    -1,    83,    84,    61,    -1,
-      60,    -1,    -1,    -1,    91,    65,    66,    94,    -1,    69,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,   109,    83,    84,    -1,    -1,    -1,    -1,   116,
-      -1,    91,   119,   120,    94,    -1,   123,   124,    -1,    -1,
-      -1,    -1,    -1,    -1,   107,   132,    -1,    -1,    -1,   109,
-      -1,   138,    -1,   116,    -1,    -1,   143,    -1,    -1,   119,
-     120,    -1,    -1,   123,   124,    -1,   129,     4,     5,     6,
-       7,    -1,   132,   136,    -1,    -1,   139,    -1,   138,    -1,
-      -1,    -1,    -1,   143,    21,    22,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,     4,     5,     6,     7,    35,    36,
-      -1,    -1,    -1,    -1,    -1,    -1,    43,    44,    -1,    -1,
-      -1,    21,    22,    -1,    51,    52,    -1,    54,    -1,    -1,
-      -1,    -1,    -1,    60,    -1,    35,    36,    -1,    -1,    66,
-      -1,    -1,    69,    43,    44,    -1,    -1,    -1,    -1,    -1,
-      -1,    51,    52,    -1,    54,    -1,    83,    84,    -1,    -1,
-      60,    -1,    -1,    -1,    91,    -1,    66,    94,    -1,    69,
+      -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,
+      89,    -1,    -1,    92,    -1,    -1,     4,     5,     6,     7,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,
+      -1,    -1,    -1,    21,    22,   114,    -1,    -1,   117,    -1,
+      -1,   120,    -1,    -1,   123,   124,    -1,    35,    36,    -1,
+      -1,    -1,    -1,    -1,   133,    43,    44,    -1,    -1,    -1,
+     139,    -1,    -1,    51,    52,   144,    54,    -1,    -1,    -1,
+      -1,    59,    -1,    -1,    -1,    63,    64,    -1,    -1,    67,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   109,    83,    84,    -1,    -1,     5,    -1,     7,
-      -1,    91,   119,   120,    94,    -1,   123,   124,    -1,    -1,
-      -1,    -1,    -1,    21,    22,   132,    -1,    -1,    -1,   109,
-      -1,   138,    -1,    -1,    -1,    -1,   143,    35,    36,   119,
-     120,    -1,    -1,   123,   124,    -1,    44,    -1,    -1,    -1,
-      -1,    -1,   132,    51,    52,    -1,    54,    -1,   138,    -1,
-      -1,    -1,    60,   143,    35,    36,    -1,    -1,    -1,    -1,
-      -1,    69,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
-      51,    52,    -1,    54,    -1,    83,    84,    -1,    -1,    60,
-      -1,    -1,    -1,    91,    -1,    -1,    94,    -1,    69,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   109,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
-      91,   119,    -1,    -1,    -1,   123,   124,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,   109,    -1,
-     138,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,
-      -1,    -1,   123,   124,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   132,    -1,    -1,    -1,    -1,    -1,   138
+      -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
+      -1,    89,    -1,    -1,    92,    -1,    -1,     4,     5,     6,
+       7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
+      -1,    -1,    -1,    -1,    21,    22,    -1,    -1,    -1,   117,
+      -1,    -1,   120,    -1,    -1,   123,   124,    -1,    35,    36,
+      -1,    -1,    -1,    -1,    -1,   133,    43,    44,    -1,    -1,
+      -1,   139,    -1,    -1,    51,    52,   144,    54,    -1,    -1,
+      -1,    -1,    59,    -1,    -1,    -1,    -1,    64,    -1,    -1,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,
+      -1,    -1,    89,    -1,    -1,    92,    -1,    -1,     4,     5,
+       6,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     107,    -1,    -1,    -1,    -1,    21,    22,    -1,    -1,    -1,
+     117,    -1,    -1,   120,    -1,    -1,   123,   124,    -1,    35,
+      36,    -1,    -1,    -1,    -1,    -1,   133,    43,    44,    -1,
+      -1,    -1,   139,    -1,    -1,    51,    52,   144,    54,    -1,
+      -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    64,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    81,    82,     5,    -1,     7,
+      -1,    -1,    -1,    89,    -1,    -1,    92,    -1,    -1,    -1,
+      -1,    -1,    -1,    21,    22,    -1,    35,    36,    -1,    -1,
+      -1,   107,    -1,    -1,    -1,    44,    -1,    35,    36,    -1,
+      -1,   117,    51,    52,   120,    54,    44,   123,   124,    -1,
+      59,    -1,    -1,    51,    52,    -1,    54,   133,    67,    -1,
+      -1,    59,    -1,   139,    -1,    -1,    -1,    -1,   144,    67,
+      -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,
+      89,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
+      -1,    89,    -1,    -1,    92,    -1,    -1,    -1,   107,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   107,
+      -1,    -1,    -1,    -1,   123,   124,    -1,    -1,    -1,   117,
+      -1,    -1,    -1,    -1,   133,   123,   124,    -1,    -1,    -1,
+     139,    -1,    -1,    -1,    -1,   133,    -1,    -1,    -1,    -1,
+      -1,   139
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+static const yytype_uint16 yystos[] =
 {
-       0,     1,     3,    32,    48,    49,    56,    61,    82,   107,
-     116,   129,   136,   139,   148,   149,   150,   151,   152,   153,
-     154,   175,   176,   179,   180,   183,   185,   188,   189,   190,
-     254,   255,   121,     4,     6,   252,    80,   121,    73,   121,
-      85,    28,    59,   191,   252,   186,   187,   202,   252,     0,
-     139,   141,    82,   188,    29,   136,   184,    30,   139,   142,
-       3,   252,    73,   252,   252,   252,   252,   252,     5,     7,
-      21,    22,    23,    35,    36,    43,    44,    51,    52,    54,
-      60,    66,    69,    83,    84,    91,    94,   109,   119,   120,
-     123,   124,   132,   138,   143,   157,   192,   193,   194,   196,
-     228,   229,   230,   231,   232,   233,   234,   235,   242,   245,
-     248,   252,   117,   145,    33,   143,    85,   184,   191,   106,
-     190,    31,    61,     5,    97,   143,   134,   222,   223,   131,
-     143,   190,     7,     7,   133,   228,   238,   239,   143,    84,
-     143,     5,   143,   143,    84,   188,   228,     5,    73,   195,
-     145,    21,    22,    33,   249,   252,    23,    24,   146,   250,
-     100,    22,   231,    27,   143,   181,   182,   252,   187,   143,
-     196,   251,   252,   252,   189,     7,    46,    47,    46,    47,
-     136,   177,   252,   155,   156,   252,    10,    65,   143,   224,
-     225,   226,   227,   228,   245,   143,   251,   224,   133,   236,
-     237,    62,   239,   240,     7,    53,    78,    92,    93,   115,
-     137,   243,   243,   228,     7,   144,   144,   143,   196,   199,
-     200,   203,   232,   252,   222,   194,   252,   229,   230,   143,
-     252,   252,    23,    59,   144,   228,   241,   145,   222,    11,
-     144,   145,   190,   155,    45,    72,   105,   128,   161,   252,
-     252,   143,   143,   164,   144,   145,    84,   157,   227,   196,
-     224,   228,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    79,   247,    20,   242,   244,   144,
-     122,   228,   237,   240,   228,    63,   144,    73,    73,   144,
-     199,    33,   201,   202,    74,    81,    89,   111,   198,   145,
-     201,    39,   126,   197,    75,   204,   101,   211,   212,   144,
-     241,   144,   145,   182,   228,   252,   143,    87,    87,   143,
-      57,    64,   178,   245,   246,   252,   130,   161,   162,   163,
-     155,    10,    45,    55,    94,   105,   110,   128,   158,   159,
-     160,   144,   225,   226,    17,    18,    19,    79,   228,   143,
-     196,   228,    10,    94,   144,   145,   131,   228,   122,    63,
-     228,     7,   144,   202,    99,    99,    99,    86,   199,     7,
-       7,   201,    42,    77,   205,    42,   144,    98,   213,   144,
-     228,   224,   143,   143,   251,     5,    67,    96,    97,   125,
-     253,   144,   145,   144,   145,    37,    40,    41,   118,   173,
-     145,   136,   165,    94,   143,   242,    87,   252,   158,   228,
-     143,   196,     9,   241,    94,   242,   143,   228,   144,    71,
-     144,   200,   103,   103,   241,   224,    98,   206,   241,    42,
-     108,   114,   214,   215,   144,   251,   251,   144,    57,    64,
-     245,   143,   174,   161,    38,   101,   166,   224,   143,     9,
-     241,   228,   144,   244,     7,    97,    42,    90,   207,   218,
-     219,   228,    19,   144,   144,     5,   253,   168,   169,   170,
-     171,   172,   252,   143,    42,   144,   252,   228,   144,   144,
-     144,   224,   218,     7,   135,   208,   209,   210,   145,    34,
-      58,   220,     7,    50,   127,   216,   110,   144,   145,     7,
-      28,   143,   252,   168,    76,   108,   167,   144,   252,   210,
-     219,    95,   221,   104,   112,   104,     9,   252,   169,   251,
-     144,   143,    33,    68,    88,     7,    50,   127,   217,   143,
-     144,   251,   143,    70,   112,    70,   251,   144,   211,   144,
-     102,   144,     7
+       0,     1,     3,    32,    48,    49,    56,    60,    80,   105,
+     114,   130,   137,   140,   149,   150,   151,   152,   153,   154,
+     155,   177,   178,   181,   182,   185,   187,   190,   191,   192,
+     256,   257,   121,     4,     6,   190,   254,    78,   121,    71,
+     121,    83,    28,    58,   193,   254,   188,   189,   204,   254,
+       0,   140,   142,    48,    80,   190,    29,   137,   186,    30,
+     140,   143,     3,   254,   125,   179,    71,   179,   254,   254,
+     254,   254,   254,     5,     7,    21,    22,    23,    35,    36,
+      43,    44,    51,    52,    54,    59,    64,    67,    81,    82,
+      89,    92,   107,   117,   120,   123,   124,   133,   139,   144,
+     158,   194,   195,   196,   198,   230,   231,   232,   233,   234,
+     235,   236,   237,   244,   247,   250,   254,   115,   146,    33,
+     144,   190,    83,   186,   193,   104,   192,    31,    60,     5,
+     118,   119,   137,   180,     5,   180,    95,   144,   135,   224,
+     225,   132,   144,   192,     7,     7,   134,   230,   240,   241,
+     144,    82,   144,     5,   144,   144,    82,   190,   230,     5,
+      71,   197,   146,    21,    22,    33,   251,   254,    23,    24,
+     147,   252,    98,    22,   233,    27,   144,   183,   184,   254,
+     189,   144,   198,   253,   254,   179,   254,   191,     7,    46,
+      47,    46,    47,   144,   180,   254,   156,   157,   254,    10,
+      63,   144,   226,   227,   228,   229,   230,   247,   144,   253,
+     226,   134,   238,   239,    61,   241,   242,     7,    53,    76,
+      90,    91,   113,   138,   245,   245,   230,     7,   145,   145,
+     144,   198,   201,   202,   205,   234,   254,   224,   196,   254,
+     231,   232,   144,   254,   254,    23,    58,   145,   230,   243,
+     146,   224,    11,   145,   146,   180,   192,   156,    45,    70,
+     103,   129,   162,   254,   254,   169,   170,   171,   172,   173,
+     174,   254,   144,   165,   145,   146,    82,   158,   229,   198,
+     226,   230,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    77,   249,    20,   244,   246,   145,
+     122,   230,   239,   242,   230,    62,   145,    71,    71,   145,
+     201,    33,   203,   204,    72,    79,    87,   109,   200,   146,
+     203,    39,   127,   199,    73,   206,    99,   213,   214,   145,
+     243,   145,   146,   184,   230,   254,   144,    85,    85,   144,
+     145,   146,     5,     7,    28,    65,    94,    95,   126,   144,
+     254,   255,   247,   248,   254,   131,   162,   163,   164,   156,
+      10,    45,    55,    92,   103,   108,   129,   159,   160,   161,
+     145,   227,   228,    17,    18,    19,    77,   230,   144,   198,
+     230,    10,    92,   145,   146,   132,   230,   122,    62,   230,
+       7,   145,   204,    97,    97,    97,    84,   201,     7,     7,
+     203,    42,    75,   207,    42,   145,    96,   215,   145,   230,
+     226,   144,   144,   253,   170,   253,   145,   146,    37,    40,
+      41,   116,   175,   146,   137,   166,    92,   144,   244,    85,
+     254,   159,   230,   144,   198,     9,   243,    92,   244,   144,
+     230,   145,    69,   145,   202,   101,   101,   243,   226,    96,
+     208,   243,    42,   106,   112,   216,   217,   145,   253,   253,
+     145,   145,   247,   144,   176,   162,    38,    99,   167,   226,
+     144,     9,   243,   230,   145,   246,     7,    95,    42,    88,
+     209,   220,   221,   230,    19,   145,   145,   169,   144,    42,
+     145,   254,   230,   145,   145,   145,   226,   220,     7,   136,
+     210,   211,   212,   146,    34,    57,   222,     7,    50,   128,
+     218,   108,   145,   169,    74,   106,   168,   145,   254,   212,
+     221,    93,   223,   102,   110,   102,     9,   254,   145,   144,
+      33,    66,    86,     7,    50,   128,   219,   144,   253,   144,
+      68,   110,    68,   253,   145,   213,   145,   100,   145,     7
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
+static const yytype_uint16 yyr1[] =
 {
-       0,   147,   148,   148,   148,   148,   148,   148,   149,   149,
-     149,   149,   149,   149,   149,   149,   149,   149,   150,   151,
-     151,   151,   151,   152,   153,   154,   155,   156,   156,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   158,   158,   158,
-     158,   158,   158,   158,   159,   159,   160,   160,   161,   161,
-     161,   161,   162,   162,   163,   163,   164,   164,   165,   165,
-     166,   166,   167,   167,   168,   168,   169,   169,   169,   170,
-     170,   171,   172,   173,   173,   173,   173,   174,   174,   175,
-     175,   175,   175,   176,   177,   177,   178,   178,   178,   178,
-     179,   180,   181,   181,   182,   183,   183,   184,   184,   185,
-     186,   186,   187,   188,   188,   189,   189,   190,   191,   191,
-     191,   192,   192,   193,   193,   194,   194,   194,   195,   196,
-     197,   197,   197,   198,   198,   198,   198,   198,   198,   198,
-     198,   199,   199,   200,   200,   200,   200,   200,   200,   201,
-     201,   202,   202,   203,   203,   204,   204,   205,   205,   206,
-     206,   207,   207,   208,   208,   209,   209,   210,   211,   212,
-     212,   213,   213,   214,   214,   215,   215,   216,   216,   216,
-     217,   217,   217,   218,   218,   219,   220,   220,   220,   221,
-     221,   221,   222,   222,   223,   224,   224,   225,   225,   226,
-     226,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-     227,   227,   228,   228,   229,   229,   230,   230,   231,   231,
-     231,   231,   231,   231,   231,   231,   231,   231,   232,   232,
-     232,   232,   233,   234,   234,   235,   235,   236,   236,   237,
-     238,   238,   239,   240,   240,   241,   241,   242,   242,   242,
-     242,   242,   242,   242,   242,   243,   243,   243,   243,   243,
-     243,   244,   244,   245,   245,   246,   246,   247,   247,   247,
-     247,   247,   247,   247,   247,   247,   247,   248,   249,   249,
-     250,   250,   250,   251,   251,   252,   252,   253,   253,   253,
-     253,   254,   255,   255
+       0,   148,   149,   149,   149,   149,   149,   149,   150,   150,
+     150,   150,   150,   150,   150,   150,   150,   150,   151,   152,
+     152,   152,   152,   153,   154,   155,   156,   157,   157,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   159,   159,   159,
+     159,   159,   159,   159,   160,   160,   161,   161,   162,   162,
+     162,   162,   163,   163,   164,   164,   165,   165,   166,   166,
+     167,   167,   168,   168,   169,   169,   170,   170,   170,   170,
+     171,   171,   171,   172,   173,   174,   175,   175,   175,   175,
+     176,   176,   177,   177,   177,   177,   178,   178,   178,   178,
+     179,   179,   179,   180,   180,   181,   182,   183,   183,   184,
+     185,   185,   186,   186,   187,   188,   188,   189,   190,   190,
+     191,   191,   192,   193,   193,   193,   194,   194,   195,   195,
+     196,   196,   196,   197,   198,   199,   199,   199,   200,   200,
+     200,   200,   200,   200,   200,   200,   201,   201,   202,   202,
+     202,   202,   202,   202,   203,   203,   204,   204,   205,   205,
+     206,   206,   207,   207,   208,   208,   209,   209,   210,   210,
+     211,   211,   212,   213,   214,   214,   215,   215,   216,   216,
+     217,   217,   218,   218,   218,   219,   219,   219,   220,   220,
+     221,   222,   222,   222,   223,   223,   223,   224,   224,   225,
+     226,   226,   227,   227,   228,   228,   229,   229,   229,   229,
+     229,   229,   229,   229,   229,   229,   229,   230,   230,   231,
+     231,   232,   232,   233,   233,   233,   233,   233,   233,   233,
+     233,   233,   233,   234,   234,   234,   234,   235,   236,   236,
+     237,   237,   238,   238,   239,   240,   240,   241,   242,   242,
+     243,   243,   244,   244,   244,   244,   244,   244,   244,   244,
+     245,   245,   245,   245,   245,   245,   246,   246,   247,   247,
+     248,   248,   249,   249,   249,   249,   249,   249,   249,   249,
+     249,   249,   250,   251,   251,   252,   252,   252,   253,   253,
+     254,   254,   255,   255,   255,   255,   256,   257,   257
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1437,29 +1475,29 @@
        1,     1,     1,     2,     2,     4,     4,     1,     2,     1,
        2,     2,     4,     5,     2,     1,     0,     1,     4,     5,
       10,     4,     3,     1,     0,     1,     0,     3,     0,     5,
-       0,     8,     1,     1,     1,     3,     1,     1,     1,     2,
-       2,     4,     2,     1,     1,     1,     1,     0,     3,    10,
-       7,     4,     5,     5,     0,     4,     2,     2,     4,     4,
-       5,     4,     3,     1,     3,     2,     3,     0,     3,     2,
-       1,     3,     3,     4,     1,     3,     1,    10,     0,     1,
-       1,     1,     1,     1,     3,     3,     2,     1,     2,     3,
-       0,     3,     3,     0,     1,     1,     2,     1,     2,     1,
-       2,     6,     1,     2,     3,     2,     2,     1,     3,     1,
-       2,     1,     4,     1,     3,     0,     3,     0,     2,     0,
-       3,     0,     2,     0,     1,     1,     2,     6,     3,     0,
-       3,     0,     3,     0,     5,     1,     1,     2,     2,     2,
-       2,     2,     2,     1,     3,     3,     0,     1,     1,     0,
-       2,     2,     0,     1,     2,     3,     1,     3,     1,     2,
-       1,     5,     6,     4,     3,     3,     3,     2,     3,     5,
-       4,     6,     3,     1,     3,     1,     2,     1,     1,     1,
-       1,     3,     5,     1,     1,     1,     3,     1,     3,     4,
-       4,     5,     6,     6,     8,     5,     4,     1,     2,     4,
-       1,     2,     4,     0,     2,     1,     3,     1,     1,     2,
-       2,     1,     2,     3,     2,     1,     1,     1,     1,     1,
-       1,     1,     3,     1,     3,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     2,     1,     2,     1,     1,     1,
-       1,     1,     1,     1,     3,     1,     1,     1,     1,     1,
-       1,     2,     2,     0
+       0,     8,     1,     1,     1,     3,     1,     1,     1,     1,
+       2,     2,     2,     4,     2,     2,     1,     1,     1,     1,
+       0,     3,    10,     7,     4,     5,     5,     4,     4,     5,
+       2,     2,     2,     0,     4,     5,     4,     3,     1,     3,
+       2,     3,     0,     3,     2,     1,     3,     3,     4,     1,
+       3,     1,    10,     0,     1,     1,     1,     1,     1,     3,
+       3,     2,     1,     2,     3,     0,     3,     3,     0,     1,
+       1,     2,     1,     2,     1,     2,     6,     1,     2,     3,
+       2,     2,     1,     3,     1,     2,     1,     4,     1,     3,
+       0,     3,     0,     2,     0,     3,     0,     2,     0,     1,
+       1,     2,     6,     3,     0,     3,     0,     3,     0,     5,
+       1,     1,     2,     2,     2,     2,     2,     2,     1,     3,
+       3,     0,     1,     1,     0,     2,     2,     0,     1,     2,
+       3,     1,     3,     1,     2,     1,     5,     6,     4,     3,
+       3,     3,     2,     3,     5,     4,     6,     3,     1,     3,
+       1,     2,     1,     1,     1,     1,     3,     5,     1,     1,
+       1,     3,     1,     3,     4,     4,     5,     6,     6,     8,
+       5,     4,     1,     2,     4,     1,     2,     4,     0,     2,
+       1,     3,     1,     1,     2,     2,     1,     2,     3,     2,
+       1,     1,     1,     1,     1,     1,     1,     3,     1,     3,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     2,
+       1,     2,     1,     1,     1,     1,     1,     1,     1,     3,
+       1,     1,     1,     1,     1,     1,     2,     2,     0
 };
 
 
@@ -1956,1061 +1994,1071 @@
   switch (yytype)
     {
           case 3: /* TOKEN_COMMAND  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1966 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2004 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 4: /* TOKEN_NAME  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1976 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2014 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 5: /* TOKEN_STRING_SINGLE_QUOTED  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1986 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2024 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 6: /* TOKEN_STRING_DOUBLE_QUOTED  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1996 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2034 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 7: /* TOKEN_UNSIGNED_NUMVAL  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).numeric_literal_value_) != nullptr) {
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2006 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2044 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 149: /* sql_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 150: /* sql_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2016 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2054 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 150: /* quit_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 151: /* quit_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).quit_statement_) != nullptr) {
     delete ((*yyvaluep).quit_statement_);
   }
 }
-#line 2026 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2064 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 151: /* alter_table_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 152: /* alter_table_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2036 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2074 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 152: /* create_table_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 153: /* create_table_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).create_table_statement_) != nullptr) {
     delete ((*yyvaluep).create_table_statement_);
   }
 }
-#line 2046 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2084 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 153: /* create_index_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 154: /* create_index_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2056 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2094 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 154: /* drop_table_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 155: /* drop_table_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).drop_table_statement_) != nullptr) {
     delete ((*yyvaluep).drop_table_statement_);
   }
 }
-#line 2066 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2104 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 155: /* column_def  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 156: /* column_def  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_definition_) != nullptr) {
     delete ((*yyvaluep).attribute_definition_);
   }
 }
-#line 2076 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2114 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 156: /* column_def_commalist  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 157: /* column_def_commalist  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_definition_list_) != nullptr) {
     delete ((*yyvaluep).attribute_definition_list_);
   }
 }
-#line 2086 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2124 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 157: /* data_type  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 158: /* data_type  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).data_type_) != nullptr) {
     delete ((*yyvaluep).data_type_);
   }
 }
-#line 2096 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2134 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 158: /* column_constraint_def  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 159: /* column_constraint_def  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_) != nullptr) {
     delete ((*yyvaluep).column_constraint_);
   }
 }
-#line 2106 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2144 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 159: /* column_constraint_def_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 160: /* column_constraint_def_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_list_) != nullptr) {
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2116 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2154 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 160: /* opt_column_constraint_def_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 161: /* opt_column_constraint_def_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_list_) != nullptr) {
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2126 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2164 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 164: /* opt_column_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 165: /* opt_column_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_list_) != nullptr) {
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2136 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2174 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 165: /* opt_block_properties  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 166: /* opt_block_properties  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).block_properties_) != nullptr) {
     delete ((*yyvaluep).block_properties_);
   }
 }
-#line 2146 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2184 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 166: /* opt_partition_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 167: /* opt_partition_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).partition_clause_) != nullptr) {
     delete ((*yyvaluep).partition_clause_);
   }
 }
-#line 2156 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2194 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 167: /* partition_type  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 168: /* partition_type  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2166 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2204 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 168: /* key_value_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 169: /* key_value_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_list_) != nullptr) {
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2176 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2214 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 169: /* key_value  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 170: /* key_value  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_) != nullptr) {
     delete ((*yyvaluep).key_value_);
   }
 }
-#line 2186 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2224 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 170: /* key_string_value  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 171: /* key_string_value  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_string_value_) != nullptr) {
     delete ((*yyvaluep).key_string_value_);
   }
 }
-#line 2196 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2234 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 171: /* key_string_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 172: /* key_string_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_string_list_) != nullptr) {
     delete ((*yyvaluep).key_string_list_);
   }
 }
-#line 2206 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2244 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 172: /* key_integer_value  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 173: /* key_integer_value  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_integer_value_) != nullptr) {
     delete ((*yyvaluep).key_integer_value_);
   }
 }
-#line 2216 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2254 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 173: /* index_type  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 174: /* key_bool_value  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
+      {
+  if (((*yyvaluep).key_bool_value_) != nullptr) {
+    delete ((*yyvaluep).key_bool_value_);
+  }
+}
+#line 2264 "SqlParser_gen.cpp" /* yacc.c:1257  */
+        break;
+
+    case 175: /* index_type  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2226 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2274 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 174: /* opt_index_properties  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 176: /* opt_index_properties  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_list_) != nullptr) {
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2236 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2284 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 175: /* insert_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 177: /* insert_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).insert_statement_) != nullptr) {
     delete ((*yyvaluep).insert_statement_);
   }
 }
-#line 2246 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2294 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 176: /* copy_from_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 178: /* copy_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
-  if (((*yyvaluep).copy_from_statement_) != nullptr) {
-    delete ((*yyvaluep).copy_from_statement_);
+  if (((*yyvaluep).copy_statement_) != nullptr) {
+    delete ((*yyvaluep).copy_statement_);
   }
 }
-#line 2256 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2304 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 177: /* opt_copy_from_params  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 179: /* copy_to_target  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
-  if (((*yyvaluep).copy_from_params_) != nullptr) {
-    delete ((*yyvaluep).copy_from_params_);
+  if (((*yyvaluep).string_value_) != nullptr) {
+    delete ((*yyvaluep).string_value_);
   }
 }
-#line 2266 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2314 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 178: /* copy_from_params  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 180: /* opt_copy_params  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
-  if (((*yyvaluep).copy_from_params_) != nullptr) {
-    delete ((*yyvaluep).copy_from_params_);
+  if (((*yyvaluep).key_value_list_) != nullptr) {
+    delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2276 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2324 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 179: /* update_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 181: /* update_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).update_statement_) != nullptr) {
     delete ((*yyvaluep).update_statement_);
   }
 }
-#line 2286 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2334 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 180: /* delete_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 182: /* delete_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).delete_statement_) != nullptr) {
     delete ((*yyvaluep).delete_statement_);
   }
 }
-#line 2296 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2344 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 181: /* assignment_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 183: /* assignment_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).assignment_list_) != nullptr) {
     delete ((*yyvaluep).assignment_list_);
   }
 }
-#line 2306 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2354 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 182: /* assignment_item  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 184: /* assignment_item  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).assignment_) != nullptr) {
     delete ((*yyvaluep).assignment_);
   }
 }
-#line 2316 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2364 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 183: /* set_operation_statement  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 185: /* set_operation_statement  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).set_operation_statement_) != nullptr) {
     delete ((*yyvaluep).set_operation_statement_);
   }
 }
-#line 2326 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2374 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 184: /* opt_priority_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 186: /* opt_priority_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_priority_clause_) != nullptr) {
     delete ((*yyvaluep).opt_priority_clause_);
   }
 }
-#line 2336 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2384 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 185: /* with_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 187: /* with_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).with_list_) != nullptr) {
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2346 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2394 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 186: /* with_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 188: /* with_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).with_list_) != nullptr) {
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2356 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2404 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 187: /* with_list_element  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 189: /* with_list_element  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).with_list_element_) != nullptr) {
     delete ((*yyvaluep).with_list_element_);
   }
 }
-#line 2366 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2414 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 188: /* set_operation_union  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 190: /* set_operation_union  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).set_operation_) != nullptr) {
     delete ((*yyvaluep).set_operation_);
   }
 }
-#line 2376 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2424 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 189: /* set_operation_intersect  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 191: /* set_operation_intersect  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).set_operation_) != nullptr) {
     delete ((*yyvaluep).set_operation_);
   }
 }
-#line 2386 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2434 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 190: /* select_query  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 192: /* select_query  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).select_query_) != nullptr) {
     delete ((*yyvaluep).select_query_);
   }
 }
-#line 2396 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2444 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 191: /* opt_all_distinct  */
-#line 624 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 193: /* opt_all_distinct  */
+#line 625 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2402 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2450 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 192: /* selection  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 194: /* selection  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).selection_) != nullptr) {
     delete ((*yyvaluep).selection_);
   }
 }
-#line 2412 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2460 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 193: /* selection_item_commalist  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 195: /* selection_item_commalist  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).selection_list_) != nullptr) {
     delete ((*yyvaluep).selection_list_);
   }
 }
-#line 2422 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2470 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 194: /* selection_item  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 196: /* selection_item  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).selection_item_) != nullptr) {
     delete ((*yyvaluep).selection_item_);
   }
 }
-#line 2432 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2480 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 195: /* from_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 197: /* from_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_list_) != nullptr) {
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2442 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2490 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 196: /* subquery_expression  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 198: /* subquery_expression  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).subquery_expression_) != nullptr) {
     delete ((*yyvaluep).subquery_expression_);
   }
 }
-#line 2452 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2500 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 197: /* opt_sample_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 199: /* opt_sample_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_sample_clause_) != nullptr) {
     delete ((*yyvaluep).opt_sample_clause_);
   }
 }
-#line 2462 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2510 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 198: /* join_type  */
-#line 628 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 200: /* join_type  */
+#line 629 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2468 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2516 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 199: /* joined_table_reference  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 201: /* joined_table_reference  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_) != nullptr) {
     delete ((*yyvaluep).table_reference_);
   }
 }
-#line 2478 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2526 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 200: /* table_reference  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 202: /* table_reference  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_) != nullptr) {
     delete ((*yyvaluep).table_reference_);
   }
 }
-#line 2488 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2536 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 201: /* table_reference_signature  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 203: /* table_reference_signature  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_signature_) != nullptr) {
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2498 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2546 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 202: /* table_reference_signature_primary  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 204: /* table_reference_signature_primary  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_signature_) != nullptr) {
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2508 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2556 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 203: /* joined_table_reference_commalist  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 205: /* joined_table_reference_commalist  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_list_) != nullptr) {
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2518 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2566 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 204: /* opt_group_by_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 206: /* opt_group_by_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_group_by_clause_) != nullptr) {
     delete ((*yyvaluep).opt_group_by_clause_);
   }
 }
-#line 2528 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2576 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 205: /* opt_having_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 207: /* opt_having_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_having_clause_) != nullptr) {
     delete ((*yyvaluep).opt_having_clause_);
   }
 }
-#line 2538 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2586 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 206: /* opt_order_by_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 208: /* opt_order_by_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_order_by_clause_) != nullptr) {
     delete ((*yyvaluep).opt_order_by_clause_);
   }
 }
-#line 2548 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2596 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 207: /* opt_limit_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 209: /* opt_limit_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_limit_clause_) != nullptr) {
     delete ((*yyvaluep).opt_limit_clause_);
   }
 }
-#line 2558 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2606 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 208: /* opt_window_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 210: /* opt_window_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_window_clause_) != nullptr) {
     delete ((*yyvaluep).opt_window_clause_);
   }
 }
-#line 2568 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2616 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 209: /* window_declaration_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 211: /* window_declaration_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_window_clause_) != nullptr) {
     delete ((*yyvaluep).opt_window_clause_);
   }
 }
-#line 2578 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2626 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 210: /* window_declaration  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 212: /* window_declaration  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_definition_) != nullptr) {
     delete ((*yyvaluep).window_definition_);
   }
 }
-#line 2588 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2636 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 211: /* window_definition  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 213: /* window_definition  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_definition_) != nullptr) {
     delete ((*yyvaluep).window_definition_);
   }
 }
-#line 2598 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2646 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 212: /* opt_window_partition  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 214: /* opt_window_partition  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_partition_by_list_) != nullptr) {
     delete ((*yyvaluep).window_partition_by_list_);
   }
 }
-#line 2608 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2656 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 213: /* opt_window_order  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 215: /* opt_window_order  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_order_by_list_) != nullptr) {
     delete ((*yyvaluep).window_order_by_list_);
   }
 }
-#line 2618 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2666 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 214: /* opt_window_frame  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 216: /* opt_window_frame  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).window_frame_info_) != nullptr) {
     delete ((*yyvaluep).window_frame_info_);
   }
 }
-#line 2628 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2676 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 215: /* frame_mode  */
-#line 624 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 217: /* frame_mode  */
+#line 625 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2634 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2682 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 216: /* frame_preceding  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 218: /* frame_preceding  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).numeric_literal_value_) != nullptr) {
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2644 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2692 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 217: /* frame_following  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 219: /* frame_following  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).numeric_literal_value_) != nullptr) {
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2654 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2702 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 218: /* order_commalist  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 220: /* order_commalist  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).order_commalist_) != nullptr) {
     delete ((*yyvaluep).order_commalist_);
   }
 }
-#line 2664 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2712 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 219: /* order_item  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 221: /* order_item  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).order_item_) != nullptr) {
     delete ((*yyvaluep).order_item_);
   }
 }
-#line 2674 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2722 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 220: /* opt_order_direction  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 222: /* opt_order_direction  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).order_direction_) != nullptr) {
     delete ((*yyvaluep).order_direction_);
   }
 }
-#line 2684 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2732 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 221: /* opt_nulls_first  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 223: /* opt_nulls_first  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).order_direction_) != nullptr) {
     delete ((*yyvaluep).order_direction_);
   }
 }
-#line 2694 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2742 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 222: /* opt_where_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 224: /* opt_where_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2704 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2752 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 223: /* where_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 225: /* where_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2714 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2762 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 224: /* or_expression  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 226: /* or_expression  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2724 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2772 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 225: /* and_expression  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 227: /* and_expression  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2734 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2782 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 226: /* not_expression  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 228: /* not_expression  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2744 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2792 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 227: /* predicate_expression_base  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 229: /* predicate_expression_base  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).predicate_) != nullptr) {
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2754 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2802 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 228: /* add_expression  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 230: /* add_expression  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2764 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2812 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 229: /* multiply_expression  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 231: /* multiply_expression  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2774 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2822 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 230: /* unary_expression  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 232: /* unary_expression  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2784 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2832 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 231: /* expression_base  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 233: /* expression_base  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2794 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2842 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 232: /* function_call  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 234: /* function_call  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).function_call_) != nullptr) {
     delete ((*yyvaluep).function_call_);
   }
 }
-#line 2804 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2852 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 233: /* extract_function  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 235: /* extract_function  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2814 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2862 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 234: /* substr_function  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 236: /* substr_function  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2824 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2872 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 235: /* case_expression  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 237: /* case_expression  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2834 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2882 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 236: /* simple_when_clause_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 238: /* simple_when_clause_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).simple_when_clause_list_) != nullptr) {
     delete ((*yyvaluep).simple_when_clause_list_);
   }
 }
-#line 2844 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2892 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 237: /* simple_when_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 239: /* simple_when_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).simple_when_clause_) != nullptr) {
     delete ((*yyvaluep).simple_when_clause_);
   }
 }
-#line 2854 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2902 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 238: /* searched_when_clause_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 240: /* searched_when_clause_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).searched_when_clause_list_) != nullptr) {
     delete ((*yyvaluep).searched_when_clause_list_);
   }
 }
-#line 2864 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2912 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 239: /* searched_when_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 241: /* searched_when_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).searched_when_clause_) != nullptr) {
     delete ((*yyvaluep).searched_when_clause_);
   }
 }
-#line 2874 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2922 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 240: /* opt_else_clause  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 242: /* opt_else_clause  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_) != nullptr) {
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2884 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2932 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 241: /* expression_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 243: /* expression_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).expression_list_) != nullptr) {
     delete ((*yyvaluep).expression_list_);
   }
 }
-#line 2894 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2942 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 242: /* literal_value  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 244: /* literal_value  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).literal_value_) != nullptr) {
     delete ((*yyvaluep).literal_value_);
   }
 }
-#line 2904 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2952 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 243: /* datetime_unit  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 245: /* datetime_unit  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2914 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2962 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 244: /* literal_value_commalist  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 246: /* literal_value_commalist  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).literal_value_list_) != nullptr) {
     delete ((*yyvaluep).literal_value_list_);
   }
 }
-#line 2924 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2972 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 245: /* attribute_ref  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 247: /* attribute_ref  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_) != nullptr) {
     delete ((*yyvaluep).attribute_);
   }
 }
-#line 2934 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2982 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 246: /* attribute_ref_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 248: /* attribute_ref_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_list_) != nullptr) {
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2944 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2992 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 247: /* comparison_operation  */
-#line 625 "../SqlParser.ypp" /* yacc.c:1257  */
-      { }
-#line 2950 "SqlParser_gen.cpp" /* yacc.c:1257  */
-        break;
-
-    case 248: /* unary_operation  */
+    case 249: /* comparison_operation  */
 #line 626 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2956 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2998 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 249: /* add_operation  */
+    case 250: /* unary_operation  */
 #line 627 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2962 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3004 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 250: /* multiply_operation  */
-#line 627 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 251: /* add_operation  */
+#line 628 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2968 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3010 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 251: /* name_commalist  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 252: /* multiply_operation  */
+#line 628 "../SqlParser.ypp" /* yacc.c:1257  */
+      { }
+#line 3016 "SqlParser_gen.cpp" /* yacc.c:1257  */
+        break;
+
+    case 253: /* name_commalist  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_list_) != nullptr) {
     delete ((*yyvaluep).string_list_);
   }
 }
-#line 2978 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3026 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 252: /* any_name  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 254: /* any_name  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2988 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3036 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 253: /* boolean_value  */
-#line 624 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 255: /* boolean_value  */
+#line 625 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2994 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3042 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 254: /* command  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 256: /* command  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).command_) != nullptr) {
     delete ((*yyvaluep).command_);
   }
 }
-#line 3004 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3052 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 255: /* command_argument_list  */
-#line 630 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 257: /* command_argument_list  */
+#line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).command_argument_list_) != nullptr) {
     delete ((*yyvaluep).command_argument_list_);
   }
 }
-#line 3014 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3062 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
 
@@ -3302,148 +3350,148 @@
   switch (yyn)
     {
         case 2:
-#line 639 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 640 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].statement_);
     YYACCEPT;
   }
-#line 3311 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3359 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 3:
-#line 643 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 644 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].statement_);
     YYACCEPT;
   }
-#line 3320 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3368 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 4:
-#line 647 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 648 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].command_);
     YYACCEPT;
   }
-#line 3329 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3377 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 5:
-#line 651 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 652 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     *parsedStatement = (yyvsp[-1].command_);
     YYACCEPT;
   }
-#line 3338 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3386 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 6:
-#line 655 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 656 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     YYABORT;
   }
-#line 3346 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3394 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 7:
-#line 658 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 659 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     // Regular yyparse() return codes are non-negative, so use a negative one here.
     return -1;
   }
-#line 3355 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 8:
-#line 665 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.statement_) = (yyvsp[0].statement_);
-  }
-#line 3363 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 9:
-#line 668 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.statement_) = (yyvsp[0].copy_from_statement_);
-  }
-#line 3371 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 10:
-#line 671 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.statement_) = (yyvsp[0].create_table_statement_);
-  }
-#line 3379 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 11:
-#line 674 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.statement_) = (yyvsp[0].statement_);
-  }
-#line 3387 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 12:
-#line 677 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.statement_) = (yyvsp[0].delete_statement_);
-  }
-#line 3395 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 13:
-#line 680 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.statement_) = (yyvsp[0].drop_table_statement_);
-  }
 #line 3403 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 14:
-#line 683 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 8:
+#line 666 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.statement_) = (yyvsp[0].insert_statement_);
+    (yyval.statement_) = (yyvsp[0].statement_);
   }
 #line 3411 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 15:
-#line 686 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 9:
+#line 669 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.statement_) = (yyvsp[0].quit_statement_);
+    (yyval.statement_) = (yyvsp[0].copy_statement_);
   }
 #line 3419 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 16:
-#line 689 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 10:
+#line 672 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.statement_) = (yyvsp[0].set_operation_statement_);
+    (yyval.statement_) = (yyvsp[0].create_table_statement_);
   }
 #line 3427 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 17:
-#line 692 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 11:
+#line 675 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.statement_) = (yyvsp[0].update_statement_);
+    (yyval.statement_) = (yyvsp[0].statement_);
   }
 #line 3435 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 18:
-#line 698 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 12:
+#line 678 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.quit_statement_) = new quickstep::ParseStatementQuit((yylsp[0]).first_line, (yylsp[0]).first_column);
+    (yyval.statement_) = (yyvsp[0].delete_statement_);
   }
 #line 3443 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
+  case 13:
+#line 681 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.statement_) = (yyvsp[0].drop_table_statement_);
+  }
+#line 3451 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 14:
+#line 684 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.statement_) = (yyvsp[0].insert_statement_);
+  }
+#line 3459 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 15:
+#line 687 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.statement_) = (yyvsp[0].quit_statement_);
+  }
+#line 3467 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 16:
+#line 690 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.statement_) = (yyvsp[0].set_operation_statement_);
+  }
+#line 3475 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 17:
+#line 693 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.statement_) = (yyvsp[0].update_statement_);
+  }
+#line 3483 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 18:
+#line 699 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.quit_statement_) = new quickstep::ParseStatementQuit((yylsp[0]).first_line, (yylsp[0]).first_column);
+  }
+#line 3491 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
   case 19:
-#line 704 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 705 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     delete (yyvsp[0].attribute_definition_);
@@ -3451,22 +3499,22 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3455 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3503 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 20:
-#line 711 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 712 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     (yyval.statement_) = nullptr;
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3466 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3514 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 21:
-#line 717 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 718 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     delete (yyvsp[0].string_value_);
@@ -3474,11 +3522,11 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3478 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3526 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 22:
-#line 724 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 725 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].string_value_);
     delete (yyvsp[0].string_value_);
@@ -3486,19 +3534,19 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3490 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3538 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 23:
-#line 733 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 734 "../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 3498 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3546 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 24:
-#line 738 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 739 "../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_));
@@ -3506,153 +3554,153 @@
       (yyval.statement_) = new quickstep::ParseStatementCreateIndex((yylsp[-8]).first_line, (yylsp[-8]).first_column, (yyvsp[-6].string_value_), (yyvsp[-4].string_value_), (yyvsp[-3].attribute_list_), (yyvsp[-1].string_value_));
     }
   }
-#line 3510 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3558 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 25:
-#line 747 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 748 "../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 3518 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3566 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 26:
-#line 752 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 753 "../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 3526 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3574 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 27:
-#line 757 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 758 "../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 3535 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3583 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 28:
-#line 761 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 762 "../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 3544 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3592 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 29:
-#line 767 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 768 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = nullptr;
     NotSupported(&(yylsp[0]), yyscanner, "BIT data type");
     YYERROR;
   }
-#line 3554 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3602 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 30:
-#line 772 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 773 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDate));
   }
-#line 3562 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3610 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 31:
-#line 775 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 776 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetime));
   }
-#line 3570 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3618 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 32:
-#line 778 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 779 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = nullptr;
     NotSupported(&(yylsp[0]), yyscanner, "TIME data type");
     YYERROR;
   }
-#line 3580 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 33:
-#line 783 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetime));
-  }
-#line 3588 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 34:
-#line 786 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
-  }
-#line 3596 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 35:
-#line 789 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
-  }
-#line 3604 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 36:
-#line 792 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
-  }
-#line 3612 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 37:
-#line 795 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kFloat));
-  }
-#line 3620 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 38:
-#line 798 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
-  }
 #line 3628 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 39:
-#line 801 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 33:
+#line 784 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
+    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetime));
   }
 #line 3636 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 40:
-#line 804 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 34:
+#line 787 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
+    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
 #line 3644 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 41:
-#line 807 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 35:
+#line 790 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
+    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
 #line 3652 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
+  case 36:
+#line 793 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
+  }
+#line 3660 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 37:
+#line 796 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kFloat));
+  }
+#line 3668 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 38:
+#line 799 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
+  }
+#line 3676 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 39:
+#line 802 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
+  }
+#line 3684 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 40:
+#line 805 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
+  }
+#line 3692 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 41:
+#line 808 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
+  }
+#line 3700 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
   case 42:
-#line 810 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 811 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /**
      * NOTE(chasseur): This pattern exhibits a shift/reduce conflict with the
@@ -3665,27 +3713,27 @@
         "or YEARMONTH INTERVAL");
     YYERROR;
   }
-#line 3669 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3717 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 43:
-#line 822 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 823 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetimeInterval));
   }
-#line 3677 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3725 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 44:
-#line 825 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 826 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kYearMonthInterval));
   }
-#line 3685 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3733 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 45:
-#line 828 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 829 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-1].numeric_literal_value_)->float_like()) {
       delete (yyvsp[-1].numeric_literal_value_);
@@ -3704,11 +3752,11 @@
       }
     }
   }
-#line 3708 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3756 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 46:
-#line 846 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 847 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-1].numeric_literal_value_)->float_like()) {
       delete (yyvsp[-1].numeric_literal_value_);
@@ -3727,69 +3775,69 @@
       }
     }
   }
-#line 3731 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3779 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 47:
-#line 866 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 867 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = new quickstep::ParseColumnConstraintNull((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 3739 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3787 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 48:
-#line 869 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 870 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = new quickstep::ParseColumnConstraintNotNull((yylsp[-1]).first_line, (yylsp[-1]).first_column);
   }
-#line 3747 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3795 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 49:
-#line 872 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 873 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     NotSupported(&(yylsp[0]), yyscanner, "Column Constraints (UNIQUE)");
     YYERROR;
   }
-#line 3757 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3805 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 50:
-#line 877 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 878 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     NotSupported(&(yylsp[-1]), yyscanner, "Column Constraints (PRIMARY KEY)");
     YYERROR;
   }
-#line 3767 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3815 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 51:
-#line 882 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 883 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     delete (yyvsp[0].literal_value_);
     NotSupported(&(yylsp[-1]), yyscanner, "Column Constraints (DEFAULT)");
     YYERROR;
   }
-#line 3778 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3826 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 52:
-#line 888 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 889 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     delete (yyvsp[-1].predicate_);
     NotSupported(&(yylsp[-3]), yyscanner, "Column Constraints (CHECK)");
     YYERROR;
   }
-#line 3789 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3837 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 53:
-#line 894 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 895 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_) = nullptr;
     delete (yyvsp[-3].string_value_);
@@ -3797,65 +3845,65 @@
     NotSupported(&(yylsp[-4]), yyscanner, "Foreign Keys");
     YYERROR;
   }
-#line 3801 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3849 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 54:
-#line 903 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 904 "../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 3810 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3858 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 55:
-#line 907 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 908 "../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 3819 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3867 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 56:
-#line 913 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 914 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_list_) = nullptr;
   }
-#line 3827 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3875 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 57:
-#line 916 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 917 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.column_constraint_list_) = (yyvsp[0].column_constraint_list_);
   }
-#line 3835 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3883 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 58:
-#line 921 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 922 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-1].string_list_);
     NotSupported(&(yylsp[-3]), yyscanner, "Table Constraints (UNIQUE)");
     YYERROR;
   }
-#line 3845 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3893 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 59:
-#line 926 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 927 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-1].string_list_);
     NotSupported(&(yylsp[-4]), yyscanner, "Table Constraints (PRIMARY KEY)");
     YYERROR;
   }
-#line 3855 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3903 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 60:
-#line 931 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 932 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-6].string_list_);
     delete (yyvsp[-3].string_value_);
@@ -3863,95 +3911,95 @@
     NotSupported(&(yylsp[-9]), yyscanner, "Table Constraints (FOREIGN KEY)");
     YYERROR;
   }
-#line 3867 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3915 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 61:
-#line 938 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 939 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-1].predicate_);
     NotSupported(&(yylsp[-3]), yyscanner, "Table Constraints (CHECK)");
     YYERROR;
   }
-#line 3877 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3925 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 62:
-#line 945 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 946 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     NotSupported(&(yylsp[-2]), yyscanner, "Table Constraints");
     YYERROR;
   }
-#line 3886 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3934 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 63:
-#line 949 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 950 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     NotSupported(&(yylsp[0]), yyscanner, "Table Constraints");
     YYERROR;
   }
-#line 3895 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 64:
-#line 955 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    /* $$ = nullptr; */
-  }
-#line 3903 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 65:
-#line 958 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    /* $$ = $1; */
-  }
-#line 3911 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 66:
-#line 963 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.attribute_list_) = nullptr;
-  }
-#line 3919 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 67:
-#line 966 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.attribute_list_) = (yyvsp[-1].attribute_list_);
-  }
-#line 3927 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 68:
-#line 971 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.block_properties_) = nullptr;
-  }
-#line 3935 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 69:
-#line 974 "../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 3943 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 70:
-#line 979 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 64:
+#line 956 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.partition_clause_) = nullptr;
+    /* $$ = nullptr; */
   }
 #line 3951 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
+  case 65:
+#line 959 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    /* $$ = $1; */
+  }
+#line 3959 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 66:
+#line 964 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.attribute_list_) = nullptr;
+  }
+#line 3967 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 67:
+#line 967 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.attribute_list_) = (yyvsp[-1].attribute_list_);
+  }
+#line 3975 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 68:
+#line 972 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.block_properties_) = nullptr;
+  }
+#line 3983 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 69:
+#line 975 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.block_properties_) = new quickstep::ParseBlockProperties((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-1].key_value_list_));
+  }
+#line 3991 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 70:
+#line 980 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.partition_clause_) = nullptr;
+  }
+#line 3999 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
   case 71:
-#line 982 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 983 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -3969,95 +4017,111 @@
       }
     }
   }
-#line 3973 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4021 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 72:
-#line 1001 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1002 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::kHashPartitionType);
   }
-#line 3981 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4029 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 73:
-#line 1004 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1005 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::kRangePartitionType);
   }
-#line 3989 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4037 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 74:
-#line 1009 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1010 "../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 3998 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4046 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 75:
-#line 1013 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1014 "../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 4007 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4055 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 76:
-#line 1019 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1020 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_string_value_);
   }
-#line 4015 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4063 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 77:
-#line 1022 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1023 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_string_list_);
   }
-#line 4023 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4071 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 78:
-#line 1025 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1026 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_) = (yyvsp[0].key_integer_value_);
   }
-#line 4031 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4079 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 79:
-#line 1030 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1029 "../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_));
+    (yyval.key_value_) = (yyvsp[0].key_bool_value_);
   }
-#line 4039 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4087 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 80:
-#line 1033 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1034 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.key_string_value_) = new quickstep::ParseKeyStringValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].string_value_));
+  }
+#line 4095 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 81:
+#line 1037 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.key_string_value_) = new quickstep::ParseKeyStringValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].string_value_));
+  }
+#line 4103 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 82:
+#line 1040 "../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 4049 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4113 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 81:
-#line 1040 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 83:
+#line 1047 "../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 4057 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4121 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 82:
-#line 1045 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 84:
+#line 1052 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -4067,64 +4131,72 @@
     }
     (yyval.key_integer_value_) = new quickstep::ParseKeyIntegerValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].numeric_literal_value_));
   }
-#line 4071 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4135 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 83:
-#line 1056 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 85:
+#line 1063 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.key_bool_value_) = new quickstep::ParseKeyBoolValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].boolean_value_));
+  }
+#line 4143 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 86:
+#line 1068 "../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 4081 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4153 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 84:
-#line 1061 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 87:
+#line 1073 "../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 4090 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4162 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 85:
-#line 1065 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 88:
+#line 1077 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kCSBTree));
   }
-#line 4099 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4171 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 86:
-#line 1069 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 89:
+#line 1081 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kSMA));
   }
-#line 4108 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4180 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 87:
-#line 1075 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 90:
+#line 1087 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = nullptr;
   }
-#line 4116 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4188 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 88:
-#line 1078 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 91:
+#line 1090 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.key_value_list_) = (yyvsp[-1].key_value_list_);
   }
-#line 4124 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4196 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 89:
-#line 1084 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 92:
+#line 1096 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-7].string_value_);
     delete (yyvsp[-5].string_list_);
@@ -4133,161 +4205,180 @@
     NotSupported(&(yylsp[-6]), yyscanner, "list of column names in INSERT statement");
     YYERROR;
   }
-#line 4137 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 90:
-#line 1092 "../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 4145 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 91:
-#line 1095 "../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 4153 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 92:
-#line 1098 "../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 4161 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4209 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 93:
 #line 1104 "../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_));
+    (yyval.insert_statement_) = new quickstep::ParseStatementInsertTuple((yylsp[-6]).first_line, (yylsp[-6]).first_column, (yyvsp[-4].string_value_), (yyvsp[-1].literal_value_list_));
   }
-#line 4169 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4217 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 94:
-#line 1109 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1107 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.copy_from_params_) = nullptr;
+    (yyval.insert_statement_) = new quickstep::ParseStatementInsertSelection((yylsp[-3]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].select_query_), nullptr);
   }
-#line 4177 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4225 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 95:
-#line 1112 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1110 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.copy_from_params_) = (yyvsp[-1].copy_from_params_);
+    (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 4185 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4233 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 96:
-#line 1117 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1116 "../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_));
+    (yyval.copy_statement_) = new quickstep::ParseStatementCopy((yylsp[-4]).first_line, (yylsp[-4]).first_column,
+                                           quickstep::ParseStatementCopy::kFrom,
+                                           (yyvsp[-3].string_value_), (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4194 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4243 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 97:
 #line 1121 "../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_);
+    (yyval.copy_statement_) = new quickstep::ParseStatementCopy((yylsp[-3]).first_line, (yylsp[-3]).first_column,
+                                           quickstep::ParseStatementCopy::kTo,
+                                           (yyvsp[-2].string_value_), (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4203 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4253 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 98:
-#line 1125 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1126 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.copy_from_params_) = (yyvsp[-3].copy_from_params_);
-    (yyval.copy_from_params_)->set_delimiter((yyvsp[0].string_value_));
+    (yyval.copy_statement_) = new quickstep::ParseStatementCopy((yylsp[-3]).first_line, (yylsp[-3]).first_column,
+                                           (yyvsp[-2].set_operation_), nullptr, (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4212 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4262 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 99:
-#line 1129 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1130 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.copy_from_params_) = (yyvsp[-3].copy_from_params_);
-    (yyval.copy_from_params_)->escape_strings = (yyvsp[0].boolean_value_);
+    (yyval.copy_statement_) = new quickstep::ParseStatementCopy((yylsp[-4]).first_line, (yylsp[-4]).first_column,
+                                           (yyvsp[-2].set_operation_), (yyvsp[-4].with_list_), (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4221 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4271 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 100:
-#line 1135 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1136 "../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_));
+    (yyval.string_value_) = new quickstep::ParseString((yyvsp[0].string_value_)->line_number(), (yyvsp[0].string_value_)->column_number(), "@" + (yyvsp[0].string_value_)->value());
+    delete (yyvsp[0].string_value_);
   }
-#line 4229 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4280 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 101:
 #line 1140 "../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_));
+    (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, "$stdout");
   }
-#line 4237 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4288 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 102:
-#line 1145 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1143 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, "$stderr");
+  }
+#line 4296 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 103:
+#line 1148 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.key_value_list_) = nullptr;
+  }
+#line 4304 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 104:
+#line 1151 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.key_value_list_) = (yyvsp[-1].key_value_list_);
+  }
+#line 4312 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 105:
+#line 1156 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.update_statement_) = new quickstep::ParseStatementUpdate((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].assignment_list_), (yyvsp[0].predicate_));
+  }
+#line 4320 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 106:
+#line 1161 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.delete_statement_) = new quickstep::ParseStatementDelete((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].predicate_));
+  }
+#line 4328 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 107:
+#line 1166 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.assignment_list_) = (yyvsp[-2].assignment_list_);
     (yyval.assignment_list_)->push_back((yyvsp[0].assignment_));
   }
-#line 4246 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4337 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 103:
-#line 1149 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 108:
+#line 1170 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.assignment_list_) = new quickstep::PtrList<quickstep::ParseAssignment>();
     (yyval.assignment_list_)->push_back((yyvsp[0].assignment_));
   }
-#line 4255 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4346 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 104:
-#line 1155 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 109:
+#line 1176 "../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 4263 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4354 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 105:
-#line 1164 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 110:
+#line 1185 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_statement_) = new quickstep::ParseStatementSetOperation((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].set_operation_), nullptr, (yyvsp[0].opt_priority_clause_));
   }
-#line 4271 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4362 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 106:
-#line 1167 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 111:
+#line 1188 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_statement_) = new quickstep::ParseStatementSetOperation((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].set_operation_), (yyvsp[-2].with_list_), (yyvsp[0].opt_priority_clause_));
   }
-#line 4279 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4370 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 107:
-#line 1172 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 112:
+#line 1193 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_priority_clause_) = nullptr;
   }
-#line 4287 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4378 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 108:
-#line 1175 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 113:
+#line 1196 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -4305,46 +4396,46 @@
       }
     }
   }
-#line 4309 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4400 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 109:
-#line 1194 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 114:
+#line 1215 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_) = (yyvsp[0].with_list_);
   }
-#line 4317 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4408 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 110:
-#line 1199 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 115:
+#line 1220 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_) = new quickstep::PtrVector<quickstep::ParseSubqueryTableReference>();
     (yyval.with_list_)->push_back((yyvsp[0].with_list_element_));
   }
-#line 4326 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4417 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 111:
-#line 1203 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 116:
+#line 1224 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.with_list_) = (yyvsp[-2].with_list_);
     (yyval.with_list_)->push_back((yyvsp[0].with_list_element_));
   }
-#line 4335 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4426 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 112:
-#line 1209 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 117:
+#line 1230 "../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 4344 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4435 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 113:
-#line 1215 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 118:
+#line 1236 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-1].boolean_value_)) {
       (yyval.set_operation_) = new quickstep::ParseSetOperation((yylsp[-3]).first_line, (yylsp[-3]).first_column, quickstep::ParseSetOperation::kUnion);
@@ -4354,19 +4445,19 @@
     (yyval.set_operation_)->addOperand((yyvsp[-3].set_operation_));
     (yyval.set_operation_)->addOperand((yyvsp[0].set_operation_));
   }
-#line 4358 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4449 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 114:
-#line 1224 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 119:
+#line 1245 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_) = (yyvsp[0].set_operation_);
   }
-#line 4366 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4457 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 115:
-#line 1229 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 120:
+#line 1250 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_) = new quickstep::ParseSetOperation((yylsp[-2]).first_line, (yylsp[-2]).first_column, quickstep::ParseSetOperation::kIntersect);
     quickstep::ParseSetOperation *op = new quickstep::ParseSetOperation(
@@ -4375,387 +4466,387 @@
     (yyval.set_operation_)->addOperand((yyvsp[-2].set_operation_));
     (yyval.set_operation_)->addOperand(op);
   }
-#line 4379 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4470 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 116:
-#line 1237 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 121:
+#line 1258 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.set_operation_) = new quickstep::ParseSetOperation((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::ParseSetOperation::kSelect);
     (yyval.set_operation_)->addOperand((yyvsp[0].select_query_));
   }
-#line 4388 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 117:
-#line 1244 "../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 4396 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 118:
-#line 1249 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = true;  // Distinct
-  }
-#line 4404 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 119:
-#line 1252 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = false;  // All
-  }
-#line 4412 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 120:
-#line 1255 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = true;  // Distinct
-  }
-#line 4420 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 121:
-#line 1260 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.selection_) = new quickstep::ParseSelectionStar((yylsp[0]).first_line, (yylsp[0]).first_column);
-  }
-#line 4428 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4479 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 122:
-#line 1263 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1265 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.selection_) = (yyvsp[0].selection_list_);
+    (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 4436 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4487 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 123:
-#line 1268 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1270 "../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_));
+    (yyval.boolean_value_) = true;  // Distinct
   }
-#line 4445 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4495 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 124:
-#line 1272 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1273 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.selection_list_) = (yyvsp[-2].selection_list_);
-    (yyval.selection_list_)->add((yyvsp[0].selection_item_));
+    (yyval.boolean_value_) = false;  // All
   }
-#line 4454 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4503 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 125:
-#line 1278 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1276 "../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_));
+    (yyval.boolean_value_) = true;  // Distinct
   }
-#line 4462 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4511 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 126:
 #line 1281 "../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_));
+    (yyval.selection_) = new quickstep::ParseSelectionStar((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 4470 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4519 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 127:
 #line 1284 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].expression_));
+    (yyval.selection_) = (yyvsp[0].selection_list_);
   }
-#line 4478 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4527 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 128:
 #line 1289 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.table_reference_list_) = (yyvsp[0].table_reference_list_);
+    (yyval.selection_list_) = new quickstep::ParseSelectionList((yylsp[0]).first_line, (yylsp[0]).first_column);
+    (yyval.selection_list_)->add((yyvsp[0].selection_item_));
   }
-#line 4486 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4536 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 129:
-#line 1294 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1293 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.subquery_expression_) = new quickstep::ParseSubqueryExpression((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].set_operation_));
+    (yyval.selection_list_) = (yyvsp[-2].selection_list_);
+    (yyval.selection_list_)->add((yyvsp[0].selection_item_));
   }
-#line 4494 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4545 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 130:
 #line 1299 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.opt_sample_clause_) = NULL;
+    (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].expression_), (yyvsp[0].string_value_));
   }
-#line 4502 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4553 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 131:
 #line 1302 "../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_));
+    (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].expression_), (yyvsp[0].string_value_));
   }
-#line 4510 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4561 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 132:
 #line 1305 "../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_));
+    (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].expression_));
   }
-#line 4518 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4569 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 133:
 #line 1310 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
+    (yyval.table_reference_list_) = (yyvsp[0].table_reference_list_);
   }
-#line 4526 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4577 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 134:
-#line 1313 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1315 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
+    (yyval.subquery_expression_) = new quickstep::ParseSubqueryExpression((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].set_operation_));
   }
-#line 4534 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4585 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 135:
-#line 1316 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1320 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
+    (yyval.opt_sample_clause_) = NULL;
   }
-#line 4542 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4593 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 136:
-#line 1319 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1323 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
+    (yyval.opt_sample_clause_) = new quickstep::ParseSample((yylsp[-2]).first_line, (yylsp[-2]).first_column, true, (yyvsp[-1].numeric_literal_value_));
   }
-#line 4550 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4601 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 137:
-#line 1322 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1326 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
+    (yyval.opt_sample_clause_) = new quickstep::ParseSample((yylsp[-2]).first_line, (yylsp[-2]).first_column, false, (yyvsp[-1].numeric_literal_value_));
   }
-#line 4558 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4609 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 138:
-#line 1325 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1331 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
+    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
   }
-#line 4566 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4617 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 139:
-#line 1328 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1334 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
+    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
   }
-#line 4574 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4625 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 140:
-#line 1331 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1337 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
+    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
   }
-#line 4582 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4633 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 141:
-#line 1336 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1340 "../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_));
+    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
   }
-#line 4590 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4641 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 142:
-#line 1339 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1343 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.table_reference_) = (yyvsp[0].table_reference_);
+    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
   }
-#line 4598 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4649 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 143:
-#line 1344 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1346 "../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_));
+    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
   }
-#line 4607 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4657 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 144:
-#line 1348 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1349 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.table_reference_) = new quickstep::ParseSimpleTableReference((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].string_value_), (yyvsp[-1].opt_sample_clause_));
-    (yyval.table_reference_)->set_table_reference_signature((yyvsp[0].table_reference_signature_));
+    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
   }
-#line 4616 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4665 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 145:
 #line 1352 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.table_reference_) = new quickstep::ParseSimpleTableReference((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].opt_sample_clause_));
-  }
-#line 4624 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 146:
-#line 1355 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.table_reference_) = new quickstep::ParseGeneratorTableReference((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].function_call_));
-    (yyval.table_reference_)->set_table_reference_signature((yyvsp[0].table_reference_signature_));
-  }
-#line 4633 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 147:
-#line 1359 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.table_reference_) = new quickstep::ParseGeneratorTableReference((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].function_call_));
-  }
-#line 4641 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 148:
-#line 1362 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.table_reference_) = (yyvsp[-1].table_reference_);
-  }
-#line 4649 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 149:
-#line 1367 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.table_reference_signature_) = (yyvsp[0].table_reference_signature_);
-  }
-#line 4657 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 150:
-#line 1370 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.table_reference_signature_) = (yyvsp[0].table_reference_signature_);
-  }
-#line 4665 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 151:
-#line 1375 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.table_reference_signature_) = new ::quickstep::ParseTableReferenceSignature((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].string_value_));
+    (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
   }
 #line 4673 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 152:
-#line 1378 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 146:
+#line 1357 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.table_reference_signature_) = new ::quickstep::ParseTableReferenceSignature((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].string_list_));
+    (yyval.table_reference_) = new quickstep::ParseJoinedTableReference((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-4].join_type_), (yyvsp[-5].table_reference_), (yyvsp[-2].table_reference_), (yyvsp[0].predicate_));
   }
 #line 4681 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
+  case 147:
+#line 1360 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.table_reference_) = (yyvsp[0].table_reference_);
+  }
+#line 4689 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 148:
+#line 1365 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.table_reference_) = new quickstep::ParseSubqueryTableReference((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].subquery_expression_));
+    (yyval.table_reference_)->set_table_reference_signature((yyvsp[0].table_reference_signature_));
+  }
+#line 4698 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 149:
+#line 1369 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.table_reference_) = new quickstep::ParseSimpleTableReference((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].string_value_), (yyvsp[-1].opt_sample_clause_));
+    (yyval.table_reference_)->set_table_reference_signature((yyvsp[0].table_reference_signature_));
+  }
+#line 4707 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 150:
+#line 1373 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.table_reference_) = new quickstep::ParseSimpleTableReference((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].opt_sample_clause_));
+  }
+#line 4715 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 151:
+#line 1376 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.table_reference_) = new quickstep::ParseGeneratorTableReference((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].function_call_));
+    (yyval.table_reference_)->set_table_reference_signature((yyvsp[0].table_reference_signature_));
+  }
+#line 4724 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 152:
+#line 1380 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.table_reference_) = new quickstep::ParseGeneratorTableReference((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].function_call_));
+  }
+#line 4732 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
   case 153:
 #line 1383 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.table_reference_list_) = new quickstep::PtrList<quickstep::ParseTableReference>();
-    (yyval.table_reference_list_)->push_back((yyvsp[0].table_reference_));
+    (yyval.table_reference_) = (yyvsp[-1].table_reference_);
   }
-#line 4690 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4740 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 154:
-#line 1387 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1388 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.table_reference_list_) = (yyvsp[-2].table_reference_list_);
-    (yyval.table_reference_list_)->push_back((yyvsp[0].table_reference_));
+    (yyval.table_reference_signature_) = (yyvsp[0].table_reference_signature_);
   }
-#line 4699 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4748 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 155:
-#line 1393 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1391 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.opt_group_by_clause_) = nullptr;
+    (yyval.table_reference_signature_) = (yyvsp[0].table_reference_signature_);
   }
-#line 4707 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4756 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 156:
 #line 1396 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.opt_group_by_clause_) = new quickstep::ParseGroupBy((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].expression_list_));
+    (yyval.table_reference_signature_) = new ::quickstep::ParseTableReferenceSignature((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].string_value_));
   }
-#line 4715 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4764 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 157:
-#line 1401 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1399 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.opt_having_clause_) = nullptr;
+    (yyval.table_reference_signature_) = new ::quickstep::ParseTableReferenceSignature((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].string_list_));
   }
-#line 4723 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4772 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 158:
 #line 1404 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.opt_having_clause_) = new quickstep::ParseHaving((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].predicate_));
+    (yyval.table_reference_list_) = new quickstep::PtrList<quickstep::ParseTableReference>();
+    (yyval.table_reference_list_)->push_back((yyvsp[0].table_reference_));
   }
-#line 4731 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4781 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 159:
-#line 1409 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1408 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.opt_order_by_clause_) = nullptr;
+    (yyval.table_reference_list_) = (yyvsp[-2].table_reference_list_);
+    (yyval.table_reference_list_)->push_back((yyvsp[0].table_reference_));
   }
-#line 4739 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4790 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 160:
-#line 1412 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1414 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.opt_order_by_clause_) = new quickstep::ParseOrderBy((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].order_commalist_));
+    (yyval.opt_group_by_clause_) = nullptr;
   }
-#line 4747 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4798 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 161:
 #line 1417 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.opt_limit_clause_) = nullptr;
+    (yyval.opt_group_by_clause_) = new quickstep::ParseGroupBy((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].expression_list_));
   }
-#line 4755 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4806 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 162:
-#line 1420 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1422 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.opt_having_clause_) = nullptr;
+  }
+#line 4814 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 163:
+#line 1425 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.opt_having_clause_) = new quickstep::ParseHaving((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].predicate_));
+  }
+#line 4822 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 164:
+#line 1430 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.opt_order_by_clause_) = nullptr;
+  }
+#line 4830 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 165:
+#line 1433 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.opt_order_by_clause_) = new quickstep::ParseOrderBy((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].order_commalist_));
+  }
+#line 4838 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 166:
+#line 1438 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.opt_limit_clause_) = nullptr;
+  }
+#line 4846 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 167:
+#line 1441 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].numeric_literal_value_)->float_like()) {
       delete (yyvsp[0].numeric_literal_value_);
@@ -4773,258 +4864,258 @@
       }
     }
   }
-#line 4777 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4868 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 163:
-#line 1439 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 168:
+#line 1460 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_window_clause_) = nullptr;
   }
-#line 4785 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4876 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 164:
-#line 1442 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 169:
+#line 1463 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_window_clause_) = (yyvsp[0].opt_window_clause_);
   }
-#line 4793 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4884 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 165:
-#line 1447 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 170:
+#line 1468 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_window_clause_) = new quickstep::PtrList<quickstep::ParseWindow>();
     (yyval.opt_window_clause_)->push_back((yyvsp[0].window_definition_));
   }
-#line 4802 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4893 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 166:
-#line 1451 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 171:
+#line 1472 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.opt_window_clause_) = (yyvsp[-1].opt_window_clause_);
     (yyval.opt_window_clause_)->push_back((yyvsp[0].window_definition_));
   }
-#line 4811 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4902 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 167:
-#line 1457 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 172:
+#line 1478 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.window_definition_) = (yyvsp[-1].window_definition_);
     (yyval.window_definition_)->setName((yyvsp[-4].string_value_));
   }
-#line 4820 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 168:
-#line 1463 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.window_definition_) = new quickstep::ParseWindow((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].window_partition_by_list_), (yyvsp[-1].window_order_by_list_), (yyvsp[0].window_frame_info_));
-  }
-#line 4828 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 169:
-#line 1468 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.window_partition_by_list_) = nullptr;
-  }
-#line 4836 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 170:
-#line 1471 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.window_partition_by_list_) = (yyvsp[0].expression_list_);
-  }
-#line 4844 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 171:
-#line 1476 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.window_order_by_list_) = nullptr;
-  }
-#line 4852 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 172:
-#line 1479 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.window_order_by_list_) = (yyvsp[0].order_commalist_);
-  }
-#line 4860 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4911 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 173:
 #line 1484 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.window_frame_info_) = nullptr;
+    (yyval.window_definition_) = new quickstep::ParseWindow((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].window_partition_by_list_), (yyvsp[-1].window_order_by_list_), (yyvsp[0].window_frame_info_));
   }
-#line 4868 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4919 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 174:
-#line 1487 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1489 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.window_frame_info_) = new quickstep::ParseFrameInfo((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-4].boolean_value_), (yyvsp[-2].numeric_literal_value_)->long_value(), (yyvsp[0].numeric_literal_value_)->long_value());
+    (yyval.window_partition_by_list_) = nullptr;
   }
-#line 4876 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4927 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 175:
 #line 1492 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.boolean_value_) = true;
+    (yyval.window_partition_by_list_) = (yyvsp[0].expression_list_);
   }
-#line 4884 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4935 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 176:
-#line 1495 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1497 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.boolean_value_) = false;
+    (yyval.window_order_by_list_) = nullptr;
   }
-#line 4892 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4943 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 177:
+#line 1500 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.window_order_by_list_) = (yyvsp[0].order_commalist_);
+  }
+#line 4951 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 178:
-#line 1501 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1505 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "-1");
+    (yyval.window_frame_info_) = nullptr;
   }
-#line 4900 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4959 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 179:
-#line 1504 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1508 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "0");
+    (yyval.window_frame_info_) = new quickstep::ParseFrameInfo((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-4].boolean_value_), (yyvsp[-2].numeric_literal_value_)->long_value(), (yyvsp[0].numeric_literal_value_)->long_value());
   }
-#line 4908 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4967 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 180:
+#line 1513 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.boolean_value_) = true;
+  }
+#line 4975 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 181:
-#line 1510 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1516 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "-1");
+    (yyval.boolean_value_) = false;
   }
-#line 4916 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 182:
-#line 1513 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "0");
-  }
-#line 4924 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4983 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 183:
-#line 1518 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1522 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "-1");
+  }
+#line 4991 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 184:
+#line 1525 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "0");
+  }
+#line 4999 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 186:
+#line 1531 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "-1");
+  }
+#line 5007 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 187:
+#line 1534 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "0");
+  }
+#line 5015 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 188:
+#line 1539 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_commalist_) = new quickstep::PtrList<quickstep::ParseOrderByItem>();
     (yyval.order_commalist_)->push_back((yyvsp[0].order_item_));
   }
-#line 4933 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5024 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 184:
-#line 1522 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 189:
+#line 1543 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.order_commalist_) = (yyvsp[-2].order_commalist_);
     (yyval.order_commalist_)->push_back((yyvsp[0].order_item_));
   }
-#line 4942 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 185:
-#line 1528 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.order_item_) = new quickstep::ParseOrderByItem((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].expression_), (yyvsp[-1].order_direction_), (yyvsp[0].order_direction_));
-    delete (yyvsp[-1].order_direction_);
-    delete (yyvsp[0].order_direction_);
-  }
-#line 4952 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 186:
-#line 1535 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.order_direction_) = nullptr;
-  }
-#line 4960 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 187:
-#line 1538 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.order_direction_) = new bool(true);
-  }
-#line 4968 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 188:
-#line 1541 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.order_direction_) = new bool(false);
-  }
-#line 4976 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 189:
-#line 1546 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.order_direction_) = nullptr;
-  }
-#line 4984 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5033 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 190:
 #line 1549 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.order_direction_) = new bool(true);
+    (yyval.order_item_) = new quickstep::ParseOrderByItem((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].expression_), (yyvsp[-1].order_direction_), (yyvsp[0].order_direction_));
+    delete (yyvsp[-1].order_direction_);
+    delete (yyvsp[0].order_direction_);
   }
-#line 4992 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5043 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 191:
-#line 1552 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1556 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.order_direction_) = new bool(false);
+    (yyval.order_direction_) = nullptr;
   }
-#line 5000 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5051 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 192:
-#line 1558 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1559 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.predicate_) = nullptr;
+    (yyval.order_direction_) = new bool(true);
   }
-#line 5008 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5059 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 193:
-#line 1561 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1562 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.predicate_) = (yyvsp[0].predicate_);
+    (yyval.order_direction_) = new bool(false);
   }
-#line 5016 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5067 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 194:
-#line 1566 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1567 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.predicate_) = (yyvsp[0].predicate_);
+    (yyval.order_direction_) = nullptr;
   }
-#line 5024 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5075 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 195:
-#line 1571 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1570 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.order_direction_) = new bool(true);
+  }
+#line 5083 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 196:
+#line 1573 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.order_direction_) = new bool(false);
+  }
+#line 5091 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 197:
+#line 1579 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.predicate_) = nullptr;
+  }
+#line 5099 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 198:
+#line 1582 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.predicate_) = (yyvsp[0].predicate_);
+  }
+#line 5107 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 199:
+#line 1587 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.predicate_) = (yyvsp[0].predicate_);
+  }
+#line 5115 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 200:
+#line 1592 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-2].predicate_)->getParsePredicateType() == quickstep::ParsePredicate::kDisjunction) {
       (yyval.predicate_) = (yyvsp[-2].predicate_);
@@ -5034,19 +5125,19 @@
     }
     static_cast<quickstep::ParsePredicateDisjunction *>((yyval.predicate_))->addPredicate((yyvsp[0].predicate_));
   }
-#line 5038 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5129 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 196:
-#line 1580 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 201:
+#line 1601 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5046 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5137 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 197:
-#line 1585 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 202:
+#line 1606 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[-2].predicate_)->getParsePredicateType() == quickstep::ParsePredicate::kConjunction) {
       (yyval.predicate_) = (yyvsp[-2].predicate_);
@@ -5056,453 +5147,453 @@
     }
     static_cast<quickstep::ParsePredicateConjunction *>((yyval.predicate_))->addPredicate((yyvsp[0].predicate_));
   }
-#line 5060 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5151 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 198:
-#line 1594 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 203:
+#line 1615 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5068 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5159 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 199:
-#line 1599 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 204:
+#line 1620 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateNegation((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].predicate_));
   }
-#line 5076 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5167 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 200:
-#line 1602 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 205:
+#line 1623 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5084 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5175 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 201:
-#line 1607 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 206:
+#line 1628 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateBetween((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-4].expression_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5092 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5183 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 202:
-#line 1610 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 207:
+#line 1631 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateNegation(
         (yylsp[-4]).first_line, (yylsp[-4]).first_column,
         new quickstep::ParsePredicateBetween((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-5].expression_), (yyvsp[-2].expression_), (yyvsp[0].expression_)));
   }
-#line 5102 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5193 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 203:
-#line 1615 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 208:
+#line 1636 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-3].attribute_);
     (yyval.predicate_) = nullptr;
     NotSupported(&(yylsp[-2]), yyscanner, "NULL comparison predicates");
     YYERROR;
   }
-#line 5113 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5204 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 204:
-#line 1621 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 209:
+#line 1642 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     delete (yyvsp[-2].attribute_);
     (yyval.predicate_) = nullptr;
     NotSupported(&(yylsp[-1]), yyscanner, "NULL comparison predicates");
     YYERROR;
   }
-#line 5124 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 205:
-#line 1627 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.predicate_) = new quickstep::ParsePredicateComparison((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].comparison_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
-  }
-#line 5132 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 206:
-#line 1630 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.predicate_) = (yyvsp[-1].predicate_);
-  }
-#line 5140 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 207:
-#line 1633 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.predicate_) = new quickstep::ParsePredicateExists((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].subquery_expression_));
-  }
-#line 5148 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 208:
-#line 1636 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.predicate_) = new quickstep::ParsePredicateInTableQuery((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-2].expression_), (yyvsp[0].subquery_expression_));
-  }
-#line 5156 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 209:
-#line 1639 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.predicate_) = new quickstep::ParsePredicateInValueList((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-4].expression_), (yyvsp[-1].expression_list_));
-  }
-#line 5164 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5215 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 210:
-#line 1642 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1648 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.predicate_) = new quickstep::ParsePredicateComparison((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].comparison_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
+  }
+#line 5223 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 211:
+#line 1651 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.predicate_) = (yyvsp[-1].predicate_);
+  }
+#line 5231 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 212:
+#line 1654 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.predicate_) = new quickstep::ParsePredicateExists((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].subquery_expression_));
+  }
+#line 5239 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 213:
+#line 1657 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.predicate_) = new quickstep::ParsePredicateInTableQuery((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-2].expression_), (yyvsp[0].subquery_expression_));
+  }
+#line 5247 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 214:
+#line 1660 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.predicate_) = new quickstep::ParsePredicateInValueList((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-4].expression_), (yyvsp[-1].expression_list_));
+  }
+#line 5255 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 215:
+#line 1663 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateNegation(
         (yylsp[-2]).first_line,
         (yylsp[-2]).first_column,
         new quickstep::ParsePredicateInTableQuery((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-3].expression_), (yyvsp[0].subquery_expression_)));
   }
-#line 5175 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5266 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 211:
-#line 1648 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 216:
+#line 1669 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.predicate_) = new quickstep::ParsePredicateNegation(
         (yylsp[-4]).first_line,
         (yylsp[-4]).first_column,
         new quickstep::ParsePredicateInValueList((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-5].expression_), (yyvsp[-1].expression_list_)));
   }
-#line 5186 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 212:
-#line 1657 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = new quickstep::ParseBinaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].binary_operation_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
-  }
-#line 5194 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 213:
-#line 1660 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = (yyvsp[0].expression_);
-  }
-#line 5202 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 214:
-#line 1665 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = new quickstep::ParseBinaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].binary_operation_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
-  }
-#line 5210 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 215:
-#line 1668 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = (yyvsp[0].expression_);
-  }
-#line 5218 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 216:
-#line 1673 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = new quickstep::ParseUnaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].unary_operation_), (yyvsp[0].expression_));
-  }
-#line 5226 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5277 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 217:
-#line 1676 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1678 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.expression_) = (yyvsp[0].expression_);
+    (yyval.expression_) = new quickstep::ParseBinaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].binary_operation_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5234 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5285 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 218:
 #line 1681 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.expression_) = (yyvsp[0].attribute_);
+    (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5242 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5293 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 219:
-#line 1684 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1686 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.expression_) = new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_));
+    (yyval.expression_) = new quickstep::ParseBinaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].binary_operation_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5250 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5301 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 220:
-#line 1687 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1689 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.expression_) = (yyvsp[0].function_call_);
+    (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5258 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5309 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 221:
-#line 1690 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1694 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyvsp[-2].function_call_)->setWindowName((yyvsp[0].string_value_));
-    (yyval.expression_) = (yyvsp[-2].function_call_);
+    (yyval.expression_) = new quickstep::ParseUnaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].unary_operation_), (yyvsp[0].expression_));
   }
-#line 5267 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5317 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 222:
-#line 1694 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyvsp[-4].function_call_)->setWindow((yyvsp[-1].window_definition_));
-    (yyval.expression_) = (yyvsp[-4].function_call_);
-  }
-#line 5276 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 223:
-#line 1698 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1697 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5284 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 224:
-#line 1701 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = (yyvsp[0].expression_);
-  }
-#line 5292 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 225:
-#line 1704 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = (yyvsp[0].expression_);
-  }
-#line 5300 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 226:
-#line 1707 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = (yyvsp[-1].expression_);
-  }
-#line 5308 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 227:
-#line 1710 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = (yyvsp[0].subquery_expression_);
-  }
-#line 5316 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 228:
-#line 1715 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.function_call_) = new quickstep::ParseFunctionCall(
-        (yylsp[-2]).first_line, (yylsp[-2]).first_column, false, (yyvsp[-2].string_value_), new quickstep::PtrList<quickstep::ParseExpression>());
-  }
 #line 5325 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 229:
+  case 223:
+#line 1702 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_) = (yyvsp[0].attribute_);
+  }
+#line 5333 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 224:
+#line 1705 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_) = new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_));
+  }
+#line 5341 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 225:
+#line 1708 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_) = (yyvsp[0].function_call_);
+  }
+#line 5349 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 226:
+#line 1711 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyvsp[-2].function_call_)->setWindowName((yyvsp[0].string_value_));
+    (yyval.expression_) = (yyvsp[-2].function_call_);
+  }
+#line 5358 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 227:
+#line 1715 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyvsp[-4].function_call_)->setWindow((yyvsp[-1].window_definition_));
+    (yyval.expression_) = (yyvsp[-4].function_call_);
+  }
+#line 5367 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 228:
 #line 1719 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.function_call_) = new quickstep::ParseFunctionCall(
-        (yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-3].string_value_), new quickstep::ParseStar((yylsp[-1]).first_line, (yylsp[-1]).first_column));
+    (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5334 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5375 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 229:
+#line 1722 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_) = (yyvsp[0].expression_);
+  }
+#line 5383 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 230:
-#line 1723 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1725 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.function_call_) = new quickstep::ParseFunctionCall((yylsp[-3]).first_line, (yylsp[-3]).first_column, false, (yyvsp[-3].string_value_), (yyvsp[-1].expression_list_));
+    (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5342 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5391 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 231:
-#line 1726 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1728 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.function_call_) = new quickstep::ParseFunctionCall((yylsp[-4]).first_line, (yylsp[-4]).first_column, true, (yyvsp[-4].string_value_), (yyvsp[-1].expression_list_));
+    (yyval.expression_) = (yyvsp[-1].expression_);
   }
-#line 5350 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5399 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 232:
 #line 1731 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.expression_) = new quickstep::ParseExtractFunction((yylsp[-5]).first_line, (yylsp[-5]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].expression_));
+    (yyval.expression_) = (yyvsp[0].subquery_expression_);
   }
-#line 5358 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5407 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 233:
 #line 1736 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.expression_) = new quickstep::ParseSubstringFunction(
-        (yylsp[-5]).first_line, (yylsp[-5]).first_column, (yyvsp[-3].expression_), (yyvsp[-1].numeric_literal_value_)->long_value());
+    (yyval.function_call_) = new quickstep::ParseFunctionCall(
+        (yylsp[-2]).first_line, (yylsp[-2]).first_column, false, (yyvsp[-2].string_value_), new quickstep::PtrList<quickstep::ParseExpression>());
   }
-#line 5367 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5416 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 234:
 #line 1740 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.expression_) = new quickstep::ParseSubstringFunction(
-        (yylsp[-7]).first_line, (yylsp[-7]).first_column, (yyvsp[-5].expression_), (yyvsp[-3].numeric_literal_value_)->long_value(), (yyvsp[-1].numeric_literal_value_)->long_value());
+    (yyval.function_call_) = new quickstep::ParseFunctionCall(
+        (yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-3].string_value_), new quickstep::ParseStar((yylsp[-1]).first_line, (yylsp[-1]).first_column));
   }
-#line 5376 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5425 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 235:
-#line 1746 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1744 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.expression_) = new quickstep::ParseSimpleCaseExpression((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-3].expression_), (yyvsp[-2].simple_when_clause_list_), (yyvsp[-1].expression_));
+    (yyval.function_call_) = new quickstep::ParseFunctionCall((yylsp[-3]).first_line, (yylsp[-3]).first_column, false, (yyvsp[-3].string_value_), (yyvsp[-1].expression_list_));
   }
-#line 5384 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5433 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 236:
-#line 1749 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1747 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.expression_) = new quickstep::ParseSearchedCaseExpression((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].searched_when_clause_list_), (yyvsp[-1].expression_));
+    (yyval.function_call_) = new quickstep::ParseFunctionCall((yylsp[-4]).first_line, (yylsp[-4]).first_column, true, (yyvsp[-4].string_value_), (yyvsp[-1].expression_list_));
   }
-#line 5392 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5441 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 237:
-#line 1754 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1752 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_) = new quickstep::ParseExtractFunction((yylsp[-5]).first_line, (yylsp[-5]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].expression_));
+  }
+#line 5449 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 238:
+#line 1757 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_) = new quickstep::ParseSubstringFunction(
+        (yylsp[-5]).first_line, (yylsp[-5]).first_column, (yyvsp[-3].expression_), (yyvsp[-1].numeric_literal_value_)->long_value());
+  }
+#line 5458 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 239:
+#line 1761 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_) = new quickstep::ParseSubstringFunction(
+        (yylsp[-7]).first_line, (yylsp[-7]).first_column, (yyvsp[-5].expression_), (yyvsp[-3].numeric_literal_value_)->long_value(), (yyvsp[-1].numeric_literal_value_)->long_value());
+  }
+#line 5467 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 240:
+#line 1767 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_) = new quickstep::ParseSimpleCaseExpression((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-3].expression_), (yyvsp[-2].simple_when_clause_list_), (yyvsp[-1].expression_));
+  }
+#line 5475 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 241:
+#line 1770 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_) = new quickstep::ParseSearchedCaseExpression((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].searched_when_clause_list_), (yyvsp[-1].expression_));
+  }
+#line 5483 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 242:
+#line 1775 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.simple_when_clause_list_) = new quickstep::PtrVector<quickstep::ParseSimpleWhenClause>;
     (yyval.simple_when_clause_list_)->push_back((yyvsp[0].simple_when_clause_));
   }
-#line 5401 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5492 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 238:
-#line 1758 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 243:
+#line 1779 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.simple_when_clause_list_) = (yyvsp[-1].simple_when_clause_list_);
     (yyval.simple_when_clause_list_)->push_back((yyvsp[0].simple_when_clause_));
   }
-#line 5410 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5501 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 239:
-#line 1764 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 244:
+#line 1785 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.simple_when_clause_) = new quickstep::ParseSimpleWhenClause((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5418 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5509 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 240:
-#line 1769 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 245:
+#line 1790 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.searched_when_clause_list_) = new quickstep::PtrVector<quickstep::ParseSearchedWhenClause>;
     (yyval.searched_when_clause_list_)->push_back((yyvsp[0].searched_when_clause_));
   }
-#line 5427 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5518 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 241:
-#line 1773 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 246:
+#line 1794 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.searched_when_clause_list_) = (yyvsp[-1].searched_when_clause_list_);
     (yyval.searched_when_clause_list_)->push_back((yyvsp[0].searched_when_clause_));
   }
-#line 5436 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 242:
-#line 1779 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.searched_when_clause_) = new quickstep::ParseSearchedWhenClause((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].predicate_), (yyvsp[0].expression_));
-  }
-#line 5444 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 243:
-#line 1784 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = NULL;
-  }
-#line 5452 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 244:
-#line 1787 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_) = (yyvsp[0].expression_);
-  }
-#line 5460 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 245:
-#line 1792 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_list_) = new quickstep::PtrList<quickstep::ParseExpression>();
-    (yyval.expression_list_)->push_back((yyvsp[0].expression_));
-  }
-#line 5469 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 246:
-#line 1796 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.expression_list_) = (yyvsp[-2].expression_list_);
-    (yyval.expression_list_)->push_back((yyvsp[0].expression_));
-  }
-#line 5478 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5527 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 247:
-#line 1802 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1800 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.literal_value_) = new quickstep::NullParseLiteralValue((yylsp[0]).first_line, (yylsp[0]).first_column);
+    (yyval.searched_when_clause_) = new quickstep::ParseSearchedWhenClause((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].predicate_), (yyvsp[0].expression_));
   }
-#line 5486 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5535 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 248:
 #line 1805 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
+    (yyval.expression_) = NULL;
   }
-#line 5494 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5543 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 249:
 #line 1808 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
+    (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5502 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5551 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 250:
-#line 1811 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1813 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_list_) = new quickstep::PtrList<quickstep::ParseExpression>();
+    (yyval.expression_list_)->push_back((yyvsp[0].expression_));
+  }
+#line 5560 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 251:
+#line 1817 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.expression_list_) = (yyvsp[-2].expression_list_);
+    (yyval.expression_list_)->push_back((yyvsp[0].expression_));
+  }
+#line 5569 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 252:
+#line 1823 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.literal_value_) = new quickstep::NullParseLiteralValue((yylsp[0]).first_line, (yylsp[0]).first_column);
+  }
+#line 5577 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 253:
+#line 1826 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
+  }
+#line 5585 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 254:
+#line 1829 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
+  }
+#line 5593 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 255:
+#line 1832 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /**
      * NOTE(chasseur): This case exhibits a shift/reduce conflict with the
@@ -5515,20 +5606,20 @@
     (yyvsp[0].numeric_literal_value_)->prependMinus();
     (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
   }
-#line 5519 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5610 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 251:
-#line 1823 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 256:
+#line 1844 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     (yyval.literal_value_) = new quickstep::StringParseLiteralValue((yyvsp[0].string_value_),
                                                 nullptr);  // No explicit type.
   }
-#line 5528 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5619 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 252:
-#line 1827 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 257:
+#line 1848 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /**
      * NOTE(chasseur): This case exhibits a shift/reduce conflict with the
@@ -5548,11 +5639,11 @@
       YYERROR;
     }
   }
-#line 5552 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5643 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 253:
-#line 1846 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 258:
+#line 1867 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     quickstep::StringParseLiteralValue *parse_value;
     const std::string &datetime_type_value = (yyvsp[0].string_value_)->value();
@@ -5566,11 +5657,11 @@
       YYERROR;
     }
   }
-#line 5570 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5661 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 254:
-#line 1859 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 259:
+#line 1880 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     quickstep::StringParseLiteralValue *parse_value
         = new quickstep::StringParseLiteralValue((yyvsp[0].string_value_), &((yyvsp[-1].data_type_)->getType()));
@@ -5584,191 +5675,191 @@
       (yyval.literal_value_) = parse_value;
     }
   }
-#line 5588 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 255:
-#line 1874 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("YEAR"));
-  }
-#line 5596 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 256:
-#line 1877 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("MONTH"));
-  }
-#line 5604 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 257:
-#line 1880 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("DAY"));
-  }
-#line 5612 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 258:
-#line 1883 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("HOUR"));
-  }
-#line 5620 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 259:
-#line 1886 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("MINUTE"));
-  }
-#line 5628 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5679 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 260:
-#line 1889 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1895 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("SECOND"));
+     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("YEAR"));
   }
-#line 5636 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5687 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 261:
-#line 1894 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1898 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.literal_value_list_) = new quickstep::PtrList<quickstep::ParseScalarLiteral>();
-    (yyval.literal_value_list_)->push_back(new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_)));
+     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("MONTH"));
   }
-#line 5645 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5695 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 262:
-#line 1898 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1901 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.literal_value_list_) = (yyvsp[-2].literal_value_list_);
-    (yyval.literal_value_list_)->push_back(new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_)));
+     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("DAY"));
   }
-#line 5654 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5703 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 263:
 #line 1904 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].string_value_));
+     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("HOUR"));
   }
-#line 5662 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5711 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 264:
 #line 1907 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].string_value_), (yyvsp[-2].string_value_));
+     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("MINUTE"));
   }
-#line 5670 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5719 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 265:
-#line 1912 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1910 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.attribute_list_) = new quickstep::PtrList<quickstep::ParseAttribute>();
-    (yyval.attribute_list_)->push_back((yyvsp[0].attribute_));
+     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("SECOND"));
   }
-#line 5679 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5727 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 266:
-#line 1916 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1915 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.attribute_list_) = (yyvsp[-2].attribute_list_);
-    (yyval.attribute_list_)->push_back((yyvsp[0].attribute_));
-  }
-#line 5688 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 267:
-#line 1923 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kEqual);
-  }
-#line 5696 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 268:
-#line 1926 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotEqual);
-  }
-#line 5704 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 269:
-#line 1929 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLess);
-  }
-#line 5712 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 270:
-#line 1932 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLessOrEqual);
-  }
-#line 5720 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 271:
-#line 1935 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreater);
-  }
-#line 5728 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 272:
-#line 1938 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreaterOrEqual);
+    (yyval.literal_value_list_) = new quickstep::PtrList<quickstep::ParseScalarLiteral>();
+    (yyval.literal_value_list_)->push_back(new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_)));
   }
 #line 5736 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 273:
-#line 1941 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 267:
+#line 1919 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLike);
+    (yyval.literal_value_list_) = (yyvsp[-2].literal_value_list_);
+    (yyval.literal_value_list_)->push_back(new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_)));
   }
-#line 5744 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5745 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 268:
+#line 1925 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].string_value_));
+  }
+#line 5753 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 269:
+#line 1928 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].string_value_), (yyvsp[-2].string_value_));
+  }
+#line 5761 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 270:
+#line 1933 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.attribute_list_) = new quickstep::PtrList<quickstep::ParseAttribute>();
+    (yyval.attribute_list_)->push_back((yyvsp[0].attribute_));
+  }
+#line 5770 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 271:
+#line 1937 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.attribute_list_) = (yyvsp[-2].attribute_list_);
+    (yyval.attribute_list_)->push_back((yyvsp[0].attribute_));
+  }
+#line 5779 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 272:
+#line 1944 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kEqual);
+  }
+#line 5787 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 273:
+#line 1947 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotEqual);
+  }
+#line 5795 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 274:
-#line 1944 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1950 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotLike);
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLess);
   }
-#line 5752 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5803 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 275:
-#line 1947 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1953 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kRegexMatch);
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLessOrEqual);
   }
-#line 5760 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5811 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 276:
-#line 1950 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1956 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotRegexMatch);
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreater);
   }
-#line 5768 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5819 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 277:
-#line 1955 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1959 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreaterOrEqual);
+  }
+#line 5827 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 278:
+#line 1962 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLike);
+  }
+#line 5835 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 279:
+#line 1965 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotLike);
+  }
+#line 5843 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 280:
+#line 1968 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kRegexMatch);
+  }
+#line 5851 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 281:
+#line 1971 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotRegexMatch);
+  }
+#line 5859 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 282:
+#line 1976 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     /**
      * NOTE(chasseur): This case exhibits a shift/reduce conflict with the
@@ -5778,146 +5869,146 @@
      **/
     (yyval.unary_operation_) = &quickstep::UnaryOperationFactory::GetUnaryOperation(quickstep::UnaryOperationID::kNegate);
   }
-#line 5782 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 278:
-#line 1966 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kAdd);
-  }
-#line 5790 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 279:
-#line 1969 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kSubtract);
-  }
-#line 5798 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 280:
-#line 1974 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kModulo);
-  }
-#line 5806 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 281:
-#line 1977 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kMultiply);
-  }
-#line 5814 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 282:
-#line 1980 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kDivide);
-  }
-#line 5822 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5873 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 283:
-#line 1986 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1987 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.string_list_) = new quickstep::PtrList<quickstep::ParseString>();
-    (yyval.string_list_)->push_back((yyvsp[0].string_value_));
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kAdd);
   }
-#line 5831 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5881 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 284:
 #line 1990 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.string_list_) = (yyvsp[-2].string_list_);
-    (yyval.string_list_)->push_back((yyvsp[0].string_value_));
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kSubtract);
   }
-#line 5840 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5889 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 285:
-#line 1996 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1995 "../SqlParser.ypp" /* yacc.c:1661  */
     {
-    (yyval.string_value_) = (yyvsp[0].string_value_);
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kModulo);
   }
-#line 5848 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5897 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 286:
-#line 1999 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 1998 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kMultiply);
+  }
+#line 5905 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 287:
+#line 2001 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kDivide);
+  }
+#line 5913 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 288:
+#line 2007 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.string_list_) = new quickstep::PtrList<quickstep::ParseString>();
+    (yyval.string_list_)->push_back((yyvsp[0].string_value_));
+  }
+#line 5922 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 289:
+#line 2011 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.string_list_) = (yyvsp[-2].string_list_);
+    (yyval.string_list_)->push_back((yyvsp[0].string_value_));
+  }
+#line 5931 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 290:
+#line 2017 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.string_value_) = (yyvsp[0].string_value_);
+  }
+#line 5939 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 291:
+#line 2020 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     if ((yyvsp[0].string_value_)->value().empty()) {
       quickstep_yyerror(&(yylsp[0]), yyscanner, nullptr, "Zero-length identifier");
     }
     (yyval.string_value_) = (yyvsp[0].string_value_);
   }
-#line 5859 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 287:
-#line 2007 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = true;
-  }
-#line 5867 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 288:
-#line 2010 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = true;
-  }
-#line 5875 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 289:
-#line 2013 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = false;
-  }
-#line 5883 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 290:
-#line 2016 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.boolean_value_) = false;
-  }
-#line 5891 "SqlParser_gen.cpp" /* yacc.c:1661  */
-    break;
-
-  case 291:
-#line 2022 "../SqlParser.ypp" /* yacc.c:1661  */
-    {
-    (yyval.command_) = new quickstep::ParseCommand((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].command_argument_list_));
-  }
-#line 5899 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5950 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 292:
-#line 2027 "../SqlParser.ypp" /* yacc.c:1661  */
+#line 2028 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.boolean_value_) = true;
+  }
+#line 5958 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 293:
+#line 2031 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.boolean_value_) = true;
+  }
+#line 5966 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 294:
+#line 2034 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.boolean_value_) = false;
+  }
+#line 5974 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 295:
+#line 2037 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.boolean_value_) = false;
+  }
+#line 5982 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 296:
+#line 2043 "../SqlParser.ypp" /* yacc.c:1661  */
+    {
+    (yyval.command_) = new quickstep::ParseCommand((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].command_argument_list_));
+  }
+#line 5990 "SqlParser_gen.cpp" /* yacc.c:1661  */
+    break;
+
+  case 297:
+#line 2048 "../SqlParser.ypp" /* yacc.c:1661  */
     {
     quickstep::PtrVector<quickstep::ParseString> *argument_list = (yyvsp[-1].command_argument_list_);
     argument_list->push_back((yyvsp[0].string_value_));
     (yyval.command_argument_list_) = argument_list;
   }
-#line 5909 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6000 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
-  case 293:
-#line 2032 "../SqlParser.ypp" /* yacc.c:1661  */
+  case 298:
+#line 2053 "../SqlParser.ypp" /* yacc.c:1661  */
     { /* Epsilon, an empy match. */
     (yyval.command_argument_list_) = new quickstep::PtrVector<quickstep::ParseString>();
   }
-#line 5917 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6008 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
 
-#line 5921 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6012 "SqlParser_gen.cpp" /* yacc.c:1661  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -6152,7 +6243,7 @@
 #endif
   return yyresult;
 }
-#line 2036 "../SqlParser.ypp" /* yacc.c:1906  */
+#line 2057 "../SqlParser.ypp" /* yacc.c:1906  */
 
 
 void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string &feature) {
diff --git a/parser/preprocessed/SqlParser_gen.hpp b/parser/preprocessed/SqlParser_gen.hpp
index a6d12e2..f6b5247 100644
--- a/parser/preprocessed/SqlParser_gen.hpp
+++ b/parser/preprocessed/SqlParser_gen.hpp
@@ -94,90 +94,91 @@
     TOKEN_DECIMAL = 304,
     TOKEN_DEFAULT = 305,
     TOKEN_DELETE = 306,
-    TOKEN_DELIMITER = 307,
-    TOKEN_DESC = 308,
-    TOKEN_DISTINCT = 309,
-    TOKEN_DOUBLE = 310,
-    TOKEN_DROP = 311,
-    TOKEN_ELSE = 312,
-    TOKEN_END = 313,
-    TOKEN_ESCAPE_STRINGS = 314,
-    TOKEN_EXISTS = 315,
-    TOKEN_EXTRACT = 316,
-    TOKEN_FALSE = 317,
-    TOKEN_FIRST = 318,
-    TOKEN_FLOAT = 319,
-    TOKEN_FOLLOWING = 320,
-    TOKEN_FOR = 321,
-    TOKEN_FOREIGN = 322,
-    TOKEN_FROM = 323,
-    TOKEN_FULL = 324,
-    TOKEN_GROUP = 325,
-    TOKEN_HASH = 326,
-    TOKEN_HAVING = 327,
-    TOKEN_HOUR = 328,
-    TOKEN_IN = 329,
-    TOKEN_INDEX = 330,
-    TOKEN_INNER = 331,
-    TOKEN_INSERT = 332,
-    TOKEN_INTEGER = 333,
-    TOKEN_INTERVAL = 334,
-    TOKEN_INTO = 335,
-    TOKEN_JOIN = 336,
-    TOKEN_KEY = 337,
-    TOKEN_LAST = 338,
-    TOKEN_LEFT = 339,
-    TOKEN_LIMIT = 340,
-    TOKEN_LONG = 341,
-    TOKEN_MINUTE = 342,
-    TOKEN_MONTH = 343,
-    TOKEN_NULL = 344,
-    TOKEN_NULLS = 345,
-    TOKEN_OFF = 346,
-    TOKEN_ON = 347,
-    TOKEN_ORDER = 348,
-    TOKEN_OUTER = 349,
-    TOKEN_OVER = 350,
-    TOKEN_PARTITION = 351,
-    TOKEN_PARTITIONS = 352,
-    TOKEN_PERCENT = 353,
-    TOKEN_PRECEDING = 354,
-    TOKEN_PRIMARY = 355,
-    TOKEN_PRIORITY = 356,
-    TOKEN_QUIT = 357,
-    TOKEN_RANGE = 358,
-    TOKEN_REAL = 359,
-    TOKEN_REFERENCES = 360,
-    TOKEN_RIGHT = 361,
-    TOKEN_ROW = 362,
-    TOKEN_ROW_DELIMITER = 363,
-    TOKEN_ROWS = 364,
-    TOKEN_SECOND = 365,
-    TOKEN_SELECT = 366,
-    TOKEN_SET = 367,
-    TOKEN_SMA = 368,
-    TOKEN_SMALLINT = 369,
+    TOKEN_DESC = 307,
+    TOKEN_DISTINCT = 308,
+    TOKEN_DOUBLE = 309,
+    TOKEN_DROP = 310,
+    TOKEN_ELSE = 311,
+    TOKEN_END = 312,
+    TOKEN_EXISTS = 313,
+    TOKEN_EXTRACT = 314,
+    TOKEN_FALSE = 315,
+    TOKEN_FIRST = 316,
+    TOKEN_FLOAT = 317,
+    TOKEN_FOLLOWING = 318,
+    TOKEN_FOR = 319,
+    TOKEN_FOREIGN = 320,
+    TOKEN_FROM = 321,
+    TOKEN_FULL = 322,
+    TOKEN_GROUP = 323,
+    TOKEN_HASH = 324,
+    TOKEN_HAVING = 325,
+    TOKEN_HOUR = 326,
+    TOKEN_IN = 327,
+    TOKEN_INDEX = 328,
+    TOKEN_INNER = 329,
+    TOKEN_INSERT = 330,
+    TOKEN_INTEGER = 331,
+    TOKEN_INTERVAL = 332,
+    TOKEN_INTO = 333,
+    TOKEN_JOIN = 334,
+    TOKEN_KEY = 335,
+    TOKEN_LAST = 336,
+    TOKEN_LEFT = 337,
+    TOKEN_LIMIT = 338,
+    TOKEN_LONG = 339,
+    TOKEN_MINUTE = 340,
+    TOKEN_MONTH = 341,
+    TOKEN_NULL = 342,
+    TOKEN_NULLS = 343,
+    TOKEN_OFF = 344,
+    TOKEN_ON = 345,
+    TOKEN_ORDER = 346,
+    TOKEN_OUTER = 347,
+    TOKEN_OVER = 348,
+    TOKEN_PARTITION = 349,
+    TOKEN_PARTITIONS = 350,
+    TOKEN_PERCENT = 351,
+    TOKEN_PRECEDING = 352,
+    TOKEN_PRIMARY = 353,
+    TOKEN_PRIORITY = 354,
+    TOKEN_QUIT = 355,
+    TOKEN_RANGE = 356,
+    TOKEN_REAL = 357,
+    TOKEN_REFERENCES = 358,
+    TOKEN_RIGHT = 359,
+    TOKEN_ROW = 360,
+    TOKEN_ROW_DELIMITER = 361,
+    TOKEN_ROWS = 362,
+    TOKEN_SECOND = 363,
+    TOKEN_SELECT = 364,
+    TOKEN_SET = 365,
+    TOKEN_SMA = 366,
+    TOKEN_SMALLINT = 367,
+    TOKEN_STDERR = 368,
+    TOKEN_STDOUT = 369,
     TOKEN_SUBSTRING = 370,
     TOKEN_TABLE = 371,
     TOKEN_THEN = 372,
     TOKEN_TIME = 373,
     TOKEN_TIMESTAMP = 374,
-    TOKEN_TRUE = 375,
-    TOKEN_TUPLESAMPLE = 376,
-    TOKEN_UNBOUNDED = 377,
-    TOKEN_UNIQUE = 378,
-    TOKEN_UPDATE = 379,
-    TOKEN_USING = 380,
-    TOKEN_VALUES = 381,
-    TOKEN_VARCHAR = 382,
-    TOKEN_WHEN = 383,
-    TOKEN_WHERE = 384,
-    TOKEN_WINDOW = 385,
-    TOKEN_WITH = 386,
-    TOKEN_YEAR = 387,
-    TOKEN_YEARMONTH = 388,
-    TOKEN_EOF = 389,
-    TOKEN_LEX_ERROR = 390
+    TOKEN_TO = 375,
+    TOKEN_TRUE = 376,
+    TOKEN_TUPLESAMPLE = 377,
+    TOKEN_UNBOUNDED = 378,
+    TOKEN_UNIQUE = 379,
+    TOKEN_UPDATE = 380,
+    TOKEN_USING = 381,
+    TOKEN_VALUES = 382,
+    TOKEN_VARCHAR = 383,
+    TOKEN_WHEN = 384,
+    TOKEN_WHERE = 385,
+    TOKEN_WINDOW = 386,
+    TOKEN_WITH = 387,
+    TOKEN_YEAR = 388,
+    TOKEN_YEARMONTH = 389,
+    TOKEN_EOF = 390,
+    TOKEN_LEX_ERROR = 391
   };
 #endif
 
@@ -237,8 +238,7 @@
   quickstep::ParseKeyStringValue *key_string_value_;
   quickstep::ParseKeyStringList *key_string_list_;
   quickstep::ParseKeyIntegerValue *key_integer_value_;
-
-  quickstep::ParseCopyFromParams *copy_from_params_;
+  quickstep::ParseKeyBoolValue *key_bool_value_;
 
   quickstep::ParseAssignment *assignment_;
   quickstep::PtrList<quickstep::ParseAssignment> *assignment_list_;
@@ -251,7 +251,7 @@
   quickstep::ParseStatementUpdate *update_statement_;
   quickstep::ParseStatementInsert *insert_statement_;
   quickstep::ParseStatementDelete *delete_statement_;
-  quickstep::ParseStatementCopyFrom *copy_from_statement_;
+  quickstep::ParseStatementCopy *copy_statement_;
   quickstep::ParseStatementCreateTable *create_table_statement_;
   quickstep::ParsePartitionClause *partition_clause_;
   quickstep::ParseBlockProperties *block_properties_;
diff --git a/parser/tests/Copy.test b/parser/tests/Copy.test
index dccaa82..7d1677d 100644
--- a/parser/tests/Copy.test
+++ b/parser/tests/Copy.test
@@ -24,34 +24,131 @@
 
 COPY test FROM 'test.txt'
 --
-CopyFromStatement[relation_name=test,source_file=test.txt]
+CopyStatement[direction=FROM,file=test.txt,relation_name=test]
 ==
 
 COPY test FROM 'test.txt' WITH (DELIMITER 'd', ESCAPE_STRINGS FALSE)
 --
-CopyFromStatement[relation_name=test,source_file=test.txt]
-+-params=CopyFromParams[delimiter=d,escape_string=false]
+CopyStatement[direction=FROM,file=test.txt,relation_name=test]
++-params=
+  +-KeyStringValue[key=DELIMITER]
+  | +-value=String[value=d]
+  +-KeyBoolValue[key=ESCAPE_STRINGS,value=false]
 ==
 
 COPY test FROM 'test.txt' WITH (DELIMITER '123', ESCAPE_STRINGS FALSE)
 --
-CopyFromStatement[relation_name=test,source_file=test.txt]
-+-params=CopyFromParams[delimiter=123,escape_string=false]
+CopyStatement[direction=FROM,file=test.txt,relation_name=test]
++-params=
+  +-KeyStringValue[key=DELIMITER]
+  | +-value=String[value=123]
+  +-KeyBoolValue[key=ESCAPE_STRINGS,value=false]
 ==
 
 COPY test FROM 'test.txt' WITH (DELIMITER e'\t')
 --
-CopyFromStatement[relation_name=test,source_file=test.txt]
-+-params=CopyFromParams[delimiter=	,escape_string=true]
+CopyStatement[direction=FROM,file=test.txt,relation_name=test]
++-params=
+  +-KeyStringValue[key=DELIMITER]
+    +-value=String[value=	]
 ==
 
 COPY test FROM 'test.txt' WITH (ESCAPE_STRINGS FALSE, DELIMITER 'd')
 --
-CopyFromStatement[relation_name=test,source_file=test.txt]
-+-params=CopyFromParams[delimiter=d,escape_string=false]
+CopyStatement[direction=FROM,file=test.txt,relation_name=test]
++-params=
+  +-KeyBoolValue[key=ESCAPE_STRINGS,value=false]
+  +-KeyStringValue[key=DELIMITER]
+    +-value=String[value=d]
 ==
 
 COPY test FROM 'test.txt' WITH (DELIMITER '1', ESCAPE_STRINGS FALSE, DELIMITER '2', ESCAPE_STRINGS TRUE)
 --
-CopyFromStatement[relation_name=test,source_file=test.txt]
-+-params=CopyFromParams[delimiter=2,escape_string=true]
+CopyStatement[direction=FROM,file=test.txt,relation_name=test]
++-params=
+  +-KeyStringValue[key=DELIMITER]
+  | +-value=String[value=1]
+  +-KeyBoolValue[key=ESCAPE_STRINGS,value=false]
+  +-KeyStringValue[key=DELIMITER]
+  | +-value=String[value=2]
+  +-KeyBoolValue[key=ESCAPE_STRINGS,value=true]
+==
+
+COPY test TO 'test.txt';
+--
+CopyStatement[direction=TO,file=@test.txt,relation_name=test]
+==
+
+COPY test TO stdout;
+--
+CopyStatement[direction=TO,file=$stdout,relation_name=test]
+==
+
+COPY test TO stderr;
+--
+CopyStatement[direction=TO,file=$stderr,relation_name=test]
+==
+
+COPY test TO 'stdout';
+--
+CopyStatement[direction=TO,file=@stdout,relation_name=test]
+==
+
+COPY test TO 'test.txt' WITH (FORMAT 'TEXT');
+--
+CopyStatement[direction=TO,file=@test.txt,relation_name=test]
++-params=
+  +-KeyStringValue[key=FORMAT]
+    +-value=String[value=TEXT]
+==
+
+COPY test TO 'test.txt' WITH (FORMAT 'CSV');
+--
+CopyStatement[direction=TO,file=@test.txt,relation_name=test]
++-params=
+  +-KeyStringValue[key=FORMAT]
+    +-value=String[value=CSV]
+==
+
+COPY test TO stdout
+WITH (FORMAT 'CSV', DELIMITER e'\t', HEADER TRUE, QUOTE '$', NULL_STRING 'NULL');
+--
+CopyStatement[direction=TO,file=$stdout,relation_name=test]
++-params=
+  +-KeyStringValue[key=FORMAT]
+  | +-value=String[value=CSV]
+  +-KeyStringValue[key=DELIMITER]
+  | +-value=String[value=	]
+  +-KeyBoolValue[key=HEADER,value=true]
+  +-KeyStringValue[key=QUOTE]
+  | +-value=String[value=$]
+  +-KeyStringValue[key=NULL_STRING]
+    +-value=String[value=NULL]
+==
+
+COPY
+  SELECT SUM(int_col) AS sum_int,
+         AVG(double_col) AS avg_dbl
+  FROM test
+  GROUP BY char_col
+TO 'test.txt' WITH (DELIMITER ',');
+--
+CopyStatement[direction=TO,file=@test.txt]
++-set_operation_query=SetOperation[set_operation_type=Select]
+| +-children=
+|   +-Select
+|     +-select_clause=SelectList
+|     | +-SelectListItem[alias=sum_int]
+|     | | +-FunctionCall[name=SUM]
+|     | |   +-AttributeReference[attribute_name=int_col]
+|     | +-SelectListItem[alias=avg_dbl]
+|     |   +-FunctionCall[name=AVG]
+|     |     +-AttributeReference[attribute_name=double_col]
+|     +-group_by=GroupBy
+|     | +-AttributeReference[attribute_name=char_col]
+|     +-from_clause=
+|       +-TableReference[table=test]
++-params=
+  +-KeyStringValue[key=DELIMITER]
+    +-value=String[value=,]
+==
diff --git a/query_optimizer/CMakeLists.txt b/query_optimizer/CMakeLists.txt
index fdf8796..4ea21b2 100644
--- a/query_optimizer/CMakeLists.txt
+++ b/query_optimizer/CMakeLists.txt
@@ -94,6 +94,7 @@
                       quickstep_queryoptimizer_expressions_WindowAggregateFunction
                       quickstep_queryoptimizer_physical_Aggregate
                       quickstep_queryoptimizer_physical_CopyFrom
+                      quickstep_queryoptimizer_physical_CopyTo
                       quickstep_queryoptimizer_physical_CreateIndex
                       quickstep_queryoptimizer_physical_CreateTable
                       quickstep_queryoptimizer_physical_CrossReferenceCoalesceAggregate
@@ -140,6 +141,7 @@
                       quickstep_relationaloperators_SelectOperator
                       quickstep_relationaloperators_SortMergeRunOperator
                       quickstep_relationaloperators_SortRunGenerationOperator
+                      quickstep_relationaloperators_TableExportOperator
                       quickstep_relationaloperators_TableGeneratorOperator
                       quickstep_relationaloperators_TextScanOperator
                       quickstep_relationaloperators_UnionAllOperator
diff --git a/query_optimizer/ExecutionGenerator.cpp b/query_optimizer/ExecutionGenerator.cpp
index d82a0c7..372d576 100644
--- a/query_optimizer/ExecutionGenerator.cpp
+++ b/query_optimizer/ExecutionGenerator.cpp
@@ -78,6 +78,7 @@
 #include "query_optimizer/expressions/WindowAggregateFunction.hpp"
 #include "query_optimizer/physical/Aggregate.hpp"
 #include "query_optimizer/physical/CopyFrom.hpp"
+#include "query_optimizer/physical/CopyTo.hpp"
 #include "query_optimizer/physical/CreateIndex.hpp"
 #include "query_optimizer/physical/CreateTable.hpp"
 #include "query_optimizer/physical/CrossReferenceCoalesceAggregate.hpp"
@@ -124,6 +125,7 @@
 #include "relational_operators/SelectOperator.hpp"
 #include "relational_operators/SortMergeRunOperator.hpp"
 #include "relational_operators/SortRunGenerationOperator.hpp"
+#include "relational_operators/TableExportOperator.hpp"
 #include "relational_operators/TableGeneratorOperator.hpp"
 #include "relational_operators/TextScanOperator.hpp"
 #include "relational_operators/UnionAllOperator.hpp"
@@ -409,6 +411,9 @@
     case P::PhysicalType::kCopyFrom:
       return convertCopyFrom(
           std::static_pointer_cast<const P::CopyFrom>(physical_plan));
+    case P::PhysicalType::kCopyTo:
+      return convertCopyTo(
+          std::static_pointer_cast<const P::CopyTo>(physical_plan));
     case P::PhysicalType::kCreateIndex:
       return convertCreateIndex(
           std::static_pointer_cast<const P::CreateIndex>(physical_plan));
@@ -1223,8 +1228,7 @@
           new TextScanOperator(
               query_handle_->query_id(),
               physical_plan->file_name(),
-              physical_plan->column_delimiter(),
-              physical_plan->escape_strings(),
+              physical_plan->options(),
               *output_relation,
               insert_destination_index));
   insert_destination_proto->set_relational_op_index(scan_operator_index);
@@ -1239,6 +1243,40 @@
                                        false /* is_pipeline_breaker */);
 }
 
+void ExecutionGenerator::convertCopyTo(const P::CopyToPtr &physical_plan) {
+  // CopyTo is converted to a TableExport operator.
+
+  const CatalogRelation *input_relation;
+  bool input_relation_is_stored;
+
+  const P::PhysicalPtr &input = physical_plan->input();
+  P::TableReferencePtr table_reference;
+  const CatalogRelationInfo *input_relation_info = nullptr;
+  if (P::SomeTableReference::MatchesWithConditionalCast(input, &table_reference)) {
+    input_relation = table_reference->relation();
+    input_relation_is_stored = true;
+  } else {
+    input_relation_info = findRelationInfoOutputByPhysical(input);
+    input_relation = input_relation_info->relation;
+    input_relation_is_stored = false;
+  }
+
+  DCHECK(input_relation != nullptr);
+  const QueryPlan::DAGNodeIndex table_export_operator_index =
+      execution_plan_->addRelationalOperator(
+          new TableExportOperator(query_handle_->query_id(),
+                                  *input_relation,
+                                  input_relation_is_stored,
+                                  physical_plan->file_name(),
+                                  physical_plan->options()));
+  if (!input_relation_is_stored) {
+    DCHECK(input_relation_info != nullptr);
+    execution_plan_->addDirectDependency(table_export_operator_index,
+                                         input_relation_info->producer_operator_index,
+                                         false /* is_pipeline_breaker */);
+  }
+}
+
 void ExecutionGenerator::convertCreateIndex(
   const P::CreateIndexPtr &physical_plan) {
   // CreateIndex is converted to a CreateIndex operator.
diff --git a/query_optimizer/ExecutionGenerator.hpp b/query_optimizer/ExecutionGenerator.hpp
index 19e75c1..bc9f88b 100644
--- a/query_optimizer/ExecutionGenerator.hpp
+++ b/query_optimizer/ExecutionGenerator.hpp
@@ -44,6 +44,7 @@
 #include "query_optimizer/expressions/Predicate.hpp"
 #include "query_optimizer/physical/Aggregate.hpp"
 #include "query_optimizer/physical/CopyFrom.hpp"
+#include "query_optimizer/physical/CopyTo.hpp"
 #include "query_optimizer/physical/CreateIndex.hpp"
 #include "query_optimizer/physical/CreateTable.hpp"
 #include "query_optimizer/physical/CrossReferenceCoalesceAggregate.hpp"
@@ -282,6 +283,13 @@
   void convertCopyFrom(const physical::CopyFromPtr &physical_plan);
 
   /**
+   * @brief Converts a CopyTo to a TableExport operator.
+   *
+   * @param physical_plan The CopyTo to be converted.
+   */
+  void convertCopyTo(const physical::CopyToPtr &physical_plan);
+
+  /**
    * @brief Converts a CreateIndex to a CreateIndex operator.
    *
    * @param physical_plan The CreateIndex to be converted.
diff --git a/query_optimizer/logical/CMakeLists.txt b/query_optimizer/logical/CMakeLists.txt
index 4480e0b..37e9735 100644
--- a/query_optimizer/logical/CMakeLists.txt
+++ b/query_optimizer/logical/CMakeLists.txt
@@ -19,6 +19,7 @@
 add_library(quickstep_queryoptimizer_logical_Aggregate Aggregate.cpp Aggregate.hpp)
 add_library(quickstep_queryoptimizer_logical_BinaryJoin BinaryJoin.cpp BinaryJoin.hpp)
 add_library(quickstep_queryoptimizer_logical_CopyFrom CopyFrom.cpp CopyFrom.hpp)
+add_library(quickstep_queryoptimizer_logical_CopyTo CopyTo.cpp CopyTo.hpp)
 add_library(quickstep_queryoptimizer_logical_CreateIndex CreateIndex.cpp CreateIndex.hpp)
 add_library(quickstep_queryoptimizer_logical_CreateTable CreateTable.cpp CreateTable.hpp)
 add_library(quickstep_queryoptimizer_logical_DeleteTuples DeleteTuples.cpp DeleteTuples.hpp)
@@ -74,6 +75,16 @@
                       quickstep_queryoptimizer_expressions_AttributeReference
                       quickstep_queryoptimizer_logical_Logical
                       quickstep_queryoptimizer_logical_LogicalType
+                      quickstep_utility_BulkIoConfiguration
+                      quickstep_utility_Macros
+                      quickstep_utility_StringUtil)
+target_link_libraries(quickstep_queryoptimizer_logical_CopyTo
+                      glog
+                      quickstep_queryoptimizer_OptimizerTree
+                      quickstep_queryoptimizer_expressions_AttributeReference
+                      quickstep_queryoptimizer_logical_Logical
+                      quickstep_queryoptimizer_logical_LogicalType
+                      quickstep_utility_BulkIoConfiguration
                       quickstep_utility_Macros
                       quickstep_utility_StringUtil)
 target_link_libraries(quickstep_queryoptimizer_logical_CreateIndex
@@ -290,6 +301,7 @@
                       quickstep_queryoptimizer_logical_Aggregate
                       quickstep_queryoptimizer_logical_BinaryJoin
                       quickstep_queryoptimizer_logical_CopyFrom
+                      quickstep_queryoptimizer_logical_CopyTo
                       quickstep_queryoptimizer_logical_CreateIndex
                       quickstep_queryoptimizer_logical_CreateTable
                       quickstep_queryoptimizer_logical_DeleteTuples
diff --git a/query_optimizer/logical/CopyFrom.cpp b/query_optimizer/logical/CopyFrom.cpp
index b0a1423..a80c701 100644
--- a/query_optimizer/logical/CopyFrom.cpp
+++ b/query_optimizer/logical/CopyFrom.cpp
@@ -44,11 +44,11 @@
   inline_field_values->push_back(file_name_);
 
   inline_field_names->push_back("column_delimiter");
-  inline_field_values->push_back("\"" + EscapeSpecialChars(std::string(1, column_delimiter_)) +
-                                 "\"");
+  inline_field_values->push_back(
+      "\"" + EscapeSpecialChars(std::string(1, options_->getDelimiter())) + "\"");
 
   inline_field_names->push_back("escape_strings");
-  inline_field_values->push_back(escape_strings_ ? "true" : "false");
+  inline_field_values->push_back(options_->escapeStrings() ? "true" : "false");
 }
 
 }  // namespace logical
diff --git a/query_optimizer/logical/CopyFrom.hpp b/query_optimizer/logical/CopyFrom.hpp
index 7c5907f..6b130a6 100644
--- a/query_optimizer/logical/CopyFrom.hpp
+++ b/query_optimizer/logical/CopyFrom.hpp
@@ -17,8 +17,8 @@
  * under the License.
  **/
 
-#ifndef QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_COPYFROM_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_COPYFROM_HPP_
+#ifndef QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_COPY_FROM_HPP_
+#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_COPY_FROM_HPP_
 
 #include <memory>
 #include <string>
@@ -28,6 +28,7 @@
 #include "query_optimizer/expressions/AttributeReference.hpp"
 #include "query_optimizer/logical/Logical.hpp"
 #include "query_optimizer/logical/LogicalType.hpp"
+#include "utility/BulkIoConfiguration.hpp"
 #include "utility/Macros.hpp"
 
 #include "glog/logging.h"
@@ -66,20 +67,14 @@
   const std::string& file_name() const { return file_name_; }
 
   /**
-   * @return The delimiter used in the text file to separate columns.
+   * @return The options for this COPY FROM statement.
    */
-  const char column_delimiter() const { return column_delimiter_; }
-
-  /**
-   * @return Whether to decode escape sequences in the text file.
-   */
-  bool escape_strings() const { return escape_strings_; }
+  const BulkIoConfigurationPtr& options() const { return options_; }
 
   LogicalPtr copyWithNewChildren(
       const std::vector<LogicalPtr> &new_children) const override {
     DCHECK(new_children.empty());
-    return Create(catalog_relation_, file_name_, column_delimiter_,
-                  escape_strings_);
+    return Create(catalog_relation_, file_name_, options_);
   }
 
   std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override {
@@ -95,19 +90,13 @@
    *
    * @param catalog_relation The catalog relation to insert the tuples to.
    * @param file_name The name of the file to read the data from.
-   * @param column_delimiter The delimiter used in the text file to separate
-   *                         columns.
-   * @param escape_strings Whether to decode escape sequences in the text file.
+   * @param options The options for this COPY FROM statement.
    * @return An immutable CopyFrom logical node.
    */
   static CopyFromPtr Create(const CatalogRelation *catalog_relation,
                             const std::string &file_name,
-                            const char column_delimiter,
-                            bool escape_strings) {
-    return CopyFromPtr(new CopyFrom(catalog_relation,
-                                    file_name,
-                                    column_delimiter,
-                                    escape_strings));
+                            const BulkIoConfigurationPtr &options) {
+    return CopyFromPtr(new CopyFrom(catalog_relation, file_name, options));
   }
 
  protected:
@@ -122,18 +111,14 @@
  private:
   CopyFrom(const CatalogRelation *catalog_relation,
            const std::string &file_name,
-           const char column_delimiter,
-           bool escape_strings)
+           const BulkIoConfigurationPtr &options)
       : catalog_relation_(catalog_relation),
         file_name_(file_name),
-        column_delimiter_(column_delimiter),
-        escape_strings_(escape_strings) {}
+        options_(options) {}
 
   const CatalogRelation *catalog_relation_;
-  std::string file_name_;
-
-  const char column_delimiter_;
-  const bool escape_strings_;
+  const std::string file_name_;
+  const BulkIoConfigurationPtr options_;
 
   DISALLOW_COPY_AND_ASSIGN(CopyFrom);
 };
@@ -144,4 +129,4 @@
 }  // namespace optimizer
 }  // namespace quickstep
 
-#endif /* QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_COPYFROM_HPP_ */
+#endif  // QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_COPY_FROM_HPP_
diff --git a/query_optimizer/logical/CopyTo.cpp b/query_optimizer/logical/CopyTo.cpp
new file mode 100644
index 0000000..369f732
--- /dev/null
+++ b/query_optimizer/logical/CopyTo.cpp
@@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ **/
+
+#include "query_optimizer/logical/CopyTo.hpp"
+
+#include <string>
+#include <vector>
+
+#include "query_optimizer/OptimizerTree.hpp"
+#include "utility/StringUtil.hpp"
+
+namespace quickstep {
+namespace optimizer {
+namespace logical {
+
+void CopyTo::getFieldStringItems(
+    std::vector<std::string> *inline_field_names,
+    std::vector<std::string> *inline_field_values,
+    std::vector<std::string> *non_container_child_field_names,
+    std::vector<OptimizerTreeBaseNodePtr> *non_container_child_fields,
+    std::vector<std::string> *container_child_field_names,
+    std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
+  inline_field_names->push_back("file_name");
+  inline_field_values->push_back(file_name_);
+
+  non_container_child_field_names->push_back("input");
+  non_container_child_fields->push_back(input_);
+
+  inline_field_names->push_back("format");
+  inline_field_values->push_back(options_->getFormatName());
+
+  inline_field_names->push_back("column_delimiter");
+  inline_field_values->push_back(
+      "\"" + EscapeSpecialChars(std::string(1, options_->getDelimiter())) + "\"");
+
+  if (options_->escapeStrings()) {
+    inline_field_names->push_back("escape_strings");
+    inline_field_values->push_back("true");
+  }
+
+  if (options_->hasHeader()) {
+    inline_field_names->push_back("header");
+    inline_field_values->push_back("true");
+  }
+
+  if (options_->getQuoteCharacter() != 0) {
+    inline_field_names->push_back("quote");
+    inline_field_values->push_back(std::string(1, options_->getQuoteCharacter()));
+  }
+
+  if (options_->getNullString() != "") {
+    inline_field_names->push_back("null_string");
+    inline_field_values->push_back(options_->getNullString());
+  }
+}
+
+}  // namespace logical
+}  // namespace optimizer
+}  // namespace quickstep
diff --git a/query_optimizer/logical/CopyTo.hpp b/query_optimizer/logical/CopyTo.hpp
new file mode 100644
index 0000000..33060a6
--- /dev/null
+++ b/query_optimizer/logical/CopyTo.hpp
@@ -0,0 +1,141 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ **/
+
+#ifndef QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_COPY_TO_HPP_
+#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_COPY_TO_HPP_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "query_optimizer/OptimizerTree.hpp"
+#include "query_optimizer/expressions/AttributeReference.hpp"
+#include "query_optimizer/logical/Logical.hpp"
+#include "query_optimizer/logical/LogicalType.hpp"
+#include "utility/BulkIoConfiguration.hpp"
+#include "utility/Macros.hpp"
+
+#include "glog/logging.h"
+
+namespace quickstep {
+namespace optimizer {
+namespace logical {
+
+/** \addtogroup OptimizerLogical
+ *  @{
+ */
+
+class CopyTo;
+typedef std::shared_ptr<const CopyTo> CopyToPtr;
+
+/**
+ * @brief Represents an operation that copies data from a relation to a text file.
+ */
+class CopyTo : public Logical {
+ public:
+  LogicalType getLogicalType() const override {
+    return LogicalType::kCopyTo;
+  }
+
+  std::string getName() const override {
+    return "CopyTo";
+  }
+
+  /**
+   * @return The input relation whose data is to be exported.
+   */
+  const LogicalPtr& input() const {
+    return input_;
+  }
+
+  /**
+   * @return The name of the file to write the data to.
+   */
+  const std::string& file_name() const {
+    return file_name_;
+  }
+
+  /**
+   * @return The options for this COPY TO statement.
+   */
+  const BulkIoConfigurationPtr& options() const {
+    return options_;
+  }
+
+  LogicalPtr copyWithNewChildren(
+      const std::vector<LogicalPtr> &new_children) const override {
+    DCHECK_EQ(1u, new_children.size());
+    return Create(new_children.front(), file_name_, options_);
+  }
+
+  std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override {
+    return {};
+  }
+
+  std::vector<expressions::AttributeReferencePtr> getReferencedAttributes() const override {
+    return input_->getOutputAttributes();
+  }
+
+  /**
+   * @brief Creates a CopyTo logical node.
+   *
+   * @param input The input relation whose data is to be exported.
+   * @param file_name The name of the file to write the data to.
+   * @param options The options for this COPY TO statement.
+   * @return An immutable CopyTo logical node.
+   */
+  static CopyToPtr Create(const LogicalPtr &input,
+                          const std::string &file_name,
+                          const BulkIoConfigurationPtr &options) {
+    return CopyToPtr(new CopyTo(input, file_name, options));
+  }
+
+ protected:
+  void getFieldStringItems(
+      std::vector<std::string> *inline_field_names,
+      std::vector<std::string> *inline_field_values,
+      std::vector<std::string> *non_container_child_field_names,
+      std::vector<OptimizerTreeBaseNodePtr> *non_container_child_fields,
+      std::vector<std::string> *container_child_field_names,
+      std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const override;
+
+ private:
+  CopyTo(const LogicalPtr &input,
+         const std::string &file_name,
+         const BulkIoConfigurationPtr &options)
+      : input_(input),
+        file_name_(file_name),
+        options_(options) {
+    addChild(input);
+  }
+
+  const LogicalPtr input_;
+  const std::string file_name_;
+  const BulkIoConfigurationPtr options_;
+
+  DISALLOW_COPY_AND_ASSIGN(CopyTo);
+};
+
+/** @} */
+
+}  // namespace logical
+}  // namespace optimizer
+}  // namespace quickstep
+
+#endif  // QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_COPY_TO_HPP_
diff --git a/query_optimizer/logical/LogicalType.hpp b/query_optimizer/logical/LogicalType.hpp
index 21ffdca..d8b85dd 100644
--- a/query_optimizer/logical/LogicalType.hpp
+++ b/query_optimizer/logical/LogicalType.hpp
@@ -32,8 +32,9 @@
  * @brief Optimizer logical node types.
  **/
 enum class LogicalType {
-  kAggregate,
+  kAggregate = 0,
   kCopyFrom,
+  kCopyTo,
   kCreateIndex,
   kCreateTable,
   kDeleteTuples,
diff --git a/query_optimizer/physical/CMakeLists.txt b/query_optimizer/physical/CMakeLists.txt
index e510f6b..a1a72f7 100644
--- a/query_optimizer/physical/CMakeLists.txt
+++ b/query_optimizer/physical/CMakeLists.txt
@@ -19,6 +19,7 @@
 add_library(quickstep_queryoptimizer_physical_Aggregate Aggregate.cpp Aggregate.hpp)
 add_library(quickstep_queryoptimizer_physical_BinaryJoin BinaryJoin.cpp BinaryJoin.hpp)
 add_library(quickstep_queryoptimizer_physical_CopyFrom CopyFrom.cpp CopyFrom.hpp)
+add_library(quickstep_queryoptimizer_physical_CopyTo CopyTo.cpp CopyTo.hpp)
 add_library(quickstep_queryoptimizer_physical_CreateIndex CreateIndex.cpp CreateIndex.hpp)
 add_library(quickstep_queryoptimizer_physical_CreateTable CreateTable.cpp CreateTable.hpp)
 add_library(quickstep_queryoptimizer_physical_CrossReferenceCoalesceAggregate
@@ -81,7 +82,18 @@
                       quickstep_queryoptimizer_expressions_NamedExpression
                       quickstep_queryoptimizer_physical_Physical
                       quickstep_queryoptimizer_physical_PhysicalType
-                      quickstep_utility_Macros)
+                      quickstep_utility_BulkIoConfiguration
+                      quickstep_utility_Macros
+                      quickstep_utility_StringUtil)
+target_link_libraries(quickstep_queryoptimizer_physical_CopyTo
+                      glog
+                      quickstep_queryoptimizer_OptimizerTree
+                      quickstep_queryoptimizer_expressions_AttributeReference
+                      quickstep_queryoptimizer_physical_Physical
+                      quickstep_queryoptimizer_physical_PhysicalType
+                      quickstep_utility_BulkIoConfiguration
+                      quickstep_utility_Macros
+                      quickstep_utility_StringUtil)
 target_link_libraries(quickstep_queryoptimizer_physical_CreateIndex
                       glog
                       quickstep_queryoptimizer_OptimizerTree
@@ -327,6 +339,7 @@
                       quickstep_queryoptimizer_physical_Aggregate
                       quickstep_queryoptimizer_physical_BinaryJoin
                       quickstep_queryoptimizer_physical_CopyFrom
+                      quickstep_queryoptimizer_physical_CopyTo
                       quickstep_queryoptimizer_physical_CreateIndex
                       quickstep_queryoptimizer_physical_CreateTable
                       quickstep_queryoptimizer_physical_CrossReferenceCoalesceAggregate
diff --git a/query_optimizer/physical/CopyFrom.cpp b/query_optimizer/physical/CopyFrom.cpp
index 8448d4e..65279fe 100644
--- a/query_optimizer/physical/CopyFrom.cpp
+++ b/query_optimizer/physical/CopyFrom.cpp
@@ -24,6 +24,7 @@
 
 #include "catalog/CatalogRelation.hpp"
 #include "query_optimizer/OptimizerTree.hpp"
+#include "utility/StringUtil.hpp"
 
 namespace quickstep {
 namespace optimizer {
@@ -43,10 +44,11 @@
   inline_field_values->push_back(file_name_);
 
   inline_field_names->push_back("column_delimiter");
-  inline_field_values->push_back(std::string(1, column_delimiter_));
+  inline_field_values->push_back(
+      "\"" + EscapeSpecialChars(std::string(1, options_->getDelimiter())) + "\"");
 
   inline_field_names->push_back("escape_strings");
-  inline_field_values->push_back(escape_strings_ ? "true" : "false");
+  inline_field_values->push_back(options_->escapeStrings() ? "true" : "false");
 }
 
 }  // namespace physical
diff --git a/query_optimizer/physical/CopyFrom.hpp b/query_optimizer/physical/CopyFrom.hpp
index ecbf318..c9bbcdf 100644
--- a/query_optimizer/physical/CopyFrom.hpp
+++ b/query_optimizer/physical/CopyFrom.hpp
@@ -17,8 +17,8 @@
  * under the License.
  **/
 
-#ifndef QUICKSTEP_QUERY_OPTIMIZER_PHYSICAL_COPYFROM_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_PHYSICAL_COPYFROM_HPP_
+#ifndef QUICKSTEP_QUERY_OPTIMIZER_PHYSICAL_COPY_FROM_HPP_
+#define QUICKSTEP_QUERY_OPTIMIZER_PHYSICAL_COPY_FROM_HPP_
 
 #include <memory>
 #include <string>
@@ -30,6 +30,7 @@
 #include "query_optimizer/expressions/NamedExpression.hpp"
 #include "query_optimizer/physical/Physical.hpp"
 #include "query_optimizer/physical/PhysicalType.hpp"
+#include "utility/BulkIoConfiguration.hpp"
 #include "utility/Macros.hpp"
 
 #include "glog/logging.h"
@@ -68,22 +69,14 @@
   const std::string& file_name() const { return file_name_; }
 
   /**
-   * @return The delimiter used in the text file to separate columns.
+   * @return The options for this COPY FROM statement.
    */
-  const char column_delimiter() const { return column_delimiter_; }
-
-  /**
-   * @return Whether to decode escape sequences in the text file.
-   */
-  bool escape_strings() const { return escape_strings_; }
+  const BulkIoConfigurationPtr& options() const { return options_; }
 
   PhysicalPtr copyWithNewChildren(
       const std::vector<PhysicalPtr> &new_children) const override {
     DCHECK(new_children.empty());
-    return Create(catalog_relation_,
-                  file_name_,
-                  column_delimiter_,
-                  escape_strings_);
+    return Create(catalog_relation_, file_name_, options_);
   }
 
   std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override {
@@ -112,12 +105,8 @@
    */
   static CopyFromPtr Create(const CatalogRelation *catalog_relation,
                             const std::string &file_name,
-                            const char &column_delimiter,
-                            bool escape_strings) {
-    return CopyFromPtr(new CopyFrom(catalog_relation,
-                                    file_name,
-                                    column_delimiter,
-                                    escape_strings));
+                            const BulkIoConfigurationPtr &options) {
+    return CopyFromPtr(new CopyFrom(catalog_relation, file_name, options));
   }
 
  protected:
@@ -132,18 +121,14 @@
  private:
   CopyFrom(const CatalogRelation *catalog_relation,
            const std::string &file_name,
-           const char column_delimiter,
-           bool escape_strings)
+           const BulkIoConfigurationPtr &options)
       : catalog_relation_(catalog_relation),
         file_name_(file_name),
-        column_delimiter_(column_delimiter),
-        escape_strings_(escape_strings) {}
+        options_(options) {}
 
   const CatalogRelation *catalog_relation_;
-  std::string file_name_;
-
-  const char column_delimiter_;
-  const bool escape_strings_;
+  const std::string file_name_;
+  const BulkIoConfigurationPtr options_;
 
   DISALLOW_COPY_AND_ASSIGN(CopyFrom);
 };
@@ -154,4 +139,4 @@
 }  // namespace optimizer
 }  // namespace quickstep
 
-#endif /* QUICKSTEP_QUERY_OPTIMIZER_PHYSICAL_COPYFROM_HPP_ */
+#endif  // QUICKSTEP_QUERY_OPTIMIZER_PHYSICAL_COPY_FROM_HPP_
diff --git a/query_optimizer/physical/CopyTo.cpp b/query_optimizer/physical/CopyTo.cpp
new file mode 100644
index 0000000..9cd954e
--- /dev/null
+++ b/query_optimizer/physical/CopyTo.cpp
@@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ **/
+
+#include "query_optimizer/physical/CopyTo.hpp"
+
+#include <string>
+#include <vector>
+
+#include "query_optimizer/OptimizerTree.hpp"
+#include "utility/StringUtil.hpp"
+
+namespace quickstep {
+namespace optimizer {
+namespace physical {
+
+void CopyTo::getFieldStringItems(
+    std::vector<std::string> *inline_field_names,
+    std::vector<std::string> *inline_field_values,
+    std::vector<std::string> *non_container_child_field_names,
+    std::vector<OptimizerTreeBaseNodePtr> *non_container_child_fields,
+    std::vector<std::string> *container_child_field_names,
+    std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
+  inline_field_names->push_back("file_name");
+  inline_field_values->push_back(file_name_);
+
+  non_container_child_field_names->push_back("input");
+  non_container_child_fields->push_back(input_);
+
+  inline_field_names->push_back("format");
+  inline_field_values->push_back(options_->getFormatName());
+
+  inline_field_names->push_back("column_delimiter");
+  inline_field_values->push_back(
+      "\"" + EscapeSpecialChars(std::string(1, options_->getDelimiter())) + "\"");
+
+  if (options_->escapeStrings()) {
+    inline_field_names->push_back("escape_strings");
+    inline_field_values->push_back("true");
+  }
+
+  if (options_->hasHeader()) {
+    inline_field_names->push_back("header");
+    inline_field_values->push_back("true");
+  }
+
+  if (options_->getQuoteCharacter() != 0) {
+    inline_field_names->push_back("quote");
+    inline_field_values->push_back(std::string(1, options_->getQuoteCharacter()));
+  }
+
+  if (options_->getNullString() != "") {
+    inline_field_names->push_back("null_string");
+    inline_field_values->push_back(options_->getNullString());
+  }
+}
+
+}  // namespace physical
+}  // namespace optimizer
+}  // namespace quickstep
diff --git a/query_optimizer/physical/CopyTo.hpp b/query_optimizer/physical/CopyTo.hpp
new file mode 100644
index 0000000..004d4f8
--- /dev/null
+++ b/query_optimizer/physical/CopyTo.hpp
@@ -0,0 +1,147 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ **/
+
+#ifndef QUICKSTEP_QUERY_OPTIMIZER_PHYSICAL_COPY_TO_HPP_
+#define QUICKSTEP_QUERY_OPTIMIZER_PHYSICAL_COPY_TO_HPP_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "query_optimizer/OptimizerTree.hpp"
+#include "query_optimizer/expressions/AttributeReference.hpp"
+#include "query_optimizer/physical/Physical.hpp"
+#include "query_optimizer/physical/PhysicalType.hpp"
+#include "utility/BulkIoConfiguration.hpp"
+#include "utility/Macros.hpp"
+
+#include "glog/logging.h"
+
+namespace quickstep {
+namespace optimizer {
+namespace physical {
+
+/** \addtogroup OptimizerPhysical
+ *  @{
+ */
+
+class CopyTo;
+typedef std::shared_ptr<const CopyTo> CopyToPtr;
+
+/**
+ * @brief Represents an operation that copies data from a relation to a text file.
+ */
+class CopyTo : public Physical {
+ public:
+  PhysicalType getPhysicalType() const override {
+    return PhysicalType::kCopyTo;
+  }
+
+  std::string getName() const override {
+    return "CopyTo";
+  }
+
+  /**
+   * @return The input relation whose data is to be exported.
+   */
+  const PhysicalPtr& input() const {
+    return input_;
+  }
+
+  /**
+   * @return The name of the file to write the data to.
+   */
+  const std::string& file_name() const {
+    return file_name_;
+  }
+
+  /**
+   * @return The options for this COPY TO statement.
+   */
+  const BulkIoConfigurationPtr& options() const {
+    return options_;
+  }
+
+  PhysicalPtr copyWithNewChildren(
+      const std::vector<PhysicalPtr> &new_children) const override {
+    DCHECK_EQ(1u, new_children.size());
+    return Create(new_children.front(), file_name_, options_);
+  }
+
+  std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override {
+    return {};
+  }
+
+  std::vector<expressions::AttributeReferencePtr> getReferencedAttributes() const override {
+    return input_->getOutputAttributes();
+  }
+
+  bool maybeCopyWithPrunedExpressions(
+      const expressions::UnorderedNamedExpressionSet &referenced_expressions,
+      PhysicalPtr *output) const override {
+    return false;
+  }
+
+  /**
+   * @brief Creates a CopyTo physical node.
+   *
+   * @param input The input relation whose data is to be exported.
+   * @param file_name The name of the file to write the data to.
+   * @param options The options for this COPY TO statement.
+   * @return An immutable CopyTo physical node.
+   */
+  static CopyToPtr Create(const PhysicalPtr &input,
+                          const std::string &file_name,
+                          const BulkIoConfigurationPtr &options) {
+    return CopyToPtr(new CopyTo(input, file_name, options));
+  }
+
+ protected:
+  void getFieldStringItems(
+      std::vector<std::string> *inline_field_names,
+      std::vector<std::string> *inline_field_values,
+      std::vector<std::string> *non_container_child_field_names,
+      std::vector<OptimizerTreeBaseNodePtr> *non_container_child_fields,
+      std::vector<std::string> *container_child_field_names,
+      std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const override;
+
+ private:
+  CopyTo(const PhysicalPtr &input,
+         const std::string &file_name,
+         const BulkIoConfigurationPtr &options)
+      : input_(input),
+        file_name_(file_name),
+        options_(options) {
+    addChild(input);
+  }
+
+  const PhysicalPtr input_;
+  const std::string file_name_;
+  const BulkIoConfigurationPtr options_;
+
+  DISALLOW_COPY_AND_ASSIGN(CopyTo);
+};
+
+/** @} */
+
+}  // namespace physical
+}  // namespace optimizer
+}  // namespace quickstep
+
+#endif  // QUICKSTEP_QUERY_OPTIMIZER_PHYSICAL_COPY_TO_HPP_
diff --git a/query_optimizer/physical/PhysicalType.hpp b/query_optimizer/physical/PhysicalType.hpp
index 47db7ec..0a965af 100644
--- a/query_optimizer/physical/PhysicalType.hpp
+++ b/query_optimizer/physical/PhysicalType.hpp
@@ -32,8 +32,9 @@
  * @brief Optimizer physical node types.
  **/
 enum class PhysicalType {
-  kAggregate,
+  kAggregate = 0,
   kCopyFrom,
+  kCopyTo,
   kCreateIndex,
   kCreateTable,
   kCrossReferenceCoalesceAggregate,
diff --git a/query_optimizer/resolver/CMakeLists.txt b/query_optimizer/resolver/CMakeLists.txt
index 4e364a6..6feb1e8 100644
--- a/query_optimizer/resolver/CMakeLists.txt
+++ b/query_optimizer/resolver/CMakeLists.txt
@@ -97,6 +97,7 @@
                       quickstep_queryoptimizer_expressions_WindowAggregateFunction
                       quickstep_queryoptimizer_logical_Aggregate
                       quickstep_queryoptimizer_logical_CopyFrom
+                      quickstep_queryoptimizer_logical_CopyTo
                       quickstep_queryoptimizer_logical_CreateIndex
                       quickstep_queryoptimizer_logical_CreateTable
                       quickstep_queryoptimizer_logical_DeleteTuples
@@ -131,6 +132,7 @@
                       quickstep_types_operations_unaryoperations_DateExtractOperation
                       quickstep_types_operations_unaryoperations_SubstringOperation
                       quickstep_types_operations_unaryoperations_UnaryOperation
+                      quickstep_utility_BulkIoConfiguration
                       quickstep_utility_Macros
                       quickstep_utility_PtrList
                       quickstep_utility_PtrVector
diff --git a/query_optimizer/resolver/Resolver.cpp b/query_optimizer/resolver/Resolver.cpp
index 0f65255..935e235 100644
--- a/query_optimizer/resolver/Resolver.cpp
+++ b/query_optimizer/resolver/Resolver.cpp
@@ -93,6 +93,7 @@
 #include "query_optimizer/expressions/WindowAggregateFunction.hpp"
 #include "query_optimizer/logical/Aggregate.hpp"
 #include "query_optimizer/logical/CopyFrom.hpp"
+#include "query_optimizer/logical/CopyTo.hpp"
 #include "query_optimizer/logical/CreateIndex.hpp"
 #include "query_optimizer/logical/CreateTable.hpp"
 #include "query_optimizer/logical/DeleteTuples.hpp"
@@ -126,6 +127,7 @@
 #include "types/operations/unary_operations/DateExtractOperation.hpp"
 #include "types/operations/unary_operations/SubstringOperation.hpp"
 #include "types/operations/unary_operations/UnaryOperation.hpp"
+#include "utility/BulkIoConfiguration.hpp"
 #include "utility/PtrList.hpp"
 #include "utility/PtrVector.hpp"
 #include "utility/SqlError.hpp"
@@ -143,6 +145,45 @@
 namespace L = ::quickstep::optimizer::logical;
 namespace S = ::quickstep::serialization;
 
+namespace {
+
+attribute_id GetAttributeIdFromName(
+    const PtrList<ParseAttributeDefinition> &attribute_definition_list,
+    const std::string &attribute_name) {
+  const std::string lower_attribute_name = ToLower(attribute_name);
+
+  attribute_id attr_id = 0;
+  for (const ParseAttributeDefinition &attribute_definition : attribute_definition_list) {
+    if (lower_attribute_name == ToLower(attribute_definition.name()->value())) {
+      return attr_id;
+    }
+
+    ++attr_id;
+  }
+
+  return kInvalidAttributeID;
+}
+
+const ParseString* GetKeyValueString(const ParseKeyValue &key_value) {
+  if (key_value.getKeyValueType() != ParseKeyValue::kStringString) {
+      THROW_SQL_ERROR_AT(&key_value)
+          << "Invalid value type for " << key_value.key()->value()
+          << ", expected a string.";
+  }
+  return static_cast<const ParseKeyStringValue&>(key_value).value();
+}
+
+bool GetKeyValueBool(const ParseKeyValue &key_value) {
+  if (key_value.getKeyValueType() != ParseKeyValue::kStringBool) {
+      THROW_SQL_ERROR_AT(&key_value)
+          << "Invalid value for " << key_value.key()->value()
+          << ", expected true or false.";
+  }
+  return static_cast<const ParseKeyBoolValue&>(key_value).value();
+}
+
+}  // namespace
+
 struct Resolver::ExpressionResolutionInfo {
   /**
    * @brief Constructs an ExpressionResolutionInfo that disallows aggregate
@@ -316,11 +357,25 @@
 
 L::LogicalPtr Resolver::resolve(const ParseStatement &parse_query) {
   switch (parse_query.getStatementType()) {
-    case ParseStatement::kCopyFrom:
-      context_->set_is_catalog_changed();
-      logical_plan_ = resolveCopyFrom(
-          static_cast<const ParseStatementCopyFrom&>(parse_query));
+    case ParseStatement::kCopy: {
+      const ParseStatementCopy &copy_statemnt =
+          static_cast<const ParseStatementCopy&>(parse_query);
+      if (copy_statemnt.getCopyDirection() == ParseStatementCopy::kFrom) {
+        context_->set_is_catalog_changed();
+        logical_plan_ = resolveCopyFrom(copy_statemnt);
+      } else {
+        DCHECK(copy_statemnt.getCopyDirection() == ParseStatementCopy::kTo);
+        if (copy_statemnt.with_clause() != nullptr) {
+          resolveWithClause(*copy_statemnt.with_clause());
+        }
+        logical_plan_ = resolveCopyTo(copy_statemnt);
+
+        if (copy_statemnt.with_clause() != nullptr) {
+          reportIfWithClauseUnused(*copy_statemnt.with_clause());
+        }
+      }
       break;
+    }
     case ParseStatement::kCreateTable:
       context_->set_is_catalog_changed();
       logical_plan_ = resolveCreateTable(
@@ -359,16 +414,7 @@
         logical_plan_ = resolveInsertSelection(insert_selection_statement);
 
         if (insert_selection_statement.with_clause() != nullptr) {
-          // Report an error if there is a WITH query that is not actually used.
-          if (!with_queries_info_.unreferenced_query_indexes.empty()) {
-            int unreferenced_with_query_index = *with_queries_info_.unreferenced_query_indexes.begin();
-            const ParseSubqueryTableReference &unreferenced_with_query =
-                (*insert_selection_statement.with_clause())[unreferenced_with_query_index];
-            THROW_SQL_ERROR_AT(&unreferenced_with_query)
-                << "WITH query "
-                << unreferenced_with_query.table_reference_signature()->table_alias()->value()
-                << " is defined but not used";
-          }
+          reportIfWithClauseUnused(*insert_selection_statement.with_clause());
         }
       }
       break;
@@ -385,16 +431,7 @@
                               nullptr /* type_hints */,
                               nullptr /* parent_resolver */);
       if (set_operation_statement.with_clause() != nullptr) {
-        // Report an error if there is a WITH query that is not actually used.
-        if (!with_queries_info_.unreferenced_query_indexes.empty()) {
-          int unreferenced_with_query_index = *with_queries_info_.unreferenced_query_indexes.begin();
-          const ParseSubqueryTableReference &unreferenced_with_query =
-              (*set_operation_statement.with_clause())[unreferenced_with_query_index];
-          THROW_SQL_ERROR_AT(&unreferenced_with_query)
-              << "WITH query "
-              << unreferenced_with_query.table_reference_signature()->table_alias()->value()
-              << " is defined but not used";
-        }
+        reportIfWithClauseUnused(*set_operation_statement.with_clause());
       }
       break;
     }
@@ -418,27 +455,156 @@
 }
 
 L::LogicalPtr Resolver::resolveCopyFrom(
-    const ParseStatementCopyFrom &copy_from_statement) {
-  // Default parameters.
-  std::string column_delimiter_ = "\t";
-  bool escape_strings_ = true;
+    const ParseStatementCopy &copy_from_statement) {
+  DCHECK(copy_from_statement.getCopyDirection() == ParseStatementCopy::kFrom);
+  const PtrList<ParseKeyValue> *params = copy_from_statement.params();
 
-  const ParseCopyFromParams *params = copy_from_statement.params();
+  BulkIoFormat file_format = BulkIoFormat::kText;
   if (params != nullptr) {
-    if (params->delimiter != nullptr) {
-      column_delimiter_ = params->delimiter->value();
-      if (column_delimiter_.size() != 1) {
-        THROW_SQL_ERROR_AT(params->delimiter)
-            << "DELIMITER is not a single character";
+    for (const ParseKeyValue &param : *params) {
+      const std::string &key = ToLower(param.key()->value());
+      if (key == "format") {
+        const ParseString *parse_format = GetKeyValueString(param);
+        const std::string format = ToLower(parse_format->value());
+        // TODO(jianqiao): Support other bulk load formats such as CSV.
+        if (format != "text") {
+          THROW_SQL_ERROR_AT(parse_format) << "Unsupported file format: " << format;
+        }
+        // Update file_format when other formats get supported.
+        break;
       }
     }
-    escape_strings_ = params->escape_strings;
+  }
+
+  std::unique_ptr<BulkIoConfiguration> options =
+      std::make_unique<BulkIoConfiguration>(file_format);
+  if (params != nullptr) {
+    for (const ParseKeyValue &param : *params) {
+      const std::string key = ToLower(param.key()->value());
+      if (key == "delimiter") {
+        const ParseString *parse_delimiter = GetKeyValueString(param);
+        const std::string &delimiter = parse_delimiter->value();
+        if (delimiter.size() != 1u) {
+          THROW_SQL_ERROR_AT(parse_delimiter)
+              << "DELIMITER is not a single character";
+        }
+        options->setDelimiter(delimiter.front());
+      } else if (key == "escape_strings") {
+        options->setEscapeStrings(GetKeyValueBool(param));
+      } else if (key != "format") {
+        THROW_SQL_ERROR_AT(&param) << "Unsupported copy option: " << key;
+      }
+    }
   }
 
   return L::CopyFrom::Create(resolveRelationName(copy_from_statement.relation_name()),
-                             copy_from_statement.source_filename()->value(),
-                             column_delimiter_[0],
-                             escape_strings_);
+                             copy_from_statement.file_name()->value(),
+                             BulkIoConfigurationPtr(options.release()));
+}
+
+L::LogicalPtr Resolver::resolveCopyTo(
+    const ParseStatementCopy &copy_to_statement) {
+  DCHECK(copy_to_statement.getCopyDirection() == ParseStatementCopy::kTo);
+  const PtrList<ParseKeyValue> *params = copy_to_statement.params();
+
+  // Check if copy format is explicitly specified.
+  BulkIoFormat file_format = BulkIoFormat::kText;
+  bool format_specified = false;
+  if (params != nullptr) {
+    for (const ParseKeyValue &param : *params) {
+      const std::string &key = ToLower(param.key()->value());
+      if (key == "format") {
+        const ParseString *parse_format = GetKeyValueString(param);
+        const std::string format = ToLower(parse_format->value());
+        if (format == "csv") {
+          file_format = BulkIoFormat::kCsv;
+        } else if (format == "text") {
+          file_format = BulkIoFormat::kText;
+        } else {
+          THROW_SQL_ERROR_AT(parse_format) << "Unsupported file format: " << format;
+        }
+        format_specified = true;
+        break;
+      }
+    }
+  }
+
+  const std::string &file_name = copy_to_statement.file_name()->value();
+  if (file_name.length() <= 1u) {
+    THROW_SQL_ERROR_AT(copy_to_statement.file_name())
+        << "File name can not be empty";
+  }
+
+  // Infer copy format from file name extension.
+  if (!format_specified) {
+    if (file_name.length() > 4u) {
+      if (ToLower(file_name.substr(file_name.length() - 4)) == ".csv") {
+        file_format = BulkIoFormat::kCsv;
+      }
+    }
+  }
+
+  // Resolve the copy options.
+  std::unique_ptr<BulkIoConfiguration> options =
+      std::make_unique<BulkIoConfiguration>(file_format);
+  if (params != nullptr) {
+    for (const ParseKeyValue &param : *params) {
+      const std::string key = ToLower(param.key()->value());
+      if (key == "delimiter") {
+        const ParseString *parse_delimiter = GetKeyValueString(param);
+        const std::string &delimiter = parse_delimiter->value();
+        if (delimiter.size() != 1u) {
+          THROW_SQL_ERROR_AT(parse_delimiter)
+              << "DELIMITER is not a single character";
+        }
+        options->setDelimiter(delimiter.front());
+      } else if (file_format == BulkIoFormat::kText && key == "escape_strings") {
+        options->setEscapeStrings(GetKeyValueBool(param));
+      } else if (file_format == BulkIoFormat::kCsv && key == "header") {
+        options->setHeader(GetKeyValueBool(param));
+      } else if (file_format == BulkIoFormat::kCsv && key == "quote") {
+        const ParseString *parse_quote = GetKeyValueString(param);
+        const std::string &quote = parse_quote->value();
+        if (quote.size() != 1u) {
+          THROW_SQL_ERROR_AT(parse_quote)
+              << "QUOTE is not a single character";
+        }
+        options->setQuoteCharacter(quote.front());
+      } else if (key == "null_string") {
+        const ParseString *parse_null_string = GetKeyValueString(param);
+        options->setNullString(parse_null_string->value());
+      } else if (key != "format") {
+        THROW_SQL_ERROR_AT(&param)
+            << "Unsupported copy option \"" << key
+            << "\" for file format " << options->getFormatName();
+      }
+    }
+  }
+
+  // Resolve the source relation.
+  L::LogicalPtr input;
+  if (copy_to_statement.set_operation_query() != nullptr) {
+    input = resolveSetOperation(*copy_to_statement.set_operation_query(),
+                                "" /* set_operation_name */,
+                                nullptr /* type_hints */,
+                                nullptr /* parent_resolver */);
+  } else {
+    const ParseString *relation_name = copy_to_statement.relation_name();
+    DCHECK(relation_name != nullptr);
+    ParseSimpleTableReference table_reference(
+        relation_name->line_number(),
+        relation_name->column_number(),
+        new ParseString(relation_name->line_number(),
+                        relation_name->column_number(),
+                        relation_name->value()),
+        nullptr /* sample */);
+    NameResolver name_resolver;
+    input = resolveTableReference(table_reference, &name_resolver);
+  }
+
+  return L::CopyTo::Create(input,
+                           copy_to_statement.file_name()->value(),
+                           BulkIoConfigurationPtr(options.release()));
 }
 
 L::LogicalPtr Resolver::resolveCreateTable(
@@ -491,26 +657,6 @@
   return L::CreateTable::Create(relation_name, attributes, block_properties, partition_scheme_header_proto);
 }
 
-namespace {
-
-attribute_id GetAttributeIdFromName(const PtrList<ParseAttributeDefinition> &attribute_definition_list,
-                                    const std::string &attribute_name) {
-  const std::string lower_attribute_name = ToLower(attribute_name);
-
-  attribute_id attr_id = 0;
-  for (const ParseAttributeDefinition &attribute_definition : attribute_definition_list) {
-    if (lower_attribute_name == ToLower(attribute_definition.name()->value())) {
-      return attr_id;
-    }
-
-    ++attr_id;
-  }
-
-  return kInvalidAttributeID;
-}
-
-}  // namespace
-
 StorageBlockLayoutDescription* Resolver::resolveBlockProperties(
     const ParseStatementCreateTable &create_table_statement) {
   const ParseBlockProperties *block_properties
@@ -1595,6 +1741,20 @@
   }
 }
 
+void Resolver::reportIfWithClauseUnused(
+    const PtrVector<ParseSubqueryTableReference> &with_list) const {
+  if (!with_queries_info_.unreferenced_query_indexes.empty()) {
+    const int unreferenced_with_query_index =
+        *with_queries_info_.unreferenced_query_indexes.begin();
+    const ParseSubqueryTableReference &unreferenced_with_query =
+        with_list[unreferenced_with_query_index];
+    THROW_SQL_ERROR_AT(&unreferenced_with_query)
+        << "WITH query "
+        << unreferenced_with_query.table_reference_signature()->table_alias()->value()
+        << " is defined but not used";
+  }
+}
+
 void Resolver::validateSelectExpressionsForAggregation(
     const ParseSelectionClause &parse_selection,
     const std::vector<E::NamedExpressionPtr> &select_list_expressions,
diff --git a/query_optimizer/resolver/Resolver.hpp b/query_optimizer/resolver/Resolver.hpp
index 1ae565a..1784782 100644
--- a/query_optimizer/resolver/Resolver.hpp
+++ b/query_optimizer/resolver/Resolver.hpp
@@ -55,7 +55,7 @@
 class ParseSimpleTableReference;
 class ParseSubqueryTableReference;
 class ParseStatement;
-class ParseStatementCopyFrom;
+class ParseStatementCopy;
 class ParseStatementCreateTable;
 class ParseStatementCreateIndex;
 class ParseStatementDelete;
@@ -283,7 +283,16 @@
    * @return A logical plan for the COPY FROM query.
    */
   logical::LogicalPtr resolveCopyFrom(
-      const ParseStatementCopyFrom &copy_from_statement);
+      const ParseStatementCopy &copy_from_statement);
+
+  /**
+   * @brief Resolves a COPY TO query and returns a logical plan.
+   *
+   * @param copy_to_statement The COPY TO parse tree.
+   * @return A logical plan for the COPY TO query.
+   */
+  logical::LogicalPtr resolveCopyTo(
+      const ParseStatementCopy &copy_to_statement);
 
   /**
    * @brief Resolves a UPDATE query and returns a logical plan.
@@ -621,6 +630,14 @@
   static std::string GenerateOrderingAttributeAlias(int index);
 
   /**
+   * @brief Reports an error if there is a WITH query that is not actually used.
+   *
+   * @param with_list The list of subqueries in WITH clause.
+   */
+  void reportIfWithClauseUnused(
+      const PtrVector<ParseSubqueryTableReference> &with_list) const;
+
+  /**
    * @brief Validates each SELECT-list expression to ensure that it does not
    *        reference a named expression with an ID not in \p valid_expr_id_set.
    *
diff --git a/query_optimizer/strategy/CMakeLists.txt b/query_optimizer/strategy/CMakeLists.txt
index e011126..20a4eb4 100644
--- a/query_optimizer/strategy/CMakeLists.txt
+++ b/query_optimizer/strategy/CMakeLists.txt
@@ -76,6 +76,7 @@
                       quickstep_queryoptimizer_expressions_AttributeReference
                       quickstep_queryoptimizer_expressions_ExpressionUtil
                       quickstep_queryoptimizer_logical_CopyFrom
+                      quickstep_queryoptimizer_logical_CopyTo
                       quickstep_queryoptimizer_logical_CreateIndex
                       quickstep_queryoptimizer_logical_CreateTable
                       quickstep_queryoptimizer_logical_DeleteTuples
@@ -95,6 +96,7 @@
                       quickstep_queryoptimizer_logical_WindowAggregate
                       quickstep_queryoptimizer_physical_Aggregate
                       quickstep_queryoptimizer_physical_CopyFrom
+                      quickstep_queryoptimizer_physical_CopyTo
                       quickstep_queryoptimizer_physical_CreateIndex
                       quickstep_queryoptimizer_physical_CreateTable
                       quickstep_queryoptimizer_physical_DeleteTuples
diff --git a/query_optimizer/strategy/OneToOne.cpp b/query_optimizer/strategy/OneToOne.cpp
index af4e150..3cfe013 100644
--- a/query_optimizer/strategy/OneToOne.cpp
+++ b/query_optimizer/strategy/OneToOne.cpp
@@ -27,6 +27,7 @@
 #include "query_optimizer/expressions/AttributeReference.hpp"
 #include "query_optimizer/expressions/ExpressionUtil.hpp"
 #include "query_optimizer/logical/CopyFrom.hpp"
+#include "query_optimizer/logical/CopyTo.hpp"
 #include "query_optimizer/logical/CreateIndex.hpp"
 #include "query_optimizer/logical/CreateTable.hpp"
 #include "query_optimizer/logical/DeleteTuples.hpp"
@@ -45,6 +46,7 @@
 #include "query_optimizer/logical/WindowAggregate.hpp"
 #include "query_optimizer/physical/Aggregate.hpp"
 #include "query_optimizer/physical/CopyFrom.hpp"
+#include "query_optimizer/physical/CopyTo.hpp"
 #include "query_optimizer/physical/CreateIndex.hpp"
 #include "query_optimizer/physical/CreateTable.hpp"
 #include "query_optimizer/physical/DeleteTuples.hpp"
@@ -104,19 +106,28 @@
     case L::LogicalType::kCopyFrom: {
       const L::CopyFromPtr copy_from =
           std::static_pointer_cast<const L::CopyFrom>(logical_input);
-      *physical_output = P::CopyFrom::Create(
-          copy_from->catalog_relation(), copy_from->file_name(),
-          copy_from->column_delimiter(), copy_from->escape_strings());
+      *physical_output = P::CopyFrom::Create(copy_from->catalog_relation(),
+                                             copy_from->file_name(),
+                                             copy_from->options());
+      return true;
+    }
+    case L::LogicalType::kCopyTo: {
+      const L::CopyToPtr copy_to =
+          std::static_pointer_cast<const L::CopyTo>(logical_input);
+      *physical_output = P::CopyTo::Create(
+          physical_mapper_->createOrGetPhysicalFromLogical(copy_to->input()),
+          copy_to->file_name(),
+          copy_to->options());
       return true;
     }
     case L::LogicalType::kCreateIndex: {
       const L::CreateIndexPtr create_index =
           std::static_pointer_cast<const L::CreateIndex>(logical_input);
-      *physical_output = P::CreateIndex::Create(physical_mapper_->createOrGetPhysicalFromLogical(
-                                                                    create_index->input()),
-                                                create_index->index_name(),
-                                                create_index->index_attributes(),
-                                                create_index->index_description());
+      *physical_output = P::CreateIndex::Create(
+          physical_mapper_->createOrGetPhysicalFromLogical(create_index->input()),
+          create_index->index_name(),
+          create_index->index_attributes(),
+          create_index->index_description());
       return true;
     }
     case L::LogicalType::kCreateTable: {
diff --git a/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp b/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
index ee9bee7..050ef0d 100644
--- a/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
+++ b/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
@@ -62,6 +62,9 @@
   MemStream output_stream;
   sql_parser_.feedNextBuffer(new std::string(input));
 
+  // Redirect stderr to output_stream.
+  stderr = output_stream.file();
+
   while (true) {
     ParseResult result = sql_parser_.getNextStatement();
     if (result.condition != ParseResult::kSuccess) {
@@ -71,8 +74,6 @@
       break;
     } else {
       const ParseStatement &parse_statement = *result.parsed_statement;
-      std::printf("%s\n", parse_statement.toString().c_str());
-
       const CatalogRelation *query_result_relation = nullptr;
       try {
         OptimizerContext optimizer_context;
diff --git a/query_optimizer/tests/execution_generator/CMakeLists.txt b/query_optimizer/tests/execution_generator/CMakeLists.txt
index 09a7647..ebcb0b6 100644
--- a/query_optimizer/tests/execution_generator/CMakeLists.txt
+++ b/query_optimizer/tests/execution_generator/CMakeLists.txt
@@ -20,6 +20,11 @@
          "${CMAKE_CURRENT_SOURCE_DIR}/CommonSubexpression.test"
          "${CMAKE_CURRENT_BINARY_DIR}/CommonSubexpression.test"
          "${CMAKE_CURRENT_BINARY_DIR}/CommonSubexpression/")
+add_test(quickstep_queryoptimizer_tests_executiongenerator_copy
+         "../quickstep_queryoptimizer_tests_ExecutionGeneratorTest"
+         "${CMAKE_CURRENT_SOURCE_DIR}/Copy.test"
+         "${CMAKE_CURRENT_BINARY_DIR}/Copy.test"
+         "${CMAKE_CURRENT_BINARY_DIR}/Copy/")
 add_test(quickstep_queryoptimizer_tests_executiongenerator_create
          "../quickstep_queryoptimizer_tests_ExecutionGeneratorTest"
          "${CMAKE_CURRENT_SOURCE_DIR}/Create.test"
@@ -158,6 +163,7 @@
 # Create the folders where the unit tests will store their data blocks for the
 # duration of their test.
 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CommonSubexpression)
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Copy)
 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Create)
 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Delete)
 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Distinct)
diff --git a/query_optimizer/tests/execution_generator/Copy.test b/query_optimizer/tests/execution_generator/Copy.test
new file mode 100644
index 0000000..fa892c1
--- /dev/null
+++ b/query_optimizer/tests/execution_generator/Copy.test
@@ -0,0 +1,127 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+CREATE TABLE source (
+  int_col INT NULL,
+  date_col DATE NULL,
+  char_col CHAR(16),
+  varchar_col VARCHAR(16)
+);
+
+INSERT INTO source VALUES(1, '2000-01-01', 'aa', 'aaa');
+INSERT INTO source VALUES(2, '2000-02-02', 'bb', 'bbb');
+INSERT INTO source VALUES(3, '2000-03-03', 'cc', 'ccc');
+INSERT INTO source VALUES(4, '2000-04-04', 'aa', 'ddd');
+INSERT INTO source VALUES(5, '2000-05-05', 'bb', 'eee');
+INSERT INTO source VALUES(6, '2000-06-06', 'cc', 'fff');
+
+COPY source TO stderr WITH (DELIMITER '|');
+--
+1|2000-01-01|aa|aaa
+2|2000-02-02|bb|bbb
+3|2000-03-03|cc|ccc
+4|2000-04-04|aa|ddd
+5|2000-05-05|bb|eee
+6|2000-06-06|cc|fff
+==
+
+COPY
+  SELECT char_col, SUM(int_col)
+  FROM source
+  GROUP BY char_col
+TO stderr;
+--
+aa	5
+bb	7
+cc	9
+==
+
+COPY
+  SELECT * FROM (
+    SELECT -int_col * 1000, 'Negative' FROM source
+    UNION ALL
+    SELECT int_col * 1000, 'Positive' FROM source
+  ) AS t(VALUE, SIGN)
+  ORDER BY value
+TO stderr WITH (FORMAT 'CSV', DELIMITER e'\t');
+--
+VALUE	SIGN
+-6000	Negative
+-5000	Negative
+-4000	Negative
+-3000	Negative
+-2000	Negative
+-1000	Negative
+1000	Positive
+2000	Positive
+3000	Positive
+4000	Positive
+5000	Positive
+6000	Positive
+==
+
+# WITH clause.
+WITH r(x, y) AS (
+  SELECT i, i + 1
+  FROM generate_series(0, 9) AS g(i)
+)
+COPY
+  SELECT x * y AS value FROM r ORDER BY value
+TO stderr;
+--
+0
+2
+6
+12
+20
+30
+42
+56
+72
+90
+==
+
+
+# Test handling of NULL values and special characters.
+DELETE FROM source;
+INSERT INTO source VALUES(1, '2000-01-01', 'abc', 'def');
+INSERT INTO source VALUES(2, '2000-02-02', e'a\ta', '|,|');
+INSERT INTO source VALUES(NULL, NULL, e'b\nb', '"""');
+
+COPY source TO stderr;
+--
+1	2000-01-01	abc	def
+2	2000-02-02	a\ta	|,|
+\N	\N	b\nb	"""
+==
+
+COPY source TO stderr WITH (FORMAT 'CSV', HEADER FALSE);
+--
+1,2000-01-01,abc,def
+2,2000-02-02,a	a,"|,|"
+,,"b
+b",""""""""
+==
+
+COPY source TO stderr WITH (FORMAT 'CSV', DELIMITER '|', NULL_STRING '.na', HEADER TRUE);
+--
+int_col|date_col|char_col|varchar_col
+1|2000-01-01|abc|def
+2|2000-02-02|a	a|"|,|"
+.na|.na|"b
+b"|""""""""
+==
diff --git a/query_optimizer/tests/physical_generator/Copy.test b/query_optimizer/tests/physical_generator/Copy.test
index 2f66415..3d76373 100644
--- a/query_optimizer/tests/physical_generator/Copy.test
+++ b/query_optimizer/tests/physical_generator/Copy.test
@@ -26,7 +26,7 @@
   +-[]
 [Physical Plan]
 TopLevelPlan
-+-plan=CopyFrom[relation=Test,file_name=test.txt,column_delimiter=	,
++-plan=CopyFrom[relation=Test,file_name=test.txt,column_delimiter="\t",
 | escape_strings=true]
 +-output_attributes=
   +-[]
@@ -42,7 +42,7 @@
   +-[]
 [Physical Plan]
 TopLevelPlan
-+-plan=CopyFrom[relation=Test,file_name=test.txt,column_delimiter=d,
++-plan=CopyFrom[relation=Test,file_name=test.txt,column_delimiter="d",
 | escape_strings=false]
 +-output_attributes=
   +-[]
diff --git a/query_optimizer/tests/resolver/Copy.test b/query_optimizer/tests/resolver/Copy.test
index c2ae91a..d68e18f 100644
--- a/query_optimizer/tests/resolver/Copy.test
+++ b/query_optimizer/tests/resolver/Copy.test
@@ -16,7 +16,7 @@
 # under the License.
 
 [default initial_logical_plan]
-copy test from 'test.txt'
+COPY test FROM 'test.txt'
 --
 TopLevelPlan
 +-plan=CopyFrom[relation=Test,file_name=test.txt,column_delimiter="\t",
@@ -25,14 +25,14 @@
   +-[]
 ==
 
-copy tESt from 'test.txt' with (delimiter '123')
+COPY tESt FROM 'test.txt' WITH (delimiter '123')
 --
 ERROR: DELIMITER is not a single character (1 : 43)
-copy tESt from 'test.txt' with (delimiter '123')
+COPY tESt FROM 'test.txt' WITH (delimiter '123')
                                           ^
 ==
 
-copy tESt from 'test.txt' with (delimiter 'd', escape_strings false)
+COPY tESt FROM 'test.txt' WITH (delimiter 'd', escape_strings false)
 --
 TopLevelPlan
 +-plan=CopyFrom[relation=Test,file_name=test.txt,column_delimiter="d",
@@ -41,8 +41,160 @@
   +-[]
 ==
 
-copy undefined_table from 'test.txt'
+COPY test TO 'test.txt';
+--
+TopLevelPlan
++-plan=CopyTo[file_name=@test.txt,format=TEXT,column_delimiter="\t",
+| escape_strings=true,null_string=\N]
+| +-input=TableReference[relation_name=Test,relation_alias=test]
+|   +-AttributeReference[id=0,name=int_col,relation=test,type=Int NULL]
+|   +-AttributeReference[id=1,name=long_col,relation=test,type=Long]
+|   +-AttributeReference[id=2,name=float_col,relation=test,type=Float]
+|   +-AttributeReference[id=3,name=double_col,relation=test,type=Double NULL]
+|   +-AttributeReference[id=4,name=char_col,relation=test,type=Char(20)]
+|   +-AttributeReference[id=5,name=vchar_col,relation=test,type=VarChar(20) NULL]
++-output_attributes=
+  +-[]
+==
+
+COPY test TO stdout WITH (FORMAT 'CSV');
+--
+TopLevelPlan
++-plan=CopyTo[file_name=$stdout,format=CSV,column_delimiter=",",header=true,
+| quote="]
+| +-input=TableReference[relation_name=Test,relation_alias=test]
+|   +-AttributeReference[id=0,name=int_col,relation=test,type=Int NULL]
+|   +-AttributeReference[id=1,name=long_col,relation=test,type=Long]
+|   +-AttributeReference[id=2,name=float_col,relation=test,type=Float]
+|   +-AttributeReference[id=3,name=double_col,relation=test,type=Double NULL]
+|   +-AttributeReference[id=4,name=char_col,relation=test,type=Char(20)]
+|   +-AttributeReference[id=5,name=vchar_col,relation=test,type=VarChar(20) NULL]
++-output_attributes=
+  +-[]
+==
+
+COPY
+  SELECT SUM(int_col) AS sum_int,
+         AVG(double_col) AS avg_dbl
+  FROM test
+  GROUP BY char_col
+  UNION ALL
+  SELECT 1, 2.0
+  FROM generate_series(1, 1)
+TO 'test.txt' WITH (DELIMITER ',');
+--
+TopLevelPlan
++-plan=CopyTo[file_name=@test.txt,format=TEXT,column_delimiter=",",
+| escape_strings=true,null_string=\N]
+| +-input=UnionAll[set_operation_type=UnionAll]
+|   +-operands=
+|   | +-Project
+|   | | +-input=Project
+|   | | | +-input=Aggregate
+|   | | | | +-input=TableReference[relation_name=Test,relation_alias=test]
+|   | | | | | +-AttributeReference[id=0,name=int_col,relation=test,type=Int NULL]
+|   | | | | | +-AttributeReference[id=1,name=long_col,relation=test,type=Long]
+|   | | | | | +-AttributeReference[id=2,name=float_col,relation=test,type=Float]
+|   | | | | | +-AttributeReference[id=3,name=double_col,relation=test,
+|   | | | | | | type=Double NULL]
+|   | | | | | +-AttributeReference[id=4,name=char_col,relation=test,
+|   | | | | | | type=Char(20)]
+|   | | | | | +-AttributeReference[id=5,name=vchar_col,relation=test,
+|   | | | | |   type=VarChar(20) NULL]
+|   | | | | +-grouping_expressions=
+|   | | | | | +-AttributeReference[id=4,name=char_col,relation=test,
+|   | | | | |   type=Char(20)]
+|   | | | | +-aggregate_expressions=
+|   | | | |   +-Alias[id=6,name=,alias=$aggregate0,relation=$aggregate,
+|   | | | |   | type=Long NULL]
+|   | | | |   | +-AggregateFunction[function=SUM]
+|   | | | |   |   +-AttributeReference[id=0,name=int_col,relation=test,
+|   | | | |   |     type=Int NULL]
+|   | | | |   +-Alias[id=7,name=,alias=$aggregate1,relation=$aggregate,
+|   | | | |     type=Double NULL]
+|   | | | |     +-AggregateFunction[function=AVG]
+|   | | | |       +-AttributeReference[id=3,name=double_col,relation=test,
+|   | | | |         type=Double NULL]
+|   | | | +-project_list=
+|   | | |   +-Alias[id=6,name=sum_int,relation=,type=Long NULL]
+|   | | |   | +-AttributeReference[id=6,name=,alias=$aggregate0,
+|   | | |   |   relation=$aggregate,type=Long NULL]
+|   | | |   +-Alias[id=7,name=avg_dbl,relation=,type=Double NULL]
+|   | | |     +-AttributeReference[id=7,name=,alias=$aggregate1,
+|   | | |       relation=$aggregate,type=Double NULL]
+|   | | +-project_list=
+|   | |   +-AttributeReference[id=6,name=sum_int,relation=,type=Long NULL]
+|   | |   +-AttributeReference[id=7,name=avg_dbl,relation=,type=Double NULL]
+|   | +-Project
+|   |   +-input=Project
+|   |   | +-input=TableGenerator[function_name=generate_series]
+|   |   | | +-AttributeReference[id=8,name=generate_series,
+|   |   | |   relation=generate_series,type=Int]
+|   |   | +-project_list=
+|   |   |   +-Alias[id=9,name=,alias=1,relation=,type=Int]
+|   |   |   | +-Literal[value=1,type=Int]
+|   |   |   +-Alias[id=10,name=,alias=2.0,relation=,type=Double]
+|   |   |     +-Literal[value=2,type=Double]
+|   |   +-project_list=
+|   |     +-Alias[id=11,name=,alias=1,relation=,type=Long NULL]
+|   |     | +-Cast[target_type=Long NULL]
+|   |     |   +-operand=AttributeReference[id=9,name=,alias=1,relation=,type=Int]
+|   |     +-Alias[id=12,name=,alias=2.0,relation=,type=Double NULL]
+|   |       +-Cast[target_type=Double NULL]
+|   |         +-operand=AttributeReference[id=10,name=,alias=2.0,relation=,
+|   |           type=Double]
+|   +-project_attributes=
+|     +-AttributeReference[id=13,name=sum_int,relation=,type=Long NULL]
+|     +-AttributeReference[id=14,name=avg_dbl,relation=,type=Double NULL]
++-output_attributes=
+  +-[]
+==
+
+COPY undefined_table FROM 'test.txt'
 --
 ERROR: Unrecognized relation undefined_table (1 : 6)
-copy undefined_table from 'test.txt...
+COPY undefined_table FROM 'test.txt...
      ^
+==
+
+COPY test FROM 'test.txt' WITH (FORMAT 'CSV')
+--
+ERROR: Unsupported file format: csv (1 : 40)
+COPY test FROM 'test.txt' WITH (FORMAT 'CSV')
+                                       ^
+==
+
+COPY test FROM 'test.txt' WITH (XXX 'YY');
+--
+ERROR: Unsupported copy option: xxx (1 : 33)
+COPY test FROM 'test.txt' WITH (XXX 'YY');
+                                ^
+==
+
+COPY test TO 'test.txt' WITH (QUOTE '$');
+--
+ERROR: Unsupported copy option "quote" for file format TEXT (1 : 31)
+COPY test TO 'test.txt' WITH (QUOTE '$');
+                              ^
+==
+
+COPY test TO 'test.txt' WITH (FORMAT 'CSV', ESCAPE_STRINGS TRUE);
+--
+ERROR: Unsupported copy option "escape_strings" for file format CSV (1 : 45)
+... test TO 'test.txt' WITH (FORMAT 'CSV', ESCAPE_STRINGS TRUE);
+                                           ^
+==
+
+COPY test TO 'test.txt' WITH (FORMAT CSV, QUOTE '$$');
+--
+ERROR: QUOTE is not a single character (1 : 49)
+...test TO 'test.txt' WITH (FORMAT CSV, QUOTE '$$');
+                                              ^
+==
+
+COPY test TO 'test.txt' WITH (FORMAT 'TEXT', QUOTE '"');
+--
+ERROR: Unsupported copy option "quote" for file format TEXT (1 : 46)
+...test TO 'test.txt' WITH (FORMAT 'TEXT', QUOTE '"');
+                                           ^
+==
diff --git a/relational_operators/CMakeLists.txt b/relational_operators/CMakeLists.txt
index 57ba9f9..7b9ed96 100644
--- a/relational_operators/CMakeLists.txt
+++ b/relational_operators/CMakeLists.txt
@@ -71,6 +71,7 @@
             SortMergeRunOperatorHelpers.hpp)
 add_library(quickstep_relationaloperators_SortRunGenerationOperator SortRunGenerationOperator.cpp
             SortRunGenerationOperator.hpp)
+add_library(quickstep_relationaloperators_TableExportOperator TableExportOperator.cpp TableExportOperator.hpp)
 add_library(quickstep_relationaloperators_TableGeneratorOperator TableGeneratorOperator.cpp TableGeneratorOperator.hpp)
 add_library(quickstep_relationaloperators_TextScanOperator TextScanOperator.cpp TextScanOperator.hpp)
 add_library(quickstep_relationaloperators_UnionAllOperator UnionAllOperator.cpp UnionAllOperator.hpp)
@@ -473,6 +474,26 @@
                       quickstep_utility_Macros
                       quickstep_utility_SortConfiguration
                       tmb)
+target_link_libraries(quickstep_relationaloperators_TableExportOperator
+                      glog
+                      quickstep_catalog_CatalogAttribute
+                      quickstep_catalog_CatalogRelation
+                      quickstep_catalog_CatalogTypedefs
+                      quickstep_queryexecution_QueryContext
+                      quickstep_queryexecution_WorkOrderProtosContainer
+                      quickstep_queryexecution_WorkOrdersContainer
+                      quickstep_relationaloperators_RelationalOperator
+                      quickstep_relationaloperators_WorkOrder
+                      quickstep_relationaloperators_WorkOrder_proto
+                      quickstep_storage_StorageBlockInfo
+                      quickstep_storage_StorageConstants
+                      quickstep_storage_ValueAccessor
+                      quickstep_threading_SpinMutex
+                      quickstep_types_TypedValue
+                      quickstep_types_containers_Tuple
+                      quickstep_utility_BulkIoConfiguration
+                      quickstep_utility_Macros
+                      quickstep_utility_StringUtil)
 target_link_libraries(quickstep_relationaloperators_TableGeneratorOperator
                       glog
                       quickstep_catalog_CatalogRelation
@@ -508,6 +529,7 @@
                       quickstep_types_containers_ColumnVector
                       quickstep_types_containers_ColumnVectorsValueAccessor
                       quickstep_types_containers_Tuple
+                      quickstep_utility_BulkIoConfiguration
                       quickstep_utility_Glob
                       quickstep_utility_Macros
                       tmb)
@@ -637,6 +659,7 @@
                       quickstep_relationaloperators_SortMergeRunOperatorHelpers
                       quickstep_relationaloperators_SortMergeRunOperator_proto
                       quickstep_relationaloperators_SortRunGenerationOperator
+                      quickstep_relationaloperators_TableExportOperator
                       quickstep_relationaloperators_TableGeneratorOperator
                       quickstep_relationaloperators_TextScanOperator
                       quickstep_relationaloperators_UnionAllOperator
diff --git a/relational_operators/RelationalOperator.hpp b/relational_operators/RelationalOperator.hpp
index 8035685..8eb59f0 100644
--- a/relational_operators/RelationalOperator.hpp
+++ b/relational_operators/RelationalOperator.hpp
@@ -86,6 +86,7 @@
     kSelect,
     kSortMergeRun,
     kSortRunGeneration,
+    kTableExport,
     kTableGenerator,
     kTextScan,
     kUnionAll,
diff --git a/relational_operators/TableExportOperator.cpp b/relational_operators/TableExportOperator.cpp
new file mode 100644
index 0000000..f6a73bf
--- /dev/null
+++ b/relational_operators/TableExportOperator.cpp
@@ -0,0 +1,336 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ **/
+
+#include "relational_operators/TableExportOperator.hpp"
+
+#include <cstdio>
+#include <exception>
+#include <memory>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "catalog/CatalogAttribute.hpp"
+#include "query_execution/QueryContext.hpp"
+#include "query_execution/WorkOrderProtosContainer.hpp"
+#include "query_execution/WorkOrdersContainer.hpp"
+#include "relational_operators/WorkOrder.pb.h"
+#include "storage/StorageBlockInfo.hpp"
+#include "storage/ValueAccessor.hpp"
+#include "threading/SpinMutex.hpp"
+#include "types/TypedValue.hpp"
+#include "types/containers/Tuple.hpp"
+#include "utility/BulkIoConfiguration.hpp"
+#include "utility/StringUtil.hpp"
+
+#include "glog/logging.h"
+
+#include "tmb/id_typedefs.h"
+
+namespace quickstep {
+
+TableExportOperator::~TableExportOperator() {
+  if (file_ != nullptr && file_ != stdout && file_ != stderr) {
+    std::fclose(file_);
+  }
+  file_ = nullptr;
+}
+
+bool TableExportOperator::getAllWorkOrders(
+    WorkOrdersContainer *container,
+    QueryContext *query_context,
+    StorageManager *storage_manager,
+    const tmb::client_id scheduler_client_id,
+    tmb::MessageBus *bus) {
+  const auto add_work_order =
+      [&](const block_id input_block_id,  // NOLINT(build/c++11)
+          const bool is_first_work_order) -> void {
+    std::unique_ptr<std::string> output_buffer = std::make_unique<std::string>();
+    container->addNormalWorkOrder(
+        new TableExportToStringWorkOrder(query_id_,
+                                         input_relation_,
+                                         input_block_id,
+                                         options_->getFormat(),
+                                         is_first_work_order && options_->hasHeader(),
+                                         options_->getDelimiter(),
+                                         options_->escapeStrings(),
+                                         options_->getQuoteCharacter(),
+                                         options_->getNullString(),
+                                         output_buffer.get(),
+                                         op_index_,
+                                         scheduler_client_id,
+                                         storage_manager,
+                                         bus),
+        op_index_);
+
+    SpinMutexLock lock(output_buffers_mutex_);
+    output_buffers_.emplace(input_block_id, BlockBuffer(output_buffer.release()));
+  };
+
+  if (input_relation_is_stored_) {
+    if (!started_) {
+      for (std::size_t i = 0; i < input_relation_block_ids_.size(); ++i) {
+        add_work_order(input_relation_block_ids_[i], i == 0);
+      }
+      num_workorders_generated_ = input_relation_block_ids_.size();
+      started_ = true;
+    }
+    return true;
+  } else {
+    while (num_workorders_generated_ < input_relation_block_ids_.size()) {
+      add_work_order(input_relation_block_ids_[num_workorders_generated_],
+                     num_workorders_generated_ == 0);
+      ++num_workorders_generated_;
+    }
+    return done_feeding_input_relation_;
+  }
+}
+
+bool TableExportOperator::getAllWorkOrderProtos(
+    WorkOrderProtosContainer *container) {
+  // TODO(quickstep-team): Implement TextExportOperator for the distributed case.
+  LOG(FATAL) << "TableExportOperator::getAllWorkOrderProtos() is not supported";
+}
+
+void TableExportOperator::receiveFeedbackMessage(
+    const WorkOrder::FeedbackMessage &msg) {
+  DCHECK(TableExportOperator::kBlockOutputMessage == msg.type());
+  DCHECK(msg.payload_size() == sizeof(block_id));
+
+  if (file_ == nullptr) {
+    const std::string lo_file_name = ToLower(file_name_);
+    if (lo_file_name == "$stdout") {
+      file_ = stdout;
+    } else if (lo_file_name == "$stderr") {
+      file_ = stderr;
+    } else {
+      file_ = std::fopen(file_name_.substr(1).c_str(), "wb");
+      // TODO(quickstep-team): Decent handling of exceptions at query runtime.
+      if (file_ == nullptr) {
+        throw std::runtime_error("Can not open file " + file_name_ + " for writing");
+      }
+    }
+  }
+
+  // Mark block done.
+  const block_id done_block_id = *static_cast<const block_id*>(msg.payload());
+  {
+    SpinMutexLock lock(output_buffers_mutex_);
+    DCHECK(output_buffers_.find(done_block_id) != output_buffers_.end());
+    output_buffers_.at(done_block_id).done = true;
+  }
+
+  // FIXME(jianqiao): Use work orders to perform the "write to file" operation
+  // instead of doing it here inside this thread -- as it may stall the scheduler.
+  while (num_blocks_written_ < num_workorders_generated_) {
+    // Write block exported strings to file in the same order as the blocks are
+    // in \p input_relation_block_ids_.
+    block_id next_block_id;
+    {
+      SpinMutexLock lock(block_ids_mutex_);
+      next_block_id = input_relation_block_ids_[num_blocks_written_];
+    }
+    std::unique_ptr<std::string> output_buffer;
+    {
+      SpinMutexLock lock(output_buffers_mutex_);
+      auto it = output_buffers_.find(next_block_id);
+      if (it == output_buffers_.end() || !it->second.done) {
+        break;
+      }
+      output_buffer = std::move(it->second.buffer);
+      output_buffers_.erase(it);
+    }
+    std::fwrite(output_buffer->c_str(), 1, output_buffer->length(), file_);
+    ++num_blocks_written_;
+  }
+}
+
+void TableExportToStringWorkOrder::execute() {
+  BlockReference block(
+      storage_manager_->getBlock(input_block_id_, input_relation_));
+  std::unique_ptr<ValueAccessor> accessor(
+      block->getTupleStorageSubBlock().createValueAccessor());
+
+  switch (format_) {
+    case BulkIoFormat::kCsv:
+      writeToString<&TableExportToStringWorkOrder::quoteCSVField>(
+          accessor.get(), output_buffer_);
+      break;
+    case BulkIoFormat::kText:
+      writeToString<&TableExportToStringWorkOrder::escapeTextField>(
+          accessor.get(), output_buffer_);
+      break;
+    default:
+      LOG(FATAL) << "Unsupported export format in TableExportWorkOrder::execute()";
+  }
+
+  // Send completion message to operator.
+  FeedbackMessage msg(TableExportOperator::kBlockOutputMessage,
+                      getQueryID(),
+                      operator_index_,
+                      new block_id(input_block_id_),
+                      sizeof(input_block_id_));
+  SendFeedbackMessage(
+      bus_, ClientIDMap::Instance()->getValue(), scheduler_client_id_, msg);
+}
+
+inline std::string TableExportToStringWorkOrder::quoteCSVField(
+    std::string &&field) const {  // NOLINT(whitespace/operators)x
+  bool need_quote = false;
+  for (const char c : field) {
+    if (c == field_terminator_ || c == quote_character_ || c == '\n') {
+      need_quote = true;
+      break;
+    }
+  }
+  if (!need_quote) {
+    return std::move(field);
+  }
+
+  std::string quoted;
+  quoted.push_back(quote_character_);
+  for (const char c : field) {
+    if (c == quote_character_) {
+      quoted.push_back(c);
+    }
+    quoted.push_back(c);
+  }
+  quoted.push_back(quote_character_);
+  return quoted;
+}
+
+
+inline std::string TableExportToStringWorkOrder::escapeTextField(
+    std::string &&field) const {  // NOLINT(whitespace/operators)
+  if (escape_strings_ == false || field == "\\N") {
+    return std::move(field);
+  }
+  bool need_escape = false;
+  for (const unsigned char c : field) {
+    if (c < ' ' || c == '\\' || c == field_terminator_) {
+      need_escape = true;
+      break;
+    }
+  }
+  if (!need_escape) {
+    return std::move(field);
+  }
+
+  std::string escaped;
+  for (const unsigned char c : field) {
+    if (c < 32) {
+      switch (c) {
+        case '\b':
+          // Backspace.
+          escaped.append("\\b");
+          break;
+        case '\f':
+          // Form-feed.
+          escaped.append("\\f");
+          break;
+        case '\n':
+          // Newline.
+          escaped.append("\\n");
+          break;
+        case '\r':
+          // Carriage return.
+          escaped.append("\\r");
+          break;
+        case '\t':
+          // Tab.
+          escaped.append("\\t");
+          break;
+        case '\v':
+          // Vertical tab
+          escaped.append("\\v");
+          break;
+        default: {
+          // Use hexidecimal representation.
+          static const std::string digits = "0123456789ABCDEF";
+          escaped.append("\\x");
+          escaped.push_back(digits.at(c >> 4));
+          escaped.push_back(digits.at(c & 0xF));
+          break;
+        }
+      }
+    } else {
+      if (c == '\\' || c == field_terminator_) {
+        escaped.push_back('\\');
+      }
+      escaped.push_back(c);
+    }
+  }
+  return escaped;
+}
+
+template <std::string (TableExportToStringWorkOrder::*transform)(std::string&&) const,  // NOLINT
+          typename Container, typename Functor>
+inline void TableExportToStringWorkOrder::writeEachToString(const Container &container,
+                                                            std::string *output,
+                                                            const Functor &functor) const {
+  auto it = container.begin();
+  if (it != container.end()) {
+    std::size_t idx = 0;
+    output->append((this->*transform)(functor(*it, idx++)));
+    while ((++it) != container.end()) {
+      output->push_back(field_terminator_);
+      output->append((this->*transform)(functor(*it, idx++)));
+    }
+  }
+}
+
+template <std::string (TableExportToStringWorkOrder::*transform)(std::string&&) const>  // NOLINT
+void TableExportToStringWorkOrder::writeToString(ValueAccessor *accessor,
+                                                 std::string *output) const {
+  std::vector<const Type*> value_types;
+  value_types.reserve(input_relation_.size());
+  for (const CatalogAttribute &attribute : input_relation_) {
+    value_types.emplace_back(&attribute.getType());
+  }
+
+  // Write table header to the output buffer.
+  if (print_header_) {
+    writeEachToString<transform>(
+        input_relation_, output,
+        [&](const CatalogAttribute &attr,  // NOLINT(build/c++11)
+            const std::size_t idx) -> std::string {
+      return attr.getDisplayName();
+    });
+    output->push_back('\n');
+  }
+
+  // Write table rows to the output buffer.
+  accessor->beginIterationVirtual();
+  while (accessor->nextVirtual()) {
+    std::unique_ptr<Tuple> tuple(accessor->getTupleVirtual());
+    writeEachToString<transform>(
+        *tuple, output,
+        [&](const TypedValue &value,  // NOLINT(build/c++11)
+            const std::size_t idx) -> std::string {
+      if (value.isNull()) {
+        return null_string_;
+      } else {
+        return value_types[idx]->printValueToString(value);
+      }
+    });
+    output->push_back('\n');
+  }
+}
+
+}  // namespace quickstep
diff --git a/relational_operators/TableExportOperator.hpp b/relational_operators/TableExportOperator.hpp
new file mode 100644
index 0000000..29a07d1
--- /dev/null
+++ b/relational_operators/TableExportOperator.hpp
@@ -0,0 +1,267 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ **/
+
+#ifndef QUICKSTEP_RELATIONAL_OPERATORS_TABLE_EXPORT_OPERATOR_HPP_
+#define QUICKSTEP_RELATIONAL_OPERATORS_TABLE_EXPORT_OPERATOR_HPP_
+
+#include <cstddef>
+#include <cstdio>
+#include <memory>
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+#include "catalog/CatalogRelation.hpp"
+#include "catalog/CatalogTypedefs.hpp"
+#include "query_execution/QueryContext.hpp"
+#include "relational_operators/RelationalOperator.hpp"
+#include "relational_operators/WorkOrder.hpp"
+#include "storage/StorageBlockInfo.hpp"
+#include "storage/StorageConstants.hpp"
+#include "threading/SpinMutex.hpp"
+#include "utility/BulkIoConfiguration.hpp"
+#include "utility/Macros.hpp"
+
+#include "glog/logging.h"
+
+#include "tmb/id_typedefs.h"
+
+namespace tmb { class MessageBus; }
+
+namespace quickstep {
+
+class CatalogRelationSchema;
+class StorageManager;
+class ValueAccessor;
+class WorkOrderProtosContainer;
+class WorkOrdersContainer;
+
+namespace serialization { class WorkOrder; }
+
+/** \addtogroup RelationalOperators
+ *  @{
+ */
+
+class TableExportOperator : public RelationalOperator {
+ public:
+  /**
+   * @brief Feedback message to Foreman when a TableExportToStringWorkOrder has
+   *        completed writing a block to the string buffer.
+   */
+  enum FeedbackMessageType : WorkOrder::FeedbackMessageType {
+      kBlockOutputMessage,
+  };
+
+  /**
+   * @brief Constructor.
+   *
+   * @param query_id The ID of the query to which this operator belongs.
+   * @param input_relation The relation to export.
+   * @param input_relation_is_stored If input_relation is a stored relation and
+   *        is fully available to the operator before it can start generating
+   *        workorders.
+   * @param file_name The name of the file to export the relation to.
+   * @param options The options that specify the detailed format of the output
+   *        file.
+   */
+  TableExportOperator(const std::size_t query_id,
+                      const CatalogRelation &input_relation,
+                      const bool input_relation_is_stored,
+                      const std::string &file_name,
+                      const BulkIoConfigurationPtr &options)
+      : RelationalOperator(query_id),
+        input_relation_(input_relation),
+        input_relation_is_stored_(input_relation_is_stored),
+        file_name_(file_name),
+        options_(options),
+        input_relation_block_ids_(input_relation_is_stored
+                                      ? input_relation.getBlocksSnapshot()
+                                      : std::vector<block_id>()),
+        num_workorders_generated_(0),
+        started_(false),
+        num_blocks_written_(0),
+        file_(nullptr) {}
+
+  ~TableExportOperator() override;
+
+  OperatorType getOperatorType() const override {
+    return kTableExport;
+  }
+
+  std::string getName() const override {
+    return "TableExportOperator";
+  }
+
+  /**
+   * @return The relation to export.
+   */
+  const CatalogRelation& input_relation() const {
+    return input_relation_;
+  }
+
+  bool getAllWorkOrders(WorkOrdersContainer *container,
+                        QueryContext *query_context,
+                        StorageManager *storage_manager,
+                        const tmb::client_id scheduler_client_id,
+                        tmb::MessageBus *bus) override;
+
+  bool getAllWorkOrderProtos(WorkOrderProtosContainer *container) override;
+
+  void feedInputBlock(const block_id input_block_id,
+                      const relation_id input_relation_id,
+                      const partition_id part_id) override {
+    if (input_relation_id == input_relation_.getID()) {
+      SpinMutexLock lock(block_ids_mutex_);
+      input_relation_block_ids_.emplace_back(input_block_id);
+    }
+  }
+
+  void receiveFeedbackMessage(const WorkOrder::FeedbackMessage &msg) override;
+
+ private:
+  // Buffer for storing a block's exported string.
+  struct BlockBuffer {
+    explicit BlockBuffer(std::string *buffer_in)
+        : done(false),
+          buffer(buffer_in) {}
+    bool done;
+    std::unique_ptr<std::string> buffer;
+  };
+
+  const CatalogRelation &input_relation_;
+  const bool input_relation_is_stored_;
+  const std::string file_name_;
+  const BulkIoConfigurationPtr options_;
+
+  std::vector<block_id> input_relation_block_ids_;
+  std::size_t num_workorders_generated_;
+  alignas(kCacheLineBytes) SpinMutex block_ids_mutex_;
+
+  bool started_;
+
+  std::size_t num_blocks_written_;
+  std::unordered_map<block_id, BlockBuffer> output_buffers_;
+  alignas(kCacheLineBytes) SpinMutex output_buffers_mutex_;
+
+  FILE *file_;
+
+  DISALLOW_COPY_AND_ASSIGN(TableExportOperator);
+};
+
+class TableExportToStringWorkOrder : public WorkOrder {
+ public:
+  /**
+   * @brief Constructor.
+   *
+   * @param query_id The ID of the query to which this work order belongs.
+   * @param input_relation The relation to export.
+   * @param input_block_id The block id.
+   * @param format The output file format.
+   * @param print_header Whether to write table headers.
+   * @param field_terminator The character that separates attribute values in
+   *        each output row.
+   * @param escape_strings Whether to encode special characters as escape
+   *        sequences. NOTE: This options is for TEXT format only and is ignored
+   *        otherwiae.
+   * @param quote_character The quote character. NOTE: This options is for CSV
+   *        format only and is ignored otherwiae.
+   * @param null_string The string that represents a null value.
+   * @param output_buffer The string buffer for writing the output to.
+   * @param operator_index TableExportOperator index to send feedback messages
+   *        to.
+   * @param scheduler_client_id The TMB client ID of the scheduler thread.
+   * @param storage_manager The StorageManager to use.
+   * @param bus TMB to send the feedback message on.
+   */
+  TableExportToStringWorkOrder(const std::size_t query_id,
+                               const CatalogRelationSchema &input_relation,
+                               const block_id input_block_id,
+                               const BulkIoFormat format,
+                               const bool print_header,
+                               const char field_terminator,
+                               const bool escape_strings,
+                               const char quote_character,
+                               const std::string null_string,
+                               std::string *output_buffer,
+                               const std::size_t operator_index,
+                               const tmb::client_id scheduler_client_id,
+                               StorageManager *storage_manager,
+                               MessageBus *bus)
+      : WorkOrder(query_id),
+        input_relation_(input_relation),
+        input_block_id_(input_block_id),
+        format_(format),
+        print_header_(print_header),
+        field_terminator_(field_terminator),
+        escape_strings_(escape_strings),
+        quote_character_(quote_character),
+        null_string_(null_string),
+        operator_index_(operator_index),
+        scheduler_client_id_(scheduler_client_id),
+        storage_manager_(storage_manager),
+        bus_(bus),
+        output_buffer_(output_buffer) {
+  }
+
+  ~TableExportToStringWorkOrder() override {}
+
+  void execute() override;
+
+ private:
+  inline std::string quoteCSVField(std::string &&field) const;  // NOLINT(whitespace/operators)
+  inline std::string escapeTextField(std::string &&field) const;  // NOLINT(whitespace/operators)
+
+  // Helper method for writing each entry from a table row to the output string
+  // buffer, with proper transformations (separated by delimiter character,
+  // escape special characters, add quotes, etc.).
+  template <std::string (TableExportToStringWorkOrder::*transform)(std::string&&) const,  // NOLINT
+            typename Container, typename Functor>
+  inline void writeEachToString(const Container &container,
+                                std::string *output,
+                                const Functor &functor) const;
+
+  // Write all the rows from a value accessor to the output string buffer.
+  template <std::string (TableExportToStringWorkOrder::*transform)(std::string&&) const>  // NOLINT
+  void writeToString(ValueAccessor *accessor, std::string *output) const;
+
+  const CatalogRelationSchema &input_relation_;
+  const block_id input_block_id_;
+
+  const BulkIoFormat format_;
+  const bool print_header_;
+  const char field_terminator_;
+  const bool escape_strings_;
+  const char quote_character_;
+  const std::string null_string_;
+
+  const std::size_t operator_index_;
+  const tmb::client_id scheduler_client_id_;
+  StorageManager *storage_manager_;
+  MessageBus *bus_;
+
+  std::string *output_buffer_;
+
+  DISALLOW_COPY_AND_ASSIGN(TableExportToStringWorkOrder);
+};
+
+/** @} */
+
+}  // namespace quickstep
+
+#endif  // QUICKSTEP_RELATIONAL_OPERATORS_TABLE_EXPORT_OPERATOR_HPP_
diff --git a/relational_operators/TextScanOperator.cpp b/relational_operators/TextScanOperator.cpp
index 3ca3af4..66137d8 100644
--- a/relational_operators/TextScanOperator.cpp
+++ b/relational_operators/TextScanOperator.cpp
@@ -31,6 +31,7 @@
 #include <cstdint>
 #include <cstdio>
 #include <cstdlib>
+#include <exception>
 #include <memory>
 #include <string>
 #include <utility>
@@ -54,6 +55,7 @@
 #include "types/containers/ColumnVector.hpp"
 #include "types/containers/ColumnVectorsValueAccessor.hpp"
 #include "types/containers/Tuple.hpp"
+#include "utility/BulkIoConfiguration.hpp"
 #include "utility/Glob.hpp"
 
 #include "gflags/gflags.h"
@@ -61,9 +63,6 @@
 
 #include "tmb/id_typedefs.h"
 
-using std::size_t;
-using std::string;
-
 namespace quickstep {
 
 // Text segment size set to 256KB.
@@ -82,14 +81,19 @@
   return true;
 }
 
-static const volatile bool text_scan_text_segment_size_dummy = gflags::RegisterFlagValidator(
-    &FLAGS_textscan_text_segment_size, &ValidateTextScanTextSegmentSize);
+static const volatile bool text_scan_text_segment_size_dummy =
+    gflags::RegisterFlagValidator(
+        &FLAGS_textscan_text_segment_size, &ValidateTextScanTextSegmentSize);
 
 namespace {
 
-size_t getFileSize(const string &file_name) {
+std::size_t GetFileSize(const std::string &file_name) {
   // Use standard C libary to retrieve the file size.
   FILE *fp = std::fopen(file_name.c_str(), "rb");
+  // TODO(quickstep-team): Decent handling of exceptions at query runtime.
+  if (fp == nullptr) {
+    throw std::runtime_error("Can not open file " + file_name + " for reading");
+  }
   std::fseek(fp, 0, SEEK_END);
   const std::size_t file_size = std::ftell(fp);
   std::fclose(fp);
@@ -127,7 +131,7 @@
         << "File " << file << " is not readable due to permission issues.";
 #endif  // QUICKSTEP_HAVE_UNISTD
 
-    const std::size_t file_size = getFileSize(file);
+    const std::size_t file_size = GetFileSize(file);
 
     std::size_t text_offset = 0;
     for (size_t num_full_segments = file_size / FLAGS_textscan_text_segment_size;
@@ -138,8 +142,8 @@
                                 file,
                                 text_offset,
                                 FLAGS_textscan_text_segment_size,
-                                field_terminator_,
-                                process_escape_sequences_,
+                                options_->getDelimiter(),
+                                options_->escapeStrings(),
                                 output_destination),
           op_index_);
     }
@@ -152,8 +156,8 @@
                                 file,
                                 text_offset,
                                 file_size - text_offset,
-                                field_terminator_,
-                                process_escape_sequences_,
+                                options_->getDelimiter(),
+                                options_->escapeStrings(),
                                 output_destination),
           op_index_);
     }
@@ -169,22 +173,25 @@
     return true;
   }
 
-  for (const string &file : files) {
-    const std::size_t file_size = getFileSize(file);
+  for (const std::string &file : files) {
+    const std::size_t file_size = GetFileSize(file);
 
     size_t text_offset = 0;
     for (size_t num_full_segments = file_size / FLAGS_textscan_text_segment_size;
          num_full_segments > 0;
          --num_full_segments, text_offset += FLAGS_textscan_text_segment_size) {
-      container->addWorkOrderProto(createWorkOrderProto(file, text_offset, FLAGS_textscan_text_segment_size),
-                                   op_index_);
+      container->addWorkOrderProto(
+          createWorkOrderProto(file, text_offset,
+                               FLAGS_textscan_text_segment_size),
+          op_index_);
     }
 
     // Deal with the residual partial segment whose size is less than
     // 'FLAGS_textscan_text_segment_size'.
     if (text_offset < file_size) {
-      container->addWorkOrderProto(createWorkOrderProto(file, text_offset, file_size - text_offset),
-                                   op_index_);
+      container->addWorkOrderProto(
+          createWorkOrderProto(file, text_offset, file_size - text_offset),
+          op_index_);
     }
   }
 
@@ -192,9 +199,10 @@
   return true;
 }
 
-serialization::WorkOrder* TextScanOperator::createWorkOrderProto(const string &filename,
-                                                                 const size_t text_offset,
-                                                                 const size_t text_segment_size) {
+serialization::WorkOrder* TextScanOperator::createWorkOrderProto(
+    const std::string &filename,
+    const std::size_t text_offset,
+    const std::size_t text_segment_size) {
   serialization::WorkOrder *proto = new serialization::WorkOrder;
   proto->set_work_order_type(serialization::TEXT_SCAN);
   proto->set_query_id(query_id_);
@@ -202,9 +210,10 @@
   proto->SetExtension(serialization::TextScanWorkOrder::filename, filename);
   proto->SetExtension(serialization::TextScanWorkOrder::text_offset, text_offset);
   proto->SetExtension(serialization::TextScanWorkOrder::text_segment_size, text_segment_size);
-  proto->SetExtension(serialization::TextScanWorkOrder::field_terminator, field_terminator_);
+  proto->SetExtension(serialization::TextScanWorkOrder::field_terminator,
+                      options_->getDelimiter());
   proto->SetExtension(serialization::TextScanWorkOrder::process_escape_sequences,
-                      process_escape_sequences_);
+                      options_->escapeStrings());
   proto->SetExtension(serialization::TextScanWorkOrder::insert_destination_index,
                       output_destination_index_);
 
@@ -235,12 +244,14 @@
     file_handle = hdfsOpenFile(hdfs, filename_.c_str(), O_RDONLY, buffer_size,
                                0 /* default replication */, 0 /* default block size */);
     if (file_handle == nullptr) {
-      LOG(ERROR) << "Failed to open file " << filename_ << " with error: " << strerror(errno);
+      LOG(ERROR) << "Failed to open file " << filename_
+                 << " with error: " << strerror(errno);
       return;
     }
 
     if (hdfsSeek(hdfs, file_handle, text_offset_)) {
-      LOG(ERROR) << "Failed to seek in file " << filename_ << " with error: " << strerror(errno);
+      LOG(ERROR) << "Failed to seek in file " << filename_
+                 << " with error: " << strerror(errno);
 
       hdfsCloseFile(hdfs, file_handle);
       return;
@@ -248,7 +259,9 @@
 
     bytes_read = hdfsRead(hdfs, file_handle, buffer, text_segment_size_);
     while (bytes_read != text_segment_size_) {
-      bytes_read += hdfsRead(hdfs, file_handle, buffer + bytes_read, text_segment_size_ - bytes_read);
+      bytes_read += hdfsRead(hdfs, file_handle,
+                             buffer + bytes_read,
+                             text_segment_size_ - bytes_read);
     }
   }
 #endif  // QUICKSTEP_HAVE_FILE_MANAGER_HDFS
@@ -325,7 +338,8 @@
   if (use_hdfs) {
 #ifdef QUICKSTEP_HAVE_FILE_MANAGER_HDFS
     if (hdfsSeek(hdfs, file_handle, dynamic_read_offset)) {
-      LOG(ERROR) << "Failed to seek in file " << filename_ << " with error: " << strerror(errno);
+      LOG(ERROR) << "Failed to seek in file " << filename_
+                 << " with error: " << strerror(errno);
 
       hdfsCloseFile(hdfs, file_handle);
       return;
@@ -343,7 +357,9 @@
 
       // Read again when acrossing the HDFS block boundary.
       if (bytes_read != dynamic_read_size) {
-        bytes_read += hdfsRead(hdfs, file_handle, buffer + bytes_read, dynamic_read_size - bytes_read);
+        bytes_read += hdfsRead(hdfs, file_handle,
+                               buffer + bytes_read,
+                               dynamic_read_size - bytes_read);
       }
 #endif  // QUICKSTEP_HAVE_FILE_MANAGER_HDFS
     } else {
diff --git a/relational_operators/TextScanOperator.hpp b/relational_operators/TextScanOperator.hpp
index 4dbeb92..01c559c 100644
--- a/relational_operators/TextScanOperator.hpp
+++ b/relational_operators/TextScanOperator.hpp
@@ -32,6 +32,7 @@
 #include "relational_operators/RelationalOperator.hpp"
 #include "relational_operators/WorkOrder.hpp"
 #include "types/containers/Tuple.hpp"
+#include "utility/BulkIoConfiguration.hpp"
 #include "utility/Macros.hpp"
 
 #include "glog/logging.h"
@@ -104,32 +105,28 @@
 class TextScanOperator : public RelationalOperator {
  public:
   /**
-   * @brief Constructor
+   * @brief Constructor.
    *
    * @param query_id The ID of the query to which this operator belongs.
    * @param file_pattern The glob-like file pattern of the sources to load. The
    *        pattern could include * (wildcard for multiple chars) and ?
    *        (wildcard for single char). It defaults to single file load, if a
    *        file is specified.
-   * @param field_terminator The string which separates attribute values in
-   *        the text file.
-   * @param process_escape_sequences Whether to decode escape sequences in the
-   *        text file.
+   * @param options The options that specify the detailed format of the input
+            file(s).
    * @param output_relation The output relation.
    * @param output_destination_index The index of the InsertDestination in the
    *        QueryContext to insert tuples.
    **/
   TextScanOperator(const std::size_t query_id,
                    const std::string &file_pattern,
-                   const char field_terminator,
-                   const bool process_escape_sequences,
+                   const BulkIoConfigurationPtr &options,
                    const CatalogRelation &output_relation,
                    const QueryContext::insert_destination_id output_destination_index)
       : RelationalOperator(query_id, 1u, output_relation.getNumPartitions() != 1u /* has_repartition */,
                            output_relation.getNumPartitions()),
         file_pattern_(file_pattern),
-        field_terminator_(field_terminator),
-        process_escape_sequences_(process_escape_sequences),
+        options_(options),
         output_relation_(output_relation),
         output_destination_index_(output_destination_index),
         work_generated_(false) {}
@@ -166,8 +163,7 @@
                                                  const std::size_t text_segment_size);
 
   const std::string file_pattern_;
-  const char field_terminator_;
-  const bool process_escape_sequences_;
+  const BulkIoConfigurationPtr options_;
 
   const CatalogRelation &output_relation_;
   const QueryContext::insert_destination_id output_destination_index_;
diff --git a/relational_operators/WorkOrder.proto b/relational_operators/WorkOrder.proto
index 6dafbe0..aaf7929 100644
--- a/relational_operators/WorkOrder.proto
+++ b/relational_operators/WorkOrder.proto
@@ -21,7 +21,7 @@
 
 import "relational_operators/SortMergeRunOperator.proto";
 
-// Next tag: 26.
+// Next tag: 27.
 enum WorkOrderType {
   AGGREGATION = 1;
   BUILD_AGGREGATION_EXISTENCE_MAP = 23;
@@ -43,6 +43,7 @@
   SELECT = 15;
   SORT_MERGE_RUN = 16;
   SORT_RUN_GENERATION = 17;
+  TABLE_EXPORT_TO_STRING = 26;
   TABLE_GENERATOR = 18;
   TEXT_SCAN = 19;
   UNION_ALL = 24;
diff --git a/relational_operators/tests/TextScanOperator_unittest.cpp b/relational_operators/tests/TextScanOperator_unittest.cpp
index c92a3dd..9664fda 100644
--- a/relational_operators/tests/TextScanOperator_unittest.cpp
+++ b/relational_operators/tests/TextScanOperator_unittest.cpp
@@ -40,6 +40,7 @@
 #include "threading/ThreadIDBasedMap.hpp"
 #include "types/TypeFactory.hpp"
 #include "types/TypeID.hpp"
+#include "utility/BulkIoConfiguration.hpp"
 #include "utility/MemStream.hpp"
 
 #include "gflags/gflags.h"
@@ -191,11 +192,15 @@
   output_destination_proto->set_relation_id(relation_->getID());
   output_destination_proto->set_relational_op_index(kOpIndex);
 
+  std::unique_ptr<BulkIoConfiguration> options =
+      std::make_unique<BulkIoConfiguration>(BulkIoFormat::kText);
+  options->setDelimiter('\t');
+  options->setEscapeStrings(true);
+
   std::unique_ptr<TextScanOperator> text_scan_op(
       new TextScanOperator(kQueryId,
                            input_filename,
-                           '\t',
-                           true,
+                           BulkIoConfigurationPtr(options.release()),
                            *relation_,
                            output_destination_index));
 
diff --git a/utility/BulkIoConfiguration.cpp b/utility/BulkIoConfiguration.cpp
new file mode 100644
index 0000000..ce5ade5
--- /dev/null
+++ b/utility/BulkIoConfiguration.cpp
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ **/
+
+#include "utility/BulkIoConfiguration.hpp"
+
+#include "glog/logging.h"
+
+namespace quickstep {
+
+void BulkIoConfiguration::initializeDefaultParameters(const BulkIoFormat format) {
+  switch (format) {
+    case BulkIoFormat::kCsv: {
+      delimiter_ = ',';
+      escape_strings_ = false;
+      header_ = true;
+      quote_ = '"';
+      null_string_ = "";
+      break;
+    }
+    case BulkIoFormat::kText: {
+      delimiter_ = '\t';
+      escape_strings_ = true;
+      header_ = false;
+      quote_ = 0;
+      null_string_ = "\\N";
+      break;
+    }
+    default:
+      LOG(FATAL) << "Unexpected format in "
+                 << "BulkIoConfiguration::initializeDefaultParameters()";
+  }
+}
+
+}  // namespace quickstep
diff --git a/utility/BulkIoConfiguration.hpp b/utility/BulkIoConfiguration.hpp
new file mode 100644
index 0000000..ae8ccd2
--- /dev/null
+++ b/utility/BulkIoConfiguration.hpp
@@ -0,0 +1,198 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ **/
+
+#ifndef QUICKSTEP_UTILITY_BULK_IO_CONFIGURATION_HPP_
+#define QUICKSTEP_UTILITY_BULK_IO_CONFIGURATION_HPP_
+
+#include <memory>
+#include <string>
+
+#include "utility/Macros.hpp"
+
+#include "glog/logging.h"
+
+namespace quickstep {
+
+/**
+ * @brief External file format for bulk I/O.
+ */
+enum class BulkIoFormat {
+  kCsv = 0,
+  kText
+};
+
+class BulkIoConfiguration;
+typedef std::shared_ptr<const BulkIoConfiguration> BulkIoConfigurationPtr;
+
+/**
+ * @brief Detailed file format configuration for bulk I/O (i.e. COPY operations)
+ *        that moves data between Quickstep tables and external files.
+ */
+class BulkIoConfiguration {
+ public:
+  /**
+   * @brief Constructor.
+   *
+   * @param format External file format.
+   */
+  explicit BulkIoConfiguration(const BulkIoFormat format)
+      : format_(format) {
+    initializeDefaultParameters(format);
+  }
+
+  /**
+   * @brief Get the external file format.
+   *
+   * @return The external file format.
+   */
+  inline BulkIoFormat getFormat() const {
+    return format_;
+  }
+
+  /**
+   * @brief Get the external file format's name.
+   *
+   * @return The external file format's name.
+   */
+  inline std::string getFormatName() const {
+    switch (format_) {
+      case BulkIoFormat::kCsv:
+        return "CSV";
+      case BulkIoFormat::kText:
+        return "TEXT";
+      default:
+        break;
+    }
+    LOG(FATAL) << "Unexpected format in BulkIoConfiguration::getFormatName()";
+  }
+
+  /**
+   * @brief Get the delimiter character (which is the character that separates
+   *        attribute values in external files).
+   *
+   * @return The delimiter character.
+   */
+  inline char getDelimiter() const {
+    return delimiter_;
+  }
+
+  /**
+   * @brief Set the delimiter character.
+   *
+   * @param delimiter The delimiter character to set.
+   */
+  inline void setDelimiter(const char delimiter) {
+    delimiter_ = delimiter;
+  }
+
+  /**
+   * @brief Check whether to encode/decode between special characters and escape
+   *        sequences.
+   *
+   * @return Whether to encode/decode between special characters and escape
+   *         sequences.
+   */
+  inline bool escapeStrings() const {
+    return escape_strings_;
+  }
+
+  /**
+   * @brief Set whether to encode/decode between special characters and escape
+   *        sequences.
+   *
+   * @param escape_strings A bool value to set that indicates whether to
+   *        encode/decode between special characters and escape sequences.
+   */
+  inline void setEscapeStrings(const bool escape_strings) {
+    escape_strings_ = escape_strings;
+  }
+
+  /**
+   * @brief Check whether the external files contain headers (for CSV format only).
+   *
+   * @return Whether the external files contain headers.
+   */
+  inline bool hasHeader() const {
+    return header_;
+  }
+
+  /**
+   * @brief Set whether the external files contain headers (for CSV format only).
+   *
+   * @param header A bool value to set that indicates whether the external files
+   *        contain headers.
+   */
+  inline void setHeader(const bool header) {
+    header_ = header;
+  }
+
+  /**
+   * @brief Get the quote character (for CSV format only).
+   *
+   * @return The quote character.
+   */
+  inline char getQuoteCharacter() const {
+    return quote_;
+  }
+
+  /**
+   * @brief Set the quote character (for CSV format only).
+   *
+   * @param quote The quote character to set.
+   */
+  inline void setQuoteCharacter(const char quote) {
+    quote_ = quote;
+  }
+
+  /**
+   * @brief Get the string that represents a null value.
+   *
+   * @return The string that represents a null value.
+   */
+  inline const std::string& getNullString() const {
+    return null_string_;
+  }
+
+  /**
+   * @brief Set the string that represents a null value.
+   *
+   * @param null_string The string to set that represents a null value.
+   */
+  inline void setNullString(const std::string &null_string) {
+    null_string_ = null_string;
+  }
+
+ private:
+  // Initialize default options for CSV and TEXT formats.
+  void initializeDefaultParameters(const BulkIoFormat format);
+
+  const BulkIoFormat format_;
+
+  char delimiter_;
+  bool escape_strings_;
+  bool header_;
+  char quote_;
+  std::string null_string_;
+
+  DISALLOW_COPY_AND_ASSIGN(BulkIoConfiguration);
+};
+
+}  // namespace quickstep
+
+#endif  // QUICKSTEP_UTILITY_BULK_IO_CONFIGURATION_HPP_
diff --git a/utility/CMakeLists.txt b/utility/CMakeLists.txt
index b7a08f4..a832404 100644
--- a/utility/CMakeLists.txt
+++ b/utility/CMakeLists.txt
@@ -168,6 +168,7 @@
 add_library(quickstep_utility_BloomFilter_proto
             ${quickstep_utility_BloomFilter_proto_srcs}
             ${quickstep_utility_BloomFilter_proto_hdrs})
+add_library(quickstep_utility_BulkIoConfiguration BulkIoConfiguration.cpp BulkIoConfiguration.hpp)
 add_library(quickstep_utility_CalculateInstalledMemory CalculateInstalledMemory.cpp CalculateInstalledMemory.hpp)
 add_library(quickstep_utility_Cast ../empty_src.cpp Cast.hpp)
 add_library(quickstep_utility_CheckSnprintf ../empty_src.cpp CheckSnprintf.hpp)
@@ -249,6 +250,8 @@
 target_link_libraries(quickstep_utility_BarrieredReadWriteConcurrentBitVector
                       quickstep_utility_BitManipulation
                       quickstep_utility_Macros)
+target_link_libraries(quickstep_utility_BulkIoConfiguration
+                      quickstep_utility_Macros)
 target_link_libraries(quickstep_utility_DAG
                       glog
                       quickstep_utility_Macros)
@@ -353,6 +356,7 @@
                       quickstep_utility_BitVector
                       quickstep_utility_BloomFilter
                       quickstep_utility_BloomFilter_proto
+                      quickstep_utility_BulkIoConfiguration
                       quickstep_utility_CalculateInstalledMemory
                       quickstep_utility_Cast
                       quickstep_utility_CheckSnprintf
diff --git a/utility/ExecutionDAGVisualizer.cpp b/utility/ExecutionDAGVisualizer.cpp
index 7c319f5..8059ef3 100644
--- a/utility/ExecutionDAGVisualizer.cpp
+++ b/utility/ExecutionDAGVisualizer.cpp
@@ -55,12 +55,15 @@
 namespace quickstep {
 
 DEFINE_bool(visualize_execution_dag_partition_info, false,
-            "If true, display the operator partition info in the visualized execution plan DAG."
-            "Valid iif 'visualize_execution_dag' turns on.");
+            "If true, display the operator partition info in the visualized "
+            "execution plan DAG. Valid iff 'visualize_execution_dag' turns on.");
 
 ExecutionDAGVisualizer::ExecutionDAGVisualizer(const QueryPlan &plan) {
+  using ROEnumType =
+      typename std::underlying_type<RelationalOperator::OperatorType>::type;
+
   // Do not display these relational operators in the graph.
-  const std::unordered_set<typename std::underlying_type<RelationalOperator::OperatorType>::type> no_display_op_types =
+  const std::unordered_set<ROEnumType> no_display_op_types =
       { RelationalOperator::kDestroyAggregationState,
         RelationalOperator::kDestroyHash,
         RelationalOperator::kDropTable };
