Minor bug fixes and refactors.
diff --git a/parser/SqlLexer.lpp b/parser/SqlLexer.lpp
index d818d0b..6f75424 100644
--- a/parser/SqlLexer.lpp
+++ b/parser/SqlLexer.lpp
@@ -183,9 +183,8 @@
   "blockproperties"  return TOKEN_BLOCKPROPERTIES;
   "blocksample"      return TOKEN_BLOCKSAMPLE;
   "bloomfilter"      return TOKEN_BLOOM_FILTER;
-  "case"             return TOKEN_CASE;
-  "csbtree"          return TOKEN_CSB_TREE;
   "by"               return TOKEN_BY;
+  "case"             return TOKEN_CASE;
   "char"             return TOKEN_CHARACTER;
   "character"        return TOKEN_CHARACTER;
   "check"            return TOKEN_CHECK;
@@ -193,6 +192,7 @@
   "constraint"       return TOKEN_CONSTRAINT;
   "copy"             return TOKEN_COPY;
   "create"           return TOKEN_CREATE;
+  "csbtree"          return TOKEN_CSB_TREE;
   "current"          return TOKEN_CURRENT;
   "date"             return TOKEN_DATE;
   "datetime"         return TOKEN_DATETIME;
diff --git a/parser/SqlParser.ypp b/parser/SqlParser.ypp
index ba69b3d..12a6b29 100644
--- a/parser/SqlParser.ypp
+++ b/parser/SqlParser.ypp
@@ -259,7 +259,6 @@
 %token TOKEN_BLOCKPROPERTIES;
 %token TOKEN_BLOCKSAMPLE;
 %token TOKEN_BLOOM_FILTER;
-%token TOKEN_CSB_TREE;
 %token TOKEN_BY;
 %token TOKEN_CASE;
 %token TOKEN_CHARACTER;
@@ -268,6 +267,7 @@
 %token TOKEN_CONSTRAINT;
 %token TOKEN_COPY;
 %token TOKEN_CREATE;
+%token TOKEN_CSB_TREE;
 %token TOKEN_CURRENT;
 %token TOKEN_DATE;
 %token TOKEN_DATETIME;
@@ -281,6 +281,7 @@
 %token TOKEN_DROP;
 %token TOKEN_ELSE;
 %token TOKEN_END;
+%token TOKEN_EOF;
 %token TOKEN_EXISTS;
 %token TOKEN_EXTRACT;
 %token TOKEN_FALSE;
@@ -307,6 +308,7 @@
 %token TOKEN_KEY;
 %token TOKEN_LAST;
 %token TOKEN_LEFT;
+%token TOKEN_LEX_ERROR;
 %token TOKEN_LIMIT;
 %token TOKEN_LONG;
 %token TOKEN_MINUTE;
@@ -333,8 +335,8 @@
 %token TOKEN_REGEXP;
 %token TOKEN_RIGHT;
 %token TOKEN_ROW;
-%token TOKEN_ROW_DELIMITER;
 %token TOKEN_ROWS;
+%token TOKEN_ROW_DELIMITER;
 %token TOKEN_SECOND;
 %token TOKEN_SELECT;
 %token TOKEN_SET;
@@ -363,8 +365,6 @@
 %token TOKEN_WITH;
 %token TOKEN_YEAR;
 %token TOKEN_YEARMONTH;
-%token TOKEN_EOF;
-%token TOKEN_LEX_ERROR;
 
 %type <string_value_>
   any_name
diff --git a/parser/preprocessed/SqlLexer_gen.cpp b/parser/preprocessed/SqlLexer_gen.cpp
index 4800cde..ff483a4 100644
--- a/parser/preprocessed/SqlLexer_gen.cpp
+++ b/parser/preprocessed/SqlLexer_gen.cpp
@@ -611,7 +611,7 @@
       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,   10,  158,  158,  158,   20,  158,  158,
       158,  158,  158,  158,  158,  158,  158,  158,  158,  138,
 
       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
@@ -632,8 +632,8 @@
       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,
+      143,  142,  158,  158,  158,  158,  158,  158,  158,   21,
+       22,  158,  158,  158,   27,  158,  158,  158,   31,  158,
       158,  158,   37,  158,  158,   41,   42,  158,  158,  158,
 
       158,  158,  158,  158,   52,   53,  158,   55,  158,   57,
@@ -643,7 +643,7 @@
       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,   24,  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,
 
@@ -651,21 +651,21 @@
       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,  158,  158,   25,  158,   28,  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,
+      158,  158,  158,  158,  158,  158,   29,   30,  158,   34,
 
        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,  158,   23,  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,
+       26,   38,   87,   95,  158,  158,  158,   18,   19,  158,
       115,  158,  158,  158,   99,  158,   17,    0
     } ;
 
@@ -1778,17 +1778,17 @@
 case 20:
 YY_RULE_SETUP
 #line 186 "../SqlLexer.lpp"
-return TOKEN_CASE;
+return TOKEN_BY;
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
 #line 187 "../SqlLexer.lpp"
-return TOKEN_CSB_TREE;
+return TOKEN_CASE;
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
 #line 188 "../SqlLexer.lpp"
-return TOKEN_BY;
+return TOKEN_CHARACTER;
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
@@ -1798,32 +1798,32 @@
 case 24:
 YY_RULE_SETUP
 #line 190 "../SqlLexer.lpp"
-return TOKEN_CHARACTER;
+return TOKEN_CHECK;
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 191 "../SqlLexer.lpp"
-return TOKEN_CHECK;
+return TOKEN_COLUMN;
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 192 "../SqlLexer.lpp"
-return TOKEN_COLUMN;
+return TOKEN_CONSTRAINT;
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 193 "../SqlLexer.lpp"
-return TOKEN_CONSTRAINT;
+return TOKEN_COPY;
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 194 "../SqlLexer.lpp"
-return TOKEN_COPY;
+return TOKEN_CREATE;
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 195 "../SqlLexer.lpp"
-return TOKEN_CREATE;
+return TOKEN_CSB_TREE;
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
diff --git a/parser/preprocessed/SqlParser_gen.cpp b/parser/preprocessed/SqlParser_gen.cpp
index 9b77875..3292904 100644
--- a/parser/preprocessed/SqlParser_gen.cpp
+++ b/parser/preprocessed/SqlParser_gen.cpp
@@ -221,15 +221,15 @@
     TOKEN_BLOCKPROPERTIES = 288,
     TOKEN_BLOCKSAMPLE = 289,
     TOKEN_BLOOM_FILTER = 290,
-    TOKEN_CSB_TREE = 291,
-    TOKEN_BY = 292,
-    TOKEN_CASE = 293,
-    TOKEN_CHARACTER = 294,
-    TOKEN_CHECK = 295,
-    TOKEN_COLUMN = 296,
-    TOKEN_CONSTRAINT = 297,
-    TOKEN_COPY = 298,
-    TOKEN_CREATE = 299,
+    TOKEN_BY = 291,
+    TOKEN_CASE = 292,
+    TOKEN_CHARACTER = 293,
+    TOKEN_CHECK = 294,
+    TOKEN_COLUMN = 295,
+    TOKEN_CONSTRAINT = 296,
+    TOKEN_COPY = 297,
+    TOKEN_CREATE = 298,
+    TOKEN_CSB_TREE = 299,
     TOKEN_CURRENT = 300,
     TOKEN_DATE = 301,
     TOKEN_DATETIME = 302,
@@ -243,85 +243,85 @@
     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_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
+    TOKEN_EOF = 313,
+    TOKEN_EXISTS = 314,
+    TOKEN_EXTRACT = 315,
+    TOKEN_FALSE = 316,
+    TOKEN_FIRST = 317,
+    TOKEN_FLOAT = 318,
+    TOKEN_FOLLOWING = 319,
+    TOKEN_FOR = 320,
+    TOKEN_FOREIGN = 321,
+    TOKEN_FROM = 322,
+    TOKEN_FULL = 323,
+    TOKEN_GROUP = 324,
+    TOKEN_HASH = 325,
+    TOKEN_HAVING = 326,
+    TOKEN_HOUR = 327,
+    TOKEN_IN = 328,
+    TOKEN_INDEX = 329,
+    TOKEN_INNER = 330,
+    TOKEN_INSERT = 331,
+    TOKEN_INTEGER = 332,
+    TOKEN_INTERVAL = 333,
+    TOKEN_INTO = 334,
+    TOKEN_JOIN = 335,
+    TOKEN_KEY = 336,
+    TOKEN_LAST = 337,
+    TOKEN_LEFT = 338,
+    TOKEN_LEX_ERROR = 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_ROWS = 363,
+    TOKEN_ROW_DELIMITER = 364,
+    TOKEN_SECOND = 365,
+    TOKEN_SELECT = 366,
+    TOKEN_SET = 367,
+    TOKEN_SMA = 368,
+    TOKEN_SMALLINT = 369,
+    TOKEN_STDERR = 370,
+    TOKEN_STDOUT = 371,
+    TOKEN_SUBSTRING = 372,
+    TOKEN_TABLE = 373,
+    TOKEN_THEN = 374,
+    TOKEN_TIME = 375,
+    TOKEN_TIMESTAMP = 376,
+    TOKEN_TO = 377,
+    TOKEN_TRUE = 378,
+    TOKEN_TUPLESAMPLE = 379,
+    TOKEN_UNBOUNDED = 380,
+    TOKEN_UNIQUE = 381,
+    TOKEN_UPDATE = 382,
+    TOKEN_USING = 383,
+    TOKEN_VALUES = 384,
+    TOKEN_VARCHAR = 385,
+    TOKEN_WHEN = 386,
+    TOKEN_WHERE = 387,
+    TOKEN_WINDOW = 388,
+    TOKEN_WITH = 389,
+    TOKEN_YEAR = 390,
+    TOKEN_YEARMONTH = 391
   };
 #endif
 
@@ -711,7 +711,7 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  50
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1327
+#define YYLAST   1392
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  148
@@ -828,40 +828,40 @@
   "TOKEN_ALL", "TOKEN_UNION", "TOKEN_INTERSECT", "TOKEN_ADD",
   "TOKEN_ALTER", "TOKEN_AS", "TOKEN_ASC", "TOKEN_BIGINT", "TOKEN_BIT",
   "TOKEN_BITWEAVING", "TOKEN_BLOCKPROPERTIES", "TOKEN_BLOCKSAMPLE",
-  "TOKEN_BLOOM_FILTER", "TOKEN_CSB_TREE", "TOKEN_BY", "TOKEN_CASE",
-  "TOKEN_CHARACTER", "TOKEN_CHECK", "TOKEN_COLUMN", "TOKEN_CONSTRAINT",
-  "TOKEN_COPY", "TOKEN_CREATE", "TOKEN_CURRENT", "TOKEN_DATE",
+  "TOKEN_BLOOM_FILTER", "TOKEN_BY", "TOKEN_CASE", "TOKEN_CHARACTER",
+  "TOKEN_CHECK", "TOKEN_COLUMN", "TOKEN_CONSTRAINT", "TOKEN_COPY",
+  "TOKEN_CREATE", "TOKEN_CSB_TREE", "TOKEN_CURRENT", "TOKEN_DATE",
   "TOKEN_DATETIME", "TOKEN_DAY", "TOKEN_DECIMAL", "TOKEN_DEFAULT",
   "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_DROP", "TOKEN_ELSE", "TOKEN_END", "TOKEN_EOF", "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_LEX_ERROR",
   "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_ROW", "TOKEN_ROWS", "TOKEN_ROW_DELIMITER", "TOKEN_SECOND",
   "TOKEN_SELECT", "TOKEN_SET", "TOKEN_SMA", "TOKEN_SMALLINT",
   "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",
+  "TOKEN_YEARMONTH", "';'", "'\\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",
@@ -916,10 +916,10 @@
 };
 # endif
 
-#define YYPACT_NINF -410
+#define YYPACT_NINF -388
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-410)))
+  (!!((Yystate) == (-388)))
 
 #define YYTABLE_NINF -139
 
@@ -930,62 +930,62 @@
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     405,  -410,  -410,   -52,    43,   -13,    34,   -38,   116,  -410,
-      48,   231,   231,  -410,   115,   119,  -410,  -410,  -410,  -410,
-    -410,  -410,  -410,  -410,  -410,  -410,   166,    46,    49,  -410,
-     -36,   205,   231,  -410,  -410,    38,   132,   231,   231,   231,
-     231,   231,  -410,  -410,   652,    97,    72,  -410,   203,    95,
-    -410,  -410,  -410,   130,   175,    46,    48,   158,  -410,   130,
-    -410,  -410,  -410,    25,    61,   128,   270,   128,   184,   142,
-     149,  -410,   106,  -410,  -410,   309,   313,  -410,  -410,  -410,
-     743,   153,  -410,   218,  -410,  -410,   189,  -410,  -410,   331,
-    -410,  -410,  -410,  -410,   199,  -410,  -410,   207,   272,   837,
-     347,   305,   211,  -410,  -410,   328,    19,  -410,  -410,   262,
-    -410,  -410,  -410,  -410,  -410,  1019,     5,   231,   231,   220,
-     231,    38,   231,  -410,   130,   373,  -410,   148,   243,  -410,
-    -410,  -410,   244,  -410,   128,  -410,   231,   231,   561,  -410,
-    -410,   245,   231,  -410,  -410,  -410,   561,    52,    17,  -410,
-     400,  -410,   140,   140,  1110,   402,  -410,     1,    29,  -410,
-      20,   149,  1110,  -410,  -410,   231,  1110,  -410,  -410,  -410,
-    -410,  1110,    21,   313,  -410,   231,   323,   -64,  -410,   416,
-    -410,   130,  -410,   167,  -410,   128,   130,    49,  -410,   231,
-     152,   231,   231,   231,  -410,   269,  -410,   169,  1177,   928,
-     220,   470,   426,   433,  -410,  -410,   407,   428,  1188,   303,
-     173,    23,  1110,    64,  -410,  1110,  -410,   388,   306,  -410,
-    -410,  -410,  -410,  -410,  -410,   381,  -410,    66,   310,  -410,
-    -410,     8,   209,   215,  -410,   311,   209,     9,   385,  -410,
-    -410,    19,  -410,   360,  -410,  -410,   315,  1110,  -410,   301,
-     180,   231,  -410,  1110,  -410,   231,  -410,  -410,  -410,   320,
-     384,   386,   329,  -410,  -410,  -410,   196,  -410,  -410,  -410,
-    -410,  -410,    16,   231,   341,   152,   231,  -410,   174,  -410,
-    -410,     2,    81,   561,   561,   206,  -410,  -410,  -410,  -410,
-    -410,  -410,  -410,  -410,  1110,   334,  1110,    58,  -410,   210,
-     335,   349,  1110,    68,  -410,   420,   301,  -410,  -410,  1110,
-     476,  -410,   162,   231,  -410,  -410,   389,  -410,   390,   391,
-     406,    20,  -410,   486,   487,   209,   453,   421,   455,   353,
-     403,  -410,   223,  -410,  1110,  -410,   301,  -410,   561,   357,
-     358,   231,  -410,   231,  -410,  -410,  -410,  -410,  -410,  -410,
-    -410,   231,  -410,  -410,  -410,   225,   477,    86,  -410,   361,
-     366,  -410,   417,   364,  1188,  -410,   430,   231,  -410,  -410,
-     174,  -410,  -410,   433,  -410,  -410,  -410,  1110,   367,   284,
-     837,  -410,   301,   424,  -410,  -410,  1188,  1188,   374,   301,
-    1110,  -410,    33,   -16,  -410,  -410,  -410,  -410,  -410,    20,
-     215,   419,   422,  -410,  1110,   561,   429,  1110,  -410,   475,
-      18,  -410,   301,    31,   231,   231,   227,  -410,   233,  -410,
-     231,  -410,  -410,  -410,  -410,   382,   152,   489,   432,  -410,
-     561,  -410,  -410,   392,  -410,   289,   837,  -410,  1110,   238,
-    -410,  -410,   240,  1188,   301,  -410,   521,  -410,   437,  -410,
-    -410,   393,   426,   498,   456,   393,  1110,  -410,  -410,  -410,
-     522,  -410,   246,   252,  -410,  -410,  -410,   231,  -410,  -410,
-     399,   504,  -410,    32,   231,  1110,   254,   301,  -410,  -410,
-     257,   404,   561,  1110,   540,   412,   408,  -410,   274,    11,
-     442,  -410,   286,   231,   127,  -410,   410,   301,  -410,  -410,
-    -410,   426,   408,  -410,   231,  -410,   412,  -410,  1110,  -410,
-    -410,   460,   454,   447,   458,   549,   231,  -410,   290,  -410,
-    -410,   425,  -410,   528,  -410,  -410,    -6,  -410,  -410,  -410,
-    -410,    12,   431,  -410,   231,   434,  -410,  -410,   495,   462,
-     496,  -410,   231,   293,   360,  -410,  -410,  -410,   299,   473,
-     435,  -410,   563,  -410,  -410
+     239,  -388,  -388,   -36,    39,   -27,    28,   -19,  -388,    23,
+    -388,    30,   237,   237,   122,     7,  -388,  -388,  -388,  -388,
+    -388,  -388,  -388,  -388,  -388,  -388,   154,     3,   156,  -388,
+     -14,   187,   237,  -388,  -388,    53,    13,   237,   237,   237,
+     237,   237,  -388,  -388,   701,   129,   103,  -388,   226,   121,
+    -388,  -388,  -388,   161,   198,     3,    30,   190,  -388,   161,
+    -388,  -388,  -388,    43,    16,   166,   288,   166,   211,   168,
+     182,  -388,   146,  -388,  -388,   329,   334,  -388,  -388,  -388,
+     795,   199,  -388,   270,  -388,  -388,   216,  -388,  -388,   359,
+    -388,  -388,  -388,  -388,   235,  -388,  -388,   258,   320,   890,
+     410,   352,   279,  -388,  -388,   285,    18,  -388,  -388,   326,
+    -388,  -388,  -388,  -388,  -388,  1080,   -17,   237,   237,   283,
+     237,    53,   237,  -388,   161,   421,  -388,   163,   177,  -388,
+    -388,  -388,   286,  -388,   166,  -388,   237,   237,   607,  -388,
+    -388,   287,   237,  -388,  -388,  -388,   607,    57,    62,  -388,
+     422,  -388,   141,   141,  1174,   425,  -388,    -2,    29,  -388,
+      19,   182,  1174,  -388,  -388,   237,  1174,  -388,  -388,  -388,
+    -388,  1174,    20,   334,  -388,   237,   400,    93,  -388,   423,
+    -388,   161,  -388,    80,  -388,   166,   161,   156,  -388,   237,
+     153,   237,   237,   237,  -388,   293,  -388,   130,  1251,   986,
+     283,   511,   430,   431,  -388,  -388,   312,   419,  1238,   298,
+     170,    22,  1174,    78,  -388,  1174,  -388,   383,   301,  -388,
+    -388,  -388,  -388,  -388,  -388,   375,  -388,   181,   303,  -388,
+    -388,    10,    77,   269,  -388,   304,    77,   -20,   379,  -388,
+    -388,    18,  -388,   348,  -388,  -388,   310,  1174,  -388,   330,
+     213,   237,  -388,  1174,  -388,   237,  -388,  -388,  -388,   313,
+     370,   374,   317,  -388,  -388,  -388,   222,  -388,  -388,  -388,
+    -388,  -388,    87,   237,   331,   153,   237,  -388,   256,  -388,
+    -388,    -1,    50,   607,   607,   219,  -388,  -388,  -388,  -388,
+    -388,  -388,  -388,  -388,  1174,   318,  1174,    66,  -388,   224,
+     325,   333,  1174,    26,  -388,   409,   330,  -388,  -388,  1174,
+     465,  -388,   133,   237,  -388,  -388,   376,  -388,   377,   378,
+     388,    19,  -388,   467,   471,    77,   438,   404,   440,   339,
+     387,  -388,   227,  -388,  1174,  -388,   330,  -388,   607,   342,
+     343,   237,  -388,   237,  -388,  -388,  -388,  -388,  -388,  -388,
+    -388,   237,  -388,  -388,  -388,   229,   461,   180,  -388,   344,
+     353,  -388,   399,   351,  1238,  -388,   411,   237,  -388,  -388,
+     256,  -388,  -388,   431,  -388,  -388,  -388,  1174,   354,   292,
+     890,  -388,   330,   402,  -388,  -388,  1238,  1238,   355,   330,
+    1174,  -388,    32,    71,  -388,  -388,  -388,  -388,  -388,    19,
+     269,   398,   401,  -388,  1174,   607,   405,  1174,  -388,   464,
+     142,  -388,   330,    21,   237,   237,   231,  -388,   236,  -388,
+     237,  -388,  -388,  -388,  -388,   358,   153,   468,   406,  -388,
+     607,  -388,  -388,   364,  -388,   323,   890,  -388,  1174,   238,
+    -388,  -388,   240,  1238,   330,  -388,   503,  -388,   414,  -388,
+    -388,   367,   430,   473,   433,   367,  1174,  -388,  -388,  -388,
+     501,  -388,   243,   246,  -388,  -388,  -388,   237,  -388,  -388,
+     380,   486,  -388,    31,   237,  1174,   252,   330,  -388,  -388,
+     254,   384,   607,  1174,   521,   393,   390,  -388,    68,    48,
+     424,  -388,   263,   237,    44,  -388,   392,   330,  -388,  -388,
+    -388,   430,   390,  -388,   237,  -388,   393,  -388,  1174,  -388,
+    -388,   444,   436,   437,   439,   533,   237,  -388,   267,  -388,
+    -388,   407,  -388,   515,  -388,  -388,   132,  -388,  -388,  -388,
+    -388,    49,   408,  -388,   237,   412,  -388,  -388,   481,   443,
+     488,  -388,   237,   272,   348,  -388,  -388,  -388,   274,   456,
+     415,  -388,   552,  -388,  -388
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -993,8 +993,8 @@
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     6,   300,     0,     0,     0,     0,     0,     0,    18,
-     123,     0,     0,     7,     0,     0,    15,     8,    10,    11,
+       0,     6,   300,     0,     0,     0,     0,     0,     7,     0,
+      18,   123,     0,     0,     0,     0,    15,     8,    10,    11,
       13,    14,     9,    17,    12,    16,     0,   112,   119,   121,
        0,   298,     0,   292,   293,     0,     0,     0,     0,     0,
        0,     0,   124,   125,     0,     0,   114,   115,     0,   156,
@@ -1054,18 +1054,18 @@
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -410,  -410,  -410,  -410,  -410,  -410,  -410,  -410,  -148,  -410,
-     376,   216,  -410,  -410,  -264,  -410,  -410,  -410,  -410,  -410,
-    -410,  -409,   236,  -410,  -410,  -410,  -410,  -410,  -410,  -410,
-    -410,    85,    -3,  -410,  -410,  -410,   325,  -410,   526,  -410,
-    -410,   467,   217,   464,   -43,   533,  -410,  -410,   436,  -410,
-    -114,  -410,  -410,  -186,   192,  -184,    -9,  -410,  -410,  -410,
-    -410,  -410,  -410,  -410,    89,    55,  -410,  -410,  -410,  -410,
-    -410,  -410,   109,    92,  -410,  -410,    79,  -410,  -142,   318,
-     322,   409,   -42,   441,   439,   501,  -154,  -410,  -410,  -410,
-    -410,   398,  -410,   469,   413,  -232,  -195,   449,  -324,  -410,
-    -129,  -410,  -410,  -410,  -410,  -410,  -141,    -4,  -410,  -410,
-    -410
+    -388,  -388,  -388,  -388,  -388,  -388,  -388,  -388,  -145,  -388,
+     363,   194,  -388,  -388,  -264,  -388,  -388,  -388,  -388,  -388,
+    -388,  -387,   223,  -388,  -388,  -388,  -388,  -388,  -388,  -388,
+    -388,    61,   -50,  -388,  -388,  -388,   316,  -388,   513,  -388,
+    -388,   451,   257,   447,   -41,   516,  -388,  -388,   416,  -388,
+    -114,  -388,  -388,  -191,   174,  -214,   -10,  -388,  -388,  -388,
+    -388,  -388,  -388,  -388,    74,    33,  -388,  -388,  -388,  -388,
+    -388,  -388,    91,    73,  -388,  -388,   -56,  -388,  -142,   299,
+     300,   386,   -42,   417,   418,   472,  -154,  -388,  -388,  -388,
+    -388,   373,  -388,   442,   382,  -232,  -195,   435,  -292,  -388,
+    -126,  -388,  -388,  -388,  -388,  -388,  -141,    -4,  -388,  -388,
+    -388
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -1090,338 +1090,352 @@
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      36,   210,   105,    48,   211,   182,   236,    45,    49,   207,
-     283,   358,    33,   298,    34,   332,   126,   207,   512,   538,
-      33,   344,    34,   345,    33,    33,    34,    34,    63,   143,
-      56,   283,   175,    68,    69,    70,    71,    72,   147,   283,
-     283,   258,   168,   169,   346,   312,   232,    33,   323,    34,
-     163,   164,   322,   446,   163,   164,   127,   158,   492,   281,
-     536,   513,   539,   442,   135,    37,   129,    56,   383,    32,
-     207,   138,   207,   163,   164,    56,    42,   236,   215,    59,
-     537,   347,   251,    40,   518,   128,   280,   163,   164,   163,
-     164,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   167,   163,   164,    60,    39,    43,    61,    38,    48,
-     348,   349,   227,   179,    49,    50,   184,   232,   186,   480,
-     105,    67,    10,   421,   457,   215,   422,   423,   361,   447,
-     458,   194,   195,   198,   249,   400,   324,   310,   184,   514,
-     540,   403,   350,   257,   354,   302,   229,   372,   439,   176,
-     384,   146,   231,   176,   207,   207,   237,    10,   295,   282,
-     351,   240,   469,    64,   231,   243,   170,   236,   244,   431,
-     303,   245,   451,   306,   230,   455,   461,   495,   445,   130,
-     131,   381,   256,    57,   362,   198,   212,   264,   265,   272,
-     390,   441,   298,   219,   189,   190,   413,   259,   212,    41,
-     416,   519,   424,    66,   476,   249,   185,   232,    62,   207,
-     418,   336,   117,    33,    53,    34,   220,    27,   118,   363,
-      10,    35,   260,   375,   376,   377,   230,   237,    49,   364,
-     221,   222,    49,   520,   316,    33,   119,    34,   141,   120,
-     238,   317,   313,    55,    10,   236,    54,   179,   298,   318,
-     142,   337,   379,   223,   382,   261,   252,    64,   122,    51,
-     389,    52,   125,   452,   437,   132,   365,   392,   352,   356,
-     121,   319,   198,   462,   463,   134,   207,   366,   224,   136,
-      10,   262,   367,   378,   138,   232,   137,   316,   473,   191,
-     192,   466,   412,   438,   317,   163,   164,   150,   475,  -138,
-     151,   207,   318,   368,   395,   163,   164,   394,   509,    49,
-     163,   164,   254,   255,   275,   276,   144,   237,   301,   255,
-     145,    49,   163,   164,   319,   333,   334,    33,    73,    34,
-      74,   510,    33,   152,    34,   435,   153,   184,   249,   272,
-     501,   342,   343,   154,    75,    76,   246,   184,   444,   163,
-     164,   155,   159,   207,   156,   385,   386,   162,    78,    79,
-     172,   165,   249,   433,   181,   249,    80,    81,   411,   334,
-     419,   420,   464,   255,    82,    83,   160,    84,   465,   255,
-     188,   247,    85,   478,   334,   479,   386,    86,   193,   208,
-      87,   490,   255,   543,   249,   237,   477,   491,   255,   498,
-     334,   548,   499,   386,    88,    89,     1,   218,     2,   228,
-     184,   184,    90,   273,   488,    91,   356,   285,   286,   287,
-     288,   289,   290,   291,   292,   293,   294,   253,   163,   164,
-      92,   517,   343,   497,   283,   533,   343,     3,   549,   255,
-      93,   488,   284,    94,   551,   255,    95,    96,   297,   300,
-     307,   308,   309,     4,     5,   311,    97,   321,   326,   328,
-     331,     6,    98,   272,   338,     7,   488,    99,   248,   339,
-     496,   340,   357,   341,    33,    73,    34,    74,   380,   387,
-     199,   388,   391,   393,   295,     8,   396,   397,   398,   272,
-     399,    75,    76,   401,   402,   404,   405,   407,   408,   409,
-     523,   414,   415,   427,   175,    78,    79,   426,   430,   429,
-       9,   436,   532,    80,    81,   432,   440,   456,   443,    10,
-     449,    82,    83,   450,    84,   453,   467,   470,   481,    85,
-     184,   471,   482,   200,    86,    11,   474,    87,   184,   334,
-     483,   489,    12,   493,   484,    13,   494,   503,   504,   500,
-     516,    88,    89,   526,   508,   522,   528,   529,   531,    90,
-     530,   535,    91,   545,   547,    33,    73,    34,    74,   534,
-     554,   199,   546,   552,   278,   542,   335,    92,   544,   417,
-     553,   123,    75,    76,    10,   180,   434,    93,   187,   124,
-      94,   448,   502,    95,    96,   524,    78,    79,   239,   550,
-     525,   373,   226,    97,    80,    81,   374,   241,   279,    98,
-     242,   304,    82,    83,   201,    84,   174,   216,     0,     0,
-      85,     0,     0,     0,   200,    86,   305,     0,    87,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    88,    89,     0,     0,     0,     0,     0,     0,
-      90,     0,     0,    91,     0,     0,    33,    73,    34,    74,
-       0,     0,     0,     0,     0,     0,     0,     0,    92,     0,
-       0,     0,     0,    75,    76,    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,
+      36,   210,   105,    48,   211,   182,   236,   283,    45,    49,
+     175,   358,   207,   298,    33,   332,    34,   135,   126,   323,
+     207,   129,   322,    33,    33,    34,    34,    56,    63,   283,
+     283,   143,    56,    68,    69,    70,    71,    72,   147,   283,
+     312,   168,   169,    33,   258,    34,   232,   163,   164,    60,
+     163,   164,    37,   163,   164,   512,   538,   158,    42,   281,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+      51,   163,   164,   207,   127,   207,   383,   236,   163,   164,
+     492,    33,    56,    34,   194,    66,   280,    32,    43,   163,
+     164,    33,   344,    34,   345,   442,    38,    67,   513,   539,
+      39,   167,   509,   128,    40,   238,   518,    41,    48,   324,
+     313,   403,   227,   179,    49,   346,   184,   232,   186,   519,
+     105,   252,    50,   215,   176,   510,    11,   176,   295,    61,
+     400,   361,   195,   198,   249,   256,   130,   131,   184,   215,
+      64,   446,    57,   229,   372,   257,   302,   354,   439,    52,
+     390,   480,   520,   347,   231,    11,   237,   207,   207,   282,
+     384,   240,   469,   231,   243,   170,   461,   236,   244,   431,
+     303,   245,   451,   306,   230,   455,   495,   445,   514,   540,
+      64,   381,   185,   348,   349,   198,    59,   264,   265,   272,
+      62,   441,   298,   212,   219,   230,   413,   259,   146,   536,
+     416,    53,   163,   164,   476,   249,   316,   232,   189,   190,
+     418,   336,   207,   317,   212,   350,   447,   421,   220,   537,
+     422,   318,   191,   192,   260,   254,   255,   237,    49,   423,
+     138,   351,    49,   221,   222,    54,   375,   376,   377,   251,
+       1,    33,     2,    34,   319,   236,   117,   179,   298,   118,
+     457,   337,   379,   310,   382,   458,   223,    27,   261,   119,
+     389,    35,    11,   452,   437,   120,   362,   392,   352,   356,
+      11,     3,   198,   462,   463,   275,   276,    11,   394,   207,
+     141,   224,   122,    55,   262,   232,     4,     5,   473,    33,
+     142,    34,   412,   134,   466,     6,   125,   378,   424,     7,
+     363,   438,     8,   395,   207,   132,   163,   164,   136,    49,
+     121,   364,   137,   163,   164,   301,   255,   237,   165,   138,
+       9,    49,   285,   286,   287,   288,   289,   290,   291,   292,
+     293,   294,   475,   163,   164,   435,   144,   184,   249,   272,
+     501,   145,   316,   150,   163,   164,    10,   184,   444,   317,
+     365,   163,   164,   151,  -138,    11,   207,   318,   333,   334,
+     152,   366,   249,   433,   153,   249,   367,   342,   343,   385,
+     386,    12,   411,   334,   419,   420,   464,   255,    13,   154,
+     319,   465,   255,   478,   334,   479,   386,   368,   490,   255,
+     295,   491,   255,   543,   249,   237,   477,   498,   334,   499,
+     386,   548,   155,   156,    33,    73,    34,    74,   517,   343,
+     184,   184,   533,   343,   488,   159,   356,   549,   255,   551,
+     255,    75,    76,   246,   160,   162,   172,   181,   188,   218,
+     193,   208,   228,   497,   253,    78,    79,   273,   283,   297,
+     284,   488,    80,    81,   300,   307,   308,   309,   311,   328,
+     321,    82,    83,   326,    84,   331,   339,   338,   247,    85,
+     340,   341,   380,   272,   357,    86,   488,   388,    87,   387,
+     496,   391,   393,   399,   401,   396,   397,   398,   402,   404,
+     405,   407,    88,    89,   408,   409,   414,   415,   175,   272,
+     426,    90,   427,   429,    91,   430,   440,   432,   436,   443,
+     523,   449,   467,   453,   450,   456,   470,   471,   474,    92,
+     481,   482,   532,   334,   483,    33,    73,    34,    74,    93,
+     489,   199,    94,   484,   493,    95,    96,   494,   503,   500,
+     184,   504,    75,    76,   516,    97,   508,   522,   184,   526,
+     528,    98,   531,   530,    99,   248,    78,    79,   535,   529,
+     545,   534,   542,    80,    81,   546,   544,   547,   552,   554,
+     553,   278,    82,    83,   434,    84,   417,   335,   123,   180,
+      85,   187,   124,   448,   502,   200,    86,   550,   239,    87,
+     524,   525,   373,   241,   374,   279,   304,   174,   226,   242,
+     216,     0,     0,    88,    89,   305,     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,
+       0,    33,    73,    34,    74,     0,     0,   199,     0,     0,
+      92,     0,     0,     0,     0,     0,     0,    11,    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,     0,    78,    79,     0,     0,    97,     0,     0,    80,
+      81,     0,    98,     0,     0,   201,     0,     0,    82,    83,
        0,    84,     0,     0,     0,     0,    85,     0,     0,     0,
-       0,    86,     0,     0,    87,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    88,    89,
-       0,     0,     0,     0,     0,     0,    90,     0,     0,    91,
-       0,     0,    33,    73,    34,    74,     0,     0,     0,     0,
-       0,     0,     0,     0,    92,     0,     0,     0,     0,    75,
-      76,    10,     0,     0,    93,     0,     0,    94,     0,     0,
-      95,    96,     0,    78,    79,     0,     0,     0,     0,     0,
-      97,    80,    81,     0,     0,     0,    98,     0,     0,    82,
-      83,    99,    84,     0,     0,     0,     0,    85,     0,     0,
        0,   200,    86,     0,     0,    87,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    88,
-      89,     0,     0,     0,     0,     0,     0,    90,     0,     0,
-      91,     0,     0,    33,    73,    34,    74,     0,     0,     0,
-       0,     0,     0,     0,     0,    92,     0,     0,     0,     0,
-      75,   173,     0,     0,     0,    93,     0,     0,    94,     0,
-       0,    95,    96,     0,    78,    79,     0,     0,     0,     0,
-       0,    97,    80,    81,     0,     0,     0,    98,     0,     0,
-      82,    83,   201,    84,     0,     0,     0,     0,    85,     0,
-       0,     0,     0,    86,     0,     0,    87,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      88,    89,     0,     0,     0,     0,     0,     0,    90,     0,
-       0,    91,     0,     0,    33,    73,    34,    74,     0,     0,
+      89,     0,     0,     0,     0,     0,     0,     0,    90,     0,
+       0,    91,     0,     0,     0,    33,    73,    34,    74,     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,    75,    76,    77,     0,    93,     0,     0,    94,
+       0,     0,    95,    96,     0,     0,    78,    79,     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,   201,    82,    83,     0,    84,     0,     0,     0,     0,
+      85,     0,     0,     0,     0,     0,    86,     0,     0,    87,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    88,    89,    73,     0,    74,     0,     0,     0,    90,
-       0,     0,    91,     0,     0,     0,     0,     0,     0,    75,
-     173,     0,    78,    79,     0,     0,     0,    92,     0,     0,
-       0,    81,     0,    78,    79,     0,     0,    93,    82,    83,
-      94,    84,    81,    95,    96,     0,    85,     0,     0,    82,
-      83,     0,    84,    97,    87,     0,     0,    85,     0,    98,
-       0,     0,     0,     0,    99,    87,     0,     0,    88,   277,
-       0,     0,     0,     0,     0,     0,    90,     0,     0,    88,
-      89,     0,     0,     0,     0,     0,     0,    90,     0,     0,
-      91,     0,     0,     0,    92,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    93,    92,     0,     0,     0,     0,
-      95,    96,     0,     0,     0,    93,     0,     0,     0,     0,
-      97,    95,    96,     0,     0,     0,    98,     0,     0,     0,
-       0,    97,     0,     0,     0,     0,     0,    98
+       0,     0,     0,    88,    89,     0,     0,     0,     0,     0,
+       0,     0,    90,     0,     0,    91,     0,     0,     0,    33,
+      73,    34,    74,     0,     0,     0,     0,     0,     0,     0,
+      92,     0,     0,     0,     0,     0,    75,    76,     0,     0,
+      93,     0,     0,    94,     0,     0,    95,    96,     0,     0,
+      78,    79,     0,     0,     0,     0,    97,    80,    81,     0,
+       0,     0,    98,     0,     0,    99,    82,    83,     0,    84,
+       0,     0,     0,     0,    85,     0,     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,     0,    90,     0,     0,    91,
+       0,     0,     0,     0,    33,    73,    34,    74,     0,     0,
+       0,     0,     0,     0,    92,     0,     0,     0,     0,     0,
+       0,    75,    76,     0,    93,     0,     0,    94,     0,     0,
+      95,    96,     0,     0,     0,    78,    79,     0,     0,     0,
+      97,   146,    80,    81,     0,     0,    98,     0,     0,    99,
+       0,    82,    83,     0,    84,     0,     0,     0,     0,    85,
+       0,     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,
+       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,    11,    75,    76,    93,
+       0,     0,    94,     0,     0,    95,    96,     0,     0,     0,
+       0,    78,    79,     0,     0,    97,     0,     0,    80,    81,
+       0,    98,     0,     0,    99,     0,     0,    82,    83,     0,
+      84,     0,     0,     0,     0,    85,     0,     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,     0,    90,     0,     0,
+      91,     0,     0,     0,    33,    73,    34,    74,     0,     0,
+       0,     0,     0,     0,     0,    92,     0,     0,     0,     0,
+       0,    75,   173,     0,     0,    93,     0,     0,    94,     0,
+       0,    95,    96,     0,     0,    78,    79,     0,     0,     0,
+       0,    97,    80,    81,     0,     0,     0,    98,     0,     0,
+     201,    82,    83,     0,    84,     0,     0,     0,     0,    85,
+       0,     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,
+       0,    90,     0,     0,    91,     0,     0,     0,    33,    73,
+      34,    74,     0,     0,     0,     0,     0,     0,     0,    92,
+       0,     0,     0,     0,     0,    75,    76,     0,     0,    93,
+       0,     0,    94,     0,     0,    95,    96,     0,     0,    78,
+      79,     0,     0,     0,     0,    97,    80,    81,     0,     0,
+       0,    98,     0,     0,    99,    82,    83,     0,    84,     0,
+       0,     0,     0,    85,     0,     0,     0,     0,     0,    86,
+       0,     0,    87,    73,     0,    74,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    88,    89,     0,    75,
+     173,     0,     0,     0,     0,    90,     0,     0,    91,     0,
+       0,     0,     0,    78,    79,     0,     0,     0,     0,     0,
+       0,    81,     0,    92,     0,     0,    78,    79,     0,    82,
+      83,     0,    84,    93,    81,     0,    94,    85,     0,    95,
+      96,     0,    82,    83,     0,    84,    87,     0,     0,    97,
+      85,     0,     0,     0,     0,    98,     0,     0,    99,    87,
+      88,    89,     0,     0,     0,     0,     0,     0,     0,    90,
+       0,     0,    91,    88,   277,     0,     0,     0,     0,     0,
+       0,     0,    90,     0,     0,     0,     0,    92,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    93,     0,     0,
+      92,     0,     0,    95,    96,     0,     0,     0,     0,     0,
+      93,     0,     0,    97,     0,     0,    95,    96,     0,    98,
+       0,     0,     0,     0,     0,     0,    97,     0,     0,     0,
+       0,     0,    98
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,   142,    44,    12,   146,   119,   160,    11,    12,   138,
-       8,   275,     4,   208,     6,   247,    59,   146,     7,     7,
-       4,     5,     6,     7,     4,     4,     6,     6,    32,    72,
-      29,     8,    27,    37,    38,    39,    40,    41,    80,     8,
-       8,   189,    23,    24,    28,   231,   160,     4,    39,     6,
-      21,    22,   236,    69,    21,    22,    31,    99,   467,   201,
-      66,    50,    50,   387,    67,    78,     5,    29,    10,   121,
-     199,   135,   201,    21,    22,    29,    28,   231,    61,    30,
-      86,    65,   146,   121,   493,    60,   200,    21,    22,    21,
-      22,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,   105,    21,    22,   140,    71,    58,   143,   121,   118,
-      94,    95,   154,   117,   118,     0,   120,   231,   122,   443,
-     162,    36,   114,    37,   106,    61,    40,    41,   276,   145,
-     112,   134,   136,   137,   176,   321,   127,    71,   142,   128,
-     128,   325,   126,   186,   273,   122,   145,   145,   380,   144,
-      92,   134,   144,   144,   283,   284,   160,   114,    77,   201,
-     144,   165,   426,   125,   144,   144,   147,   321,   172,   364,
-     212,   175,   404,   215,   145,   407,   145,   145,   145,   118,
-     119,   295,   185,   137,    10,   189,   134,   191,   192,   193,
-     122,   386,   387,    53,    46,    47,   338,    45,   134,    83,
-     341,    74,   116,    71,   436,   247,   121,   321,     3,   338,
-     351,   253,   115,     4,    48,     6,    76,     0,   146,    45,
-     114,     4,    70,    17,    18,    19,   145,   231,   232,    55,
-      90,    91,   236,   106,    72,     4,    33,     6,   132,   144,
-     161,    79,    33,    26,   114,   399,    80,   251,   443,    87,
-     144,   255,   294,   113,   296,   103,   177,   125,    83,   140,
-     302,   142,   104,   405,   378,   137,    92,   309,   272,   273,
-      53,   109,   276,   414,   415,     5,   405,   103,   138,    95,
-     114,   129,   108,    77,   135,   399,   144,    72,   430,    46,
-      47,   420,   334,     9,    79,    21,    22,   144,     9,    84,
-      82,   430,    87,   129,   313,    21,    22,   145,    34,   313,
-      21,    22,   145,   146,   145,   146,     7,   321,   145,   146,
-       7,   325,    21,    22,   109,   145,   146,     4,     5,     6,
-       7,    57,     4,   144,     6,   377,     5,   341,   380,   343,
-     482,   145,   146,   144,    21,    22,    23,   351,   390,    21,
-      22,   144,     5,   482,    82,   145,   146,   146,    35,    36,
-      98,    33,   404,   367,   144,   407,    43,    44,   145,   146,
-     145,   146,   145,   146,    51,    52,    71,    54,   145,   146,
-       7,    58,    59,   145,   146,   145,   146,    64,   144,   144,
-      67,   145,   146,   534,   436,   399,   438,   145,   146,   145,
-     146,   542,   145,   146,    81,    82,     1,     7,     3,     7,
-     414,   415,    89,   144,   456,    92,   420,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    11,    21,    22,
-     107,   145,   146,   475,     8,   145,   146,    32,   145,   146,
-     117,   483,     9,   120,   145,   146,   123,   124,    20,   146,
-      62,   145,    71,    48,    49,   145,   133,   146,    73,    99,
-     145,    56,   139,   467,   144,    60,   508,   144,   145,    85,
-     474,    85,   131,   144,     4,     5,     6,     7,   144,   144,
-      10,   132,    62,     7,    77,    80,    97,    97,    97,   493,
-      84,    21,    22,     7,     7,    42,    75,    42,   145,    96,
-     504,   144,   144,   137,    27,    35,    36,   146,   144,    92,
-     105,   144,   516,    43,    44,    85,    92,    42,   144,   114,
-     101,    51,    52,   101,    54,    96,   144,    38,     7,    59,
-     534,    99,    95,    63,    64,   130,   144,    67,   542,   146,
-      42,    19,   137,   144,    88,   140,    42,     7,   136,   145,
-     108,    81,    82,    93,   146,   145,   102,   110,     9,    89,
-     102,    33,    92,    68,    68,     4,     5,     6,     7,   144,
-       7,    10,   110,   100,   198,   144,   251,   107,   144,   343,
-     145,    55,    21,    22,   114,   118,   370,   117,   124,    56,
-     120,   399,   483,   123,   124,   506,    35,    36,   162,   544,
-     508,   283,   153,   133,    43,    44,   284,   166,   199,   139,
-     171,   213,    51,    52,   144,    54,   115,   148,    -1,    -1,
-      59,    -1,    -1,    -1,    63,    64,   213,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,
-      89,    -1,    -1,    92,    -1,    -1,     4,     5,     6,     7,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,
-      -1,    -1,    -1,    21,    22,    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,
+       4,   142,    44,    13,   146,   119,   160,     8,    12,    13,
+      27,   275,   138,   208,     4,   247,     6,    67,    59,    39,
+     146,     5,   236,     4,     4,     6,     6,    29,    32,     8,
+       8,    72,    29,    37,    38,    39,    40,    41,    80,     8,
+     231,    23,    24,     4,   189,     6,   160,    21,    22,    63,
+      21,    22,    79,    21,    22,     7,     7,    99,    28,   201,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      63,    21,    22,   199,    31,   201,    10,   231,    21,    22,
+     467,     4,    29,     6,   134,    72,   200,   123,    58,    21,
+      22,     4,     5,     6,     7,   387,   123,    36,    50,    50,
+      72,   105,    34,    60,   123,   161,   493,    84,   118,   129,
+      33,   325,   154,   117,   118,    28,   120,   231,   122,    75,
+     162,   177,     0,    61,   144,    57,   116,   144,    78,   143,
+     321,   276,   136,   137,   176,   185,   120,   121,   142,    61,
+     127,    70,   139,   145,   145,   186,   124,   273,   380,   142,
+     124,   443,   108,    66,   144,   116,   160,   283,   284,   201,
+      94,   165,   426,   144,   144,   147,   145,   321,   172,   364,
+     212,   175,   404,   215,   145,   407,   145,   145,   130,   130,
+     127,   295,   121,    96,    97,   189,    30,   191,   192,   193,
+       3,   386,   387,   136,    53,   145,   338,    44,   136,    67,
+     341,    47,    21,    22,   436,   247,    73,   321,    45,    46,
+     351,   253,   338,    80,   136,   128,   145,    37,    77,    87,
+      40,    88,    45,    46,    71,   145,   146,   231,   232,    49,
+     137,   144,   236,    92,    93,    81,    17,    18,    19,   146,
+       1,     4,     3,     6,   111,   399,   117,   251,   443,   146,
+     108,   255,   294,    72,   296,   113,   115,     0,   105,    33,
+     302,     4,   116,   405,   378,   144,    10,   309,   272,   273,
+     116,    32,   276,   414,   415,   145,   146,   116,   145,   405,
+     134,   140,    84,    26,   131,   399,    47,    48,   430,     4,
+     144,     6,   334,     5,   420,    56,   106,    78,   118,    60,
+      44,     9,    63,   313,   430,   139,    21,    22,    97,   313,
+      53,    55,   144,    21,    22,   145,   146,   321,    33,   137,
+      81,   325,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,     9,    21,    22,   377,     7,   341,   380,   343,
+     482,     7,    73,   144,    21,    22,   107,   351,   390,    80,
+      94,    21,    22,    83,    85,   116,   482,    88,   145,   146,
+     144,   105,   404,   367,     5,   407,   110,   145,   146,   145,
+     146,   132,   145,   146,   145,   146,   145,   146,   139,   144,
+     111,   145,   146,   145,   146,   145,   146,   131,   145,   146,
+      78,   145,   146,   534,   436,   399,   438,   145,   146,   145,
+     146,   542,   144,    83,     4,     5,     6,     7,   145,   146,
+     414,   415,   145,   146,   456,     5,   420,   145,   146,   145,
+     146,    21,    22,    23,    72,   146,   100,   144,     7,     7,
+     144,   144,     7,   475,    11,    35,    36,   144,     8,    20,
+       9,   483,    42,    43,   146,    62,   145,    72,   145,   101,
+     146,    51,    52,    74,    54,   145,    86,   144,    58,    59,
+      86,   144,   144,   467,   133,    65,   508,   134,    68,   144,
+     474,    62,     7,    85,     7,    99,    99,    99,     7,    41,
+      76,    41,    82,    83,   145,    98,   144,   144,    27,   493,
+     146,    91,   139,    94,    94,   144,    94,    86,   144,   144,
+     504,   103,   144,    98,   103,    41,    38,   101,   144,   109,
+       7,    97,   516,   146,    41,     4,     5,     6,     7,   119,
+      19,    10,   122,    90,   144,   125,   126,    41,     7,   145,
+     534,   138,    21,    22,   110,   135,   146,   145,   542,    95,
+     104,   141,     9,   104,   144,   145,    35,    36,    33,   112,
+      69,   144,   144,    42,    43,   112,   144,    69,   102,     7,
+     145,   198,    51,    52,   370,    54,   343,   251,    55,   118,
+      59,   124,    56,   399,   483,    64,    65,   544,   162,    68,
+     506,   508,   283,   166,   284,   199,   213,   115,   153,   171,
+     148,    -1,    -1,    82,    83,   213,    -1,    -1,    -1,    -1,
+      -1,    -1,    91,    -1,    -1,    94,    -1,    -1,    -1,    -1,
+      -1,     4,     5,     6,     7,    -1,    -1,    10,    -1,    -1,
+     109,    -1,    -1,    -1,    -1,    -1,    -1,   116,    21,    22,
+     119,    -1,    -1,   122,    -1,    -1,   125,   126,    -1,    -1,
+      -1,    -1,    35,    36,    -1,    -1,   135,    -1,    -1,    42,
+      43,    -1,   141,    -1,    -1,   144,    -1,    -1,    51,    52,
       -1,    54,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,
-      -1,    64,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,
-      -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
-      -1,    -1,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    21,
-      22,   114,    -1,    -1,   117,    -1,    -1,   120,    -1,    -1,
-     123,   124,    -1,    35,    36,    -1,    -1,    -1,    -1,    -1,
-     133,    43,    44,    -1,    -1,    -1,   139,    -1,    -1,    51,
-      52,   144,    54,    -1,    -1,    -1,    -1,    59,    -1,    -1,
-      -1,    63,    64,    -1,    -1,    67,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
-      82,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
-      92,    -1,    -1,     4,     5,     6,     7,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,
-      21,    22,    -1,    -1,    -1,   117,    -1,    -1,   120,    -1,
-      -1,   123,   124,    -1,    35,    36,    -1,    -1,    -1,    -1,
-      -1,   133,    43,    44,    -1,    -1,    -1,   139,    -1,    -1,
-      51,    52,   144,    54,    -1,    -1,    -1,    -1,    59,    -1,
-      -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    -1,    -1,
+      -1,    64,    65,    -1,    -1,    68,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
+      -1,    94,    -1,    -1,    -1,     4,     5,     6,     7,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
+      -1,    -1,    21,    22,    23,    -1,   119,    -1,    -1,   122,
+      -1,    -1,   125,   126,    -1,    -1,    35,    36,    -1,    -1,
+      -1,    -1,   135,    42,    43,    -1,    -1,    -1,   141,    -1,
+      -1,   144,    51,    52,    -1,    54,    -1,    -1,    -1,    -1,
+      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    68,
       -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,    82,    83,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    91,    -1,    -1,    94,    -1,    -1,    -1,     4,
+       5,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     109,    -1,    -1,    -1,    -1,    -1,    21,    22,    -1,    -1,
+     119,    -1,    -1,   122,    -1,    -1,   125,   126,    -1,    -1,
+      35,    36,    -1,    -1,    -1,    -1,   135,    42,    43,    -1,
+      -1,    -1,   141,    -1,    -1,   144,    51,    52,    -1,    54,
+      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
+      -1,    -1,    -1,    -1,     4,     5,     6,     7,    -1,    -1,
+      -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
+      -1,    21,    22,    -1,   119,    -1,    -1,   122,    -1,    -1,
+     125,   126,    -1,    -1,    -1,    35,    36,    -1,    -1,    -1,
+     135,   136,    42,    43,    -1,    -1,   141,    -1,    -1,   144,
+      -1,    51,    52,    -1,    54,    -1,    -1,    -1,    -1,    59,
+      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    68,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    81,    82,     5,    -1,     7,    -1,    -1,    -1,    89,
-      -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    21,
-      22,    -1,    35,    36,    -1,    -1,    -1,   107,    -1,    -1,
-      -1,    44,    -1,    35,    36,    -1,    -1,   117,    51,    52,
-     120,    54,    44,   123,   124,    -1,    59,    -1,    -1,    51,
-      52,    -1,    54,   133,    67,    -1,    -1,    59,    -1,   139,
-      -1,    -1,    -1,    -1,   144,    67,    -1,    -1,    81,    82,
-      -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    81,
-      82,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
-      92,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   117,   107,    -1,    -1,    -1,    -1,
-     123,   124,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,
-     133,   123,   124,    -1,    -1,    -1,   139,    -1,    -1,    -1,
-      -1,   133,    -1,    -1,    -1,    -1,    -1,   139
+      -1,    -1,    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    91,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
+       4,     5,     6,     7,    -1,    -1,    -1,    -1,    -1,   109,
+      -1,    -1,    -1,    -1,    -1,    -1,   116,    21,    22,   119,
+      -1,    -1,   122,    -1,    -1,   125,   126,    -1,    -1,    -1,
+      -1,    35,    36,    -1,    -1,   135,    -1,    -1,    42,    43,
+      -1,   141,    -1,    -1,   144,    -1,    -1,    51,    52,    -1,
+      54,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
+      64,    65,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
+      94,    -1,    -1,    -1,     4,     5,     6,     7,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,
+      -1,    21,    22,    -1,    -1,   119,    -1,    -1,   122,    -1,
+      -1,   125,   126,    -1,    -1,    35,    36,    -1,    -1,    -1,
+      -1,   135,    42,    43,    -1,    -1,    -1,   141,    -1,    -1,
+     144,    51,    52,    -1,    54,    -1,    -1,    -1,    -1,    59,
+      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    91,    -1,    -1,    94,    -1,    -1,    -1,     4,     5,
+       6,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
+      -1,    -1,    -1,    -1,    -1,    21,    22,    -1,    -1,   119,
+      -1,    -1,   122,    -1,    -1,   125,   126,    -1,    -1,    35,
+      36,    -1,    -1,    -1,    -1,   135,    42,    43,    -1,    -1,
+      -1,   141,    -1,    -1,   144,    51,    52,    -1,    54,    -1,
+      -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
+      -1,    -1,    68,     5,    -1,     7,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    -1,    21,
+      22,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    -1,
+      -1,    -1,    -1,    35,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    43,    -1,   109,    -1,    -1,    35,    36,    -1,    51,
+      52,    -1,    54,   119,    43,    -1,   122,    59,    -1,   125,
+     126,    -1,    51,    52,    -1,    54,    68,    -1,    -1,   135,
+      59,    -1,    -1,    -1,    -1,   141,    -1,    -1,   144,    68,
+      82,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
+      -1,    -1,    94,    82,    83,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    91,    -1,    -1,    -1,    -1,   109,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,
+     109,    -1,    -1,   125,   126,    -1,    -1,    -1,    -1,    -1,
+     119,    -1,    -1,   135,    -1,    -1,   125,   126,    -1,   141,
+      -1,    -1,    -1,    -1,    -1,    -1,   135,    -1,    -1,    -1,
+      -1,    -1,   141
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,     1,     3,    32,    48,    49,    56,    60,    80,   105,
-     114,   130,   137,   140,   149,   150,   151,   152,   153,   154,
+       0,     1,     3,    32,    47,    48,    56,    60,    63,    81,
+     107,   116,   132,   139,   149,   150,   151,   152,   153,   154,
      155,   177,   178,   181,   182,   185,   187,   190,   191,   192,
-     257,   258,   121,     4,     6,   190,   255,    78,   121,    71,
-     121,    83,    28,    58,   193,   255,   188,   189,   204,   255,
-       0,   140,   142,    48,    80,   190,    29,   137,   186,    30,
-     140,   143,     3,   255,   125,   179,    71,   179,   255,   255,
+     257,   258,   123,     4,     6,   190,   255,    79,   123,    72,
+     123,    84,    28,    58,   193,   255,   188,   189,   204,   255,
+       0,    63,   142,    47,    81,   190,    29,   139,   186,    30,
+      63,   143,     3,   255,   127,   179,    72,   179,   255,   255,
      255,   255,   255,     5,     7,    21,    22,    23,    35,    36,
-      43,    44,    51,    52,    54,    59,    64,    67,    81,    82,
-      89,    92,   107,   117,   120,   123,   124,   133,   139,   144,
+      42,    43,    51,    52,    54,    59,    65,    68,    82,    83,
+      91,    94,   109,   119,   122,   125,   126,   135,   141,   144,
      158,   194,   195,   196,   198,   230,   231,   232,   233,   234,
-     235,   236,   237,   244,   248,   251,   255,   115,   146,    33,
-     144,   190,    83,   186,   193,   104,   192,    31,    60,     5,
-     118,   119,   137,   180,     5,   180,    95,   144,   135,   224,
-     225,   132,   144,   192,     7,     7,   134,   230,   240,   241,
-     144,    82,   144,     5,   144,   144,    82,   190,   230,     5,
-      71,   197,   146,    21,    22,    33,   252,   255,    23,    24,
-     147,   253,    98,    22,   233,    27,   144,   183,   184,   255,
-     189,   144,   198,   254,   255,   179,   255,   191,     7,    46,
-      47,    46,    47,   144,   180,   255,   156,   157,   255,    10,
-      63,   144,   226,   227,   228,   229,   230,   248,   144,   247,
-     254,   226,   134,   238,   239,    61,   241,   242,     7,    53,
-      76,    90,    91,   113,   138,   245,   245,   230,     7,   145,
+     235,   236,   237,   244,   248,   251,   255,   117,   146,    33,
+     144,   190,    84,   186,   193,   106,   192,    31,    60,     5,
+     120,   121,   139,   180,     5,   180,    97,   144,   137,   224,
+     225,   134,   144,   192,     7,     7,   136,   230,   240,   241,
+     144,    83,   144,     5,   144,   144,    83,   190,   230,     5,
+      72,   197,   146,    21,    22,    33,   252,   255,    23,    24,
+     147,   253,   100,    22,   233,    27,   144,   183,   184,   255,
+     189,   144,   198,   254,   255,   179,   255,   191,     7,    45,
+      46,    45,    46,   144,   180,   255,   156,   157,   255,    10,
+      64,   144,   226,   227,   228,   229,   230,   248,   144,   247,
+     254,   226,   136,   238,   239,    61,   241,   242,     7,    53,
+      77,    92,    93,   115,   140,   245,   245,   230,     7,   145,
      145,   144,   198,   201,   202,   205,   234,   255,   224,   196,
      255,   231,   232,   144,   255,   255,    23,    58,   145,   230,
-     243,   146,   224,    11,   145,   146,   180,   192,   156,    45,
-      70,   103,   129,   162,   255,   255,   169,   170,   171,   172,
-     173,   174,   255,   144,   165,   145,   146,    82,   158,   229,
+     243,   146,   224,    11,   145,   146,   180,   192,   156,    44,
+      71,   105,   131,   162,   255,   255,   169,   170,   171,   172,
+     173,   174,   255,   144,   165,   145,   146,    83,   158,   229,
      198,   226,   230,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    77,   250,    20,   244,   246,
-     146,   145,   122,   230,   239,   242,   230,    62,   145,    71,
-      71,   145,   201,    33,   203,   204,    72,    79,    87,   109,
-     200,   146,   203,    39,   127,   199,    73,   206,    99,   213,
-     214,   145,   243,   145,   146,   184,   230,   255,   144,    85,
-      85,   144,   145,   146,     5,     7,    28,    65,    94,    95,
-     126,   144,   255,   256,   248,   249,   255,   131,   162,   163,
-     164,   156,    10,    45,    55,    92,   103,   108,   129,   159,
-     160,   161,   145,   227,   228,    17,    18,    19,    77,   230,
-     144,   198,   230,    10,    92,   145,   146,   144,   132,   230,
-     122,    62,   230,     7,   145,   204,    97,    97,    97,    84,
-     201,     7,     7,   203,    42,    75,   207,    42,   145,    96,
+      15,    16,    17,    18,    19,    78,   250,    20,   244,   246,
+     146,   145,   124,   230,   239,   242,   230,    62,   145,    72,
+      72,   145,   201,    33,   203,   204,    73,    80,    88,   111,
+     200,   146,   203,    39,   129,   199,    74,   206,   101,   213,
+     214,   145,   243,   145,   146,   184,   230,   255,   144,    86,
+      86,   144,   145,   146,     5,     7,    28,    66,    96,    97,
+     128,   144,   255,   256,   248,   249,   255,   133,   162,   163,
+     164,   156,    10,    44,    55,    94,   105,   110,   131,   159,
+     160,   161,   145,   227,   228,    17,    18,    19,    78,   230,
+     144,   198,   230,    10,    94,   145,   146,   144,   134,   230,
+     124,    62,   230,     7,   145,   204,    99,    99,    99,    85,
+     201,     7,     7,   203,    41,    76,   207,    41,   145,    98,
      215,   145,   230,   226,   144,   144,   254,   170,   254,   145,
-     146,    37,    40,    41,   116,   175,   146,   137,   166,    92,
-     144,   244,    85,   255,   159,   230,   144,   198,     9,   243,
-      92,   244,   246,   144,   230,   145,    69,   145,   202,   101,
-     101,   243,   226,    96,   208,   243,    42,   106,   112,   216,
+     146,    37,    40,    49,   118,   175,   146,   139,   166,    94,
+     144,   244,    86,   255,   159,   230,   144,   198,     9,   243,
+      94,   244,   246,   144,   230,   145,    70,   145,   202,   103,
+     103,   243,   226,    98,   208,   243,    41,   108,   113,   216,
      217,   145,   254,   254,   145,   145,   248,   144,   176,   162,
-      38,    99,   167,   226,   144,     9,   243,   230,   145,   145,
-     246,     7,    95,    42,    88,   209,   220,   221,   230,    19,
-     145,   145,   169,   144,    42,   145,   255,   230,   145,   145,
-     145,   226,   220,     7,   136,   210,   211,   212,   146,    34,
-      57,   222,     7,    50,   128,   218,   108,   145,   169,    74,
-     106,   168,   145,   255,   212,   221,    93,   223,   102,   110,
-     102,     9,   255,   145,   144,    33,    66,    86,     7,    50,
-     128,   219,   144,   254,   144,    68,   110,    68,   254,   145,
-     213,   145,   100,   145,     7
+      38,   101,   167,   226,   144,     9,   243,   230,   145,   145,
+     246,     7,    97,    41,    90,   209,   220,   221,   230,    19,
+     145,   145,   169,   144,    41,   145,   255,   230,   145,   145,
+     145,   226,   220,     7,   138,   210,   211,   212,   146,    34,
+      57,   222,     7,    50,   130,   218,   110,   145,   169,    75,
+     108,   168,   145,   255,   212,   221,    95,   223,   104,   112,
+     104,     9,   255,   145,   144,    33,    67,    87,     7,    50,
+     130,   219,   144,   254,   144,    69,   112,    69,   254,   145,
+     213,   145,   102,   145,     7
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1996,7 +2010,7 @@
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2000 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2014 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 4: /* TOKEN_NAME  */
@@ -2006,7 +2020,7 @@
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2010 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2024 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 5: /* TOKEN_STRING_SINGLE_QUOTED  */
@@ -2016,7 +2030,7 @@
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2020 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2034 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 6: /* TOKEN_STRING_DOUBLE_QUOTED  */
@@ -2026,7 +2040,7 @@
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2030 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2044 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 7: /* TOKEN_UNSIGNED_NUMVAL  */
@@ -2036,7 +2050,7 @@
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2040 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2054 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 150: /* sql_statement  */
@@ -2046,7 +2060,7 @@
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2050 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2064 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 151: /* quit_statement  */
@@ -2056,7 +2070,7 @@
     delete ((*yyvaluep).quit_statement_);
   }
 }
-#line 2060 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2074 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 152: /* alter_table_statement  */
@@ -2066,7 +2080,7 @@
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2070 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2084 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 153: /* create_table_statement  */
@@ -2076,7 +2090,7 @@
     delete ((*yyvaluep).create_table_statement_);
   }
 }
-#line 2080 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2094 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 154: /* create_index_statement  */
@@ -2086,7 +2100,7 @@
     delete ((*yyvaluep).statement_);
   }
 }
-#line 2090 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2104 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 155: /* drop_table_statement  */
@@ -2096,7 +2110,7 @@
     delete ((*yyvaluep).drop_table_statement_);
   }
 }
-#line 2100 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2114 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 156: /* column_def  */
@@ -2106,7 +2120,7 @@
     delete ((*yyvaluep).attribute_definition_);
   }
 }
-#line 2110 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2124 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 157: /* column_def_commalist  */
@@ -2116,7 +2130,7 @@
     delete ((*yyvaluep).attribute_definition_list_);
   }
 }
-#line 2120 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2134 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 158: /* data_type  */
@@ -2126,7 +2140,7 @@
     delete ((*yyvaluep).data_type_);
   }
 }
-#line 2130 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2144 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 159: /* column_constraint_def  */
@@ -2136,7 +2150,7 @@
     delete ((*yyvaluep).column_constraint_);
   }
 }
-#line 2140 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2154 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 160: /* column_constraint_def_list  */
@@ -2146,7 +2160,7 @@
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2150 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2164 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 161: /* opt_column_constraint_def_list  */
@@ -2156,7 +2170,7 @@
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2160 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2174 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 165: /* opt_column_list  */
@@ -2166,7 +2180,7 @@
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2170 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2184 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 166: /* opt_block_properties  */
@@ -2176,7 +2190,7 @@
     delete ((*yyvaluep).block_properties_);
   }
 }
-#line 2180 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2194 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 167: /* opt_partition_clause  */
@@ -2186,7 +2200,7 @@
     delete ((*yyvaluep).partition_clause_);
   }
 }
-#line 2190 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2204 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 168: /* partition_type  */
@@ -2196,7 +2210,7 @@
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2200 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2214 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 169: /* key_value_list  */
@@ -2206,7 +2220,7 @@
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2210 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2224 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 170: /* key_value  */
@@ -2216,7 +2230,7 @@
     delete ((*yyvaluep).key_value_);
   }
 }
-#line 2220 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2234 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 171: /* key_string_value  */
@@ -2226,7 +2240,7 @@
     delete ((*yyvaluep).key_string_value_);
   }
 }
-#line 2230 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2244 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 172: /* key_string_list  */
@@ -2236,7 +2250,7 @@
     delete ((*yyvaluep).key_string_list_);
   }
 }
-#line 2240 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2254 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 173: /* key_integer_value  */
@@ -2246,7 +2260,7 @@
     delete ((*yyvaluep).key_integer_value_);
   }
 }
-#line 2250 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2264 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 174: /* key_bool_value  */
@@ -2256,7 +2270,7 @@
     delete ((*yyvaluep).key_bool_value_);
   }
 }
-#line 2260 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2274 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 175: /* index_type  */
@@ -2266,7 +2280,7 @@
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2270 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2284 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 176: /* opt_index_properties  */
@@ -2276,7 +2290,7 @@
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2280 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2294 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 177: /* insert_statement  */
@@ -2286,7 +2300,7 @@
     delete ((*yyvaluep).insert_statement_);
   }
 }
-#line 2290 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2304 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 178: /* copy_statement  */
@@ -2296,7 +2310,7 @@
     delete ((*yyvaluep).copy_statement_);
   }
 }
-#line 2300 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2314 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 179: /* copy_to_target  */
@@ -2306,7 +2320,7 @@
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2310 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2324 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 180: /* opt_copy_params  */
@@ -2316,7 +2330,7 @@
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2320 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2334 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 181: /* update_statement  */
@@ -2326,7 +2340,7 @@
     delete ((*yyvaluep).update_statement_);
   }
 }
-#line 2330 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2344 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 182: /* delete_statement  */
@@ -2336,7 +2350,7 @@
     delete ((*yyvaluep).delete_statement_);
   }
 }
-#line 2340 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2354 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 183: /* assignment_list  */
@@ -2346,7 +2360,7 @@
     delete ((*yyvaluep).assignment_list_);
   }
 }
-#line 2350 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2364 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 184: /* assignment_item  */
@@ -2356,7 +2370,7 @@
     delete ((*yyvaluep).assignment_);
   }
 }
-#line 2360 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2374 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 185: /* set_operation_statement  */
@@ -2366,7 +2380,7 @@
     delete ((*yyvaluep).set_operation_statement_);
   }
 }
-#line 2370 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2384 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 186: /* opt_priority_clause  */
@@ -2376,7 +2390,7 @@
     delete ((*yyvaluep).opt_priority_clause_);
   }
 }
-#line 2380 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2394 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 187: /* with_clause  */
@@ -2386,7 +2400,7 @@
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2390 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2404 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 188: /* with_list  */
@@ -2396,7 +2410,7 @@
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2400 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2414 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 189: /* with_list_element  */
@@ -2406,7 +2420,7 @@
     delete ((*yyvaluep).with_list_element_);
   }
 }
-#line 2410 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2424 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 190: /* set_operation_union  */
@@ -2416,7 +2430,7 @@
     delete ((*yyvaluep).set_operation_);
   }
 }
-#line 2420 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2434 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 191: /* set_operation_intersect  */
@@ -2426,7 +2440,7 @@
     delete ((*yyvaluep).set_operation_);
   }
 }
-#line 2430 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2444 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 192: /* select_query  */
@@ -2436,13 +2450,13 @@
     delete ((*yyvaluep).select_query_);
   }
 }
-#line 2440 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2454 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 193: /* opt_all_distinct  */
 #line 629 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2446 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2460 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 194: /* selection  */
@@ -2452,7 +2466,7 @@
     delete ((*yyvaluep).selection_);
   }
 }
-#line 2456 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2470 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 195: /* selection_item_commalist  */
@@ -2462,7 +2476,7 @@
     delete ((*yyvaluep).selection_list_);
   }
 }
-#line 2466 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2480 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 196: /* selection_item  */
@@ -2472,7 +2486,7 @@
     delete ((*yyvaluep).selection_item_);
   }
 }
-#line 2476 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2490 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 197: /* from_clause  */
@@ -2482,7 +2496,7 @@
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2486 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2500 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 198: /* subquery_expression  */
@@ -2492,7 +2506,7 @@
     delete ((*yyvaluep).subquery_expression_);
   }
 }
-#line 2496 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2510 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 199: /* opt_sample_clause  */
@@ -2502,13 +2516,13 @@
     delete ((*yyvaluep).opt_sample_clause_);
   }
 }
-#line 2506 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2520 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 200: /* join_type  */
 #line 633 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2512 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2526 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 201: /* joined_table_reference  */
@@ -2518,7 +2532,7 @@
     delete ((*yyvaluep).table_reference_);
   }
 }
-#line 2522 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2536 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 202: /* table_reference  */
@@ -2528,7 +2542,7 @@
     delete ((*yyvaluep).table_reference_);
   }
 }
-#line 2532 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2546 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 203: /* table_reference_signature  */
@@ -2538,7 +2552,7 @@
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2542 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2556 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 204: /* table_reference_signature_primary  */
@@ -2548,7 +2562,7 @@
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2552 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2566 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 205: /* joined_table_reference_commalist  */
@@ -2558,7 +2572,7 @@
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2562 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2576 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 206: /* opt_group_by_clause  */
@@ -2568,7 +2582,7 @@
     delete ((*yyvaluep).opt_group_by_clause_);
   }
 }
-#line 2572 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2586 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 207: /* opt_having_clause  */
@@ -2578,7 +2592,7 @@
     delete ((*yyvaluep).opt_having_clause_);
   }
 }
-#line 2582 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2596 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 208: /* opt_order_by_clause  */
@@ -2588,7 +2602,7 @@
     delete ((*yyvaluep).opt_order_by_clause_);
   }
 }
-#line 2592 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2606 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 209: /* opt_limit_clause  */
@@ -2598,7 +2612,7 @@
     delete ((*yyvaluep).opt_limit_clause_);
   }
 }
-#line 2602 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2616 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 210: /* opt_window_clause  */
@@ -2608,7 +2622,7 @@
     delete ((*yyvaluep).opt_window_clause_);
   }
 }
-#line 2612 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2626 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 211: /* window_declaration_list  */
@@ -2618,7 +2632,7 @@
     delete ((*yyvaluep).opt_window_clause_);
   }
 }
-#line 2622 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2636 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 212: /* window_declaration  */
@@ -2628,7 +2642,7 @@
     delete ((*yyvaluep).window_definition_);
   }
 }
-#line 2632 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2646 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 213: /* window_definition  */
@@ -2638,7 +2652,7 @@
     delete ((*yyvaluep).window_definition_);
   }
 }
-#line 2642 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2656 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 214: /* opt_window_partition  */
@@ -2648,7 +2662,7 @@
     delete ((*yyvaluep).window_partition_by_list_);
   }
 }
-#line 2652 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2666 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 215: /* opt_window_order  */
@@ -2658,7 +2672,7 @@
     delete ((*yyvaluep).window_order_by_list_);
   }
 }
-#line 2662 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2676 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 216: /* opt_window_frame  */
@@ -2668,13 +2682,13 @@
     delete ((*yyvaluep).window_frame_info_);
   }
 }
-#line 2672 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2686 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 217: /* frame_mode  */
 #line 629 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 2678 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2692 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 218: /* frame_preceding  */
@@ -2684,7 +2698,7 @@
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2688 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2702 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 219: /* frame_following  */
@@ -2694,7 +2708,7 @@
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 2698 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2712 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 220: /* order_commalist  */
@@ -2704,7 +2718,7 @@
     delete ((*yyvaluep).order_commalist_);
   }
 }
-#line 2708 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2722 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 221: /* order_item  */
@@ -2714,7 +2728,7 @@
     delete ((*yyvaluep).order_item_);
   }
 }
-#line 2718 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2732 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 222: /* opt_order_direction  */
@@ -2724,7 +2738,7 @@
     delete ((*yyvaluep).order_direction_);
   }
 }
-#line 2728 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2742 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 223: /* opt_nulls_first  */
@@ -2734,7 +2748,7 @@
     delete ((*yyvaluep).order_direction_);
   }
 }
-#line 2738 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2752 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 224: /* opt_where_clause  */
@@ -2744,7 +2758,7 @@
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2748 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2762 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 225: /* where_clause  */
@@ -2754,7 +2768,7 @@
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2758 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2772 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 226: /* or_expression  */
@@ -2764,7 +2778,7 @@
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2768 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2782 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 227: /* and_expression  */
@@ -2774,7 +2788,7 @@
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2778 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2792 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 228: /* not_expression  */
@@ -2784,7 +2798,7 @@
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2788 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2802 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 229: /* predicate_expression_base  */
@@ -2794,7 +2808,7 @@
     delete ((*yyvaluep).predicate_);
   }
 }
-#line 2798 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2812 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 230: /* add_expression  */
@@ -2804,7 +2818,7 @@
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2808 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2822 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 231: /* multiply_expression  */
@@ -2814,7 +2828,7 @@
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2818 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2832 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 232: /* unary_expression  */
@@ -2824,7 +2838,7 @@
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2828 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2842 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 233: /* expression_base  */
@@ -2834,7 +2848,7 @@
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2838 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2852 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 234: /* function_call  */
@@ -2844,7 +2858,7 @@
     delete ((*yyvaluep).function_call_);
   }
 }
-#line 2848 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2862 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 235: /* extract_function  */
@@ -2854,7 +2868,7 @@
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2858 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2872 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 236: /* substr_function  */
@@ -2864,7 +2878,7 @@
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2868 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2882 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 237: /* case_expression  */
@@ -2874,7 +2888,7 @@
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2878 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2892 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 238: /* simple_when_clause_list  */
@@ -2884,7 +2898,7 @@
     delete ((*yyvaluep).simple_when_clause_list_);
   }
 }
-#line 2888 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2902 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 239: /* simple_when_clause  */
@@ -2894,7 +2908,7 @@
     delete ((*yyvaluep).simple_when_clause_);
   }
 }
-#line 2898 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2912 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 240: /* searched_when_clause_list  */
@@ -2904,7 +2918,7 @@
     delete ((*yyvaluep).searched_when_clause_list_);
   }
 }
-#line 2908 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2922 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 241: /* searched_when_clause  */
@@ -2914,7 +2928,7 @@
     delete ((*yyvaluep).searched_when_clause_);
   }
 }
-#line 2918 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2932 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 242: /* opt_else_clause  */
@@ -2924,7 +2938,7 @@
     delete ((*yyvaluep).expression_);
   }
 }
-#line 2928 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2942 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 243: /* expression_list  */
@@ -2934,7 +2948,7 @@
     delete ((*yyvaluep).expression_list_);
   }
 }
-#line 2938 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2952 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 244: /* literal_value  */
@@ -2944,7 +2958,7 @@
     delete ((*yyvaluep).literal_value_);
   }
 }
-#line 2948 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2962 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 245: /* datetime_unit  */
@@ -2954,7 +2968,7 @@
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2958 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2972 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 246: /* literal_value_commalist  */
@@ -2964,7 +2978,7 @@
     delete ((*yyvaluep).literal_value_list_);
   }
 }
-#line 2968 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2982 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 247: /* literal_value_commalist_multiple  */
@@ -2974,7 +2988,7 @@
     delete ((*yyvaluep).literal_value_list_multiple_);
   }
 }
-#line 2978 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2992 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 248: /* attribute_ref  */
@@ -2984,7 +2998,7 @@
     delete ((*yyvaluep).attribute_);
   }
 }
-#line 2988 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3002 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 249: /* attribute_ref_list  */
@@ -2994,31 +3008,31 @@
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2998 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3012 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 250: /* comparison_operation  */
 #line 630 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 3004 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3018 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 251: /* unary_operation  */
 #line 631 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 3010 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3024 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 252: /* add_operation  */
 #line 632 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 3016 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3030 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 253: /* multiply_operation  */
 #line 632 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 3022 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3036 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 254: /* name_commalist  */
@@ -3028,7 +3042,7 @@
     delete ((*yyvaluep).string_list_);
   }
 }
-#line 3032 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3046 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 255: /* any_name  */
@@ -3038,13 +3052,13 @@
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 3042 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3056 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 256: /* boolean_value  */
 #line 629 "../SqlParser.ypp" /* yacc.c:1257  */
       { }
-#line 3048 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3062 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 257: /* command  */
@@ -3054,7 +3068,7 @@
     delete ((*yyvaluep).command_);
   }
 }
-#line 3058 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3072 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 258: /* command_argument_list  */
@@ -3064,7 +3078,7 @@
     delete ((*yyvaluep).command_argument_list_);
   }
 }
-#line 3068 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 3082 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
 
@@ -3361,7 +3375,7 @@
     *parsedStatement = (yyvsp[-1].statement_);
     YYACCEPT;
   }
-#line 3365 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3379 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 3:
@@ -3370,7 +3384,7 @@
     *parsedStatement = (yyvsp[-1].statement_);
     YYACCEPT;
   }
-#line 3374 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3388 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 4:
@@ -3379,7 +3393,7 @@
     *parsedStatement = (yyvsp[-1].command_);
     YYACCEPT;
   }
-#line 3383 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3397 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 5:
@@ -3388,7 +3402,7 @@
     *parsedStatement = (yyvsp[-1].command_);
     YYACCEPT;
   }
-#line 3392 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3406 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 6:
@@ -3396,7 +3410,7 @@
     {
     YYABORT;
   }
-#line 3400 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3414 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 7:
@@ -3405,7 +3419,7 @@
     // Regular yyparse() return codes are non-negative, so use a negative one here.
     return -1;
   }
-#line 3409 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3423 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 8:
@@ -3413,7 +3427,7 @@
     {
     (yyval.statement_) = (yyvsp[0].statement_);
   }
-#line 3417 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3431 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 9:
@@ -3421,7 +3435,7 @@
     {
     (yyval.statement_) = (yyvsp[0].copy_statement_);
   }
-#line 3425 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3439 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 10:
@@ -3429,7 +3443,7 @@
     {
     (yyval.statement_) = (yyvsp[0].create_table_statement_);
   }
-#line 3433 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3447 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 11:
@@ -3437,7 +3451,7 @@
     {
     (yyval.statement_) = (yyvsp[0].statement_);
   }
-#line 3441 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3455 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 12:
@@ -3445,7 +3459,7 @@
     {
     (yyval.statement_) = (yyvsp[0].delete_statement_);
   }
-#line 3449 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3463 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 13:
@@ -3453,7 +3467,7 @@
     {
     (yyval.statement_) = (yyvsp[0].drop_table_statement_);
   }
-#line 3457 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3471 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 14:
@@ -3461,7 +3475,7 @@
     {
     (yyval.statement_) = (yyvsp[0].insert_statement_);
   }
-#line 3465 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3479 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 15:
@@ -3469,7 +3483,7 @@
     {
     (yyval.statement_) = (yyvsp[0].quit_statement_);
   }
-#line 3473 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3487 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 16:
@@ -3477,7 +3491,7 @@
     {
     (yyval.statement_) = (yyvsp[0].set_operation_statement_);
   }
-#line 3481 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3495 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 17:
@@ -3485,7 +3499,7 @@
     {
     (yyval.statement_) = (yyvsp[0].update_statement_);
   }
-#line 3489 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3503 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 18:
@@ -3493,7 +3507,7 @@
     {
     (yyval.quit_statement_) = new quickstep::ParseStatementQuit((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 3497 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3511 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 19:
@@ -3505,7 +3519,7 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3509 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3523 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 20:
@@ -3516,7 +3530,7 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3520 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3534 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 21:
@@ -3528,7 +3542,7 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3532 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3546 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 22:
@@ -3540,7 +3554,7 @@
     NotSupported(&(yylsp[-5]), yyscanner, "ALTER statements");
     YYERROR;
   }
-#line 3544 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3558 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 23:
@@ -3548,7 +3562,7 @@
     {
     (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 3552 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3566 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 24:
@@ -3560,7 +3574,7 @@
       (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 3564 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3578 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 25:
@@ -3568,7 +3582,7 @@
     {
     (yyval.drop_table_statement_) = new quickstep::ParseStatementDropTable((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].string_value_));
   }
-#line 3572 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3586 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 26:
@@ -3576,7 +3590,7 @@
     {
     (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 3580 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3594 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 27:
@@ -3585,7 +3599,7 @@
     (yyval.attribute_definition_list_) = new quickstep::PtrList<quickstep::ParseAttributeDefinition>();
     (yyval.attribute_definition_list_)->push_back((yyvsp[0].attribute_definition_));
   }
-#line 3589 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3603 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 28:
@@ -3594,7 +3608,7 @@
     (yyval.attribute_definition_list_) = (yyvsp[-2].attribute_definition_list_);
     (yyval.attribute_definition_list_)->push_back((yyvsp[0].attribute_definition_));
   }
-#line 3598 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3612 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 29:
@@ -3604,7 +3618,7 @@
     NotSupported(&(yylsp[0]), yyscanner, "BIT data type");
     YYERROR;
   }
-#line 3608 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3622 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 30:
@@ -3612,7 +3626,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDate));
   }
-#line 3616 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3630 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 31:
@@ -3620,7 +3634,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetime));
   }
-#line 3624 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3638 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 32:
@@ -3630,7 +3644,7 @@
     NotSupported(&(yylsp[0]), yyscanner, "TIME data type");
     YYERROR;
   }
-#line 3634 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3648 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 33:
@@ -3638,7 +3652,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetime));
   }
-#line 3642 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3656 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 34:
@@ -3646,7 +3660,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
-#line 3650 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3664 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 35:
@@ -3654,7 +3668,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
-#line 3658 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3672 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 36:
@@ -3662,7 +3676,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDouble));
   }
-#line 3666 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3680 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 37:
@@ -3670,7 +3684,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kFloat));
   }
-#line 3674 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3688 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 38:
@@ -3678,7 +3692,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
   }
-#line 3682 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3696 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 39:
@@ -3686,7 +3700,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kInt));
   }
-#line 3690 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3704 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 40:
@@ -3694,7 +3708,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
   }
-#line 3698 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3712 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 41:
@@ -3702,7 +3716,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kLong));
   }
-#line 3706 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3720 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 42:
@@ -3719,7 +3733,7 @@
         "or YEARMONTH INTERVAL");
     YYERROR;
   }
-#line 3723 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3737 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 43:
@@ -3727,7 +3741,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kDatetimeInterval));
   }
-#line 3731 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3745 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 44:
@@ -3735,7 +3749,7 @@
     {
     (yyval.data_type_) = new quickstep::ParseDataType(quickstep::TypeFactory::GetType(quickstep::kYearMonthInterval));
   }
-#line 3739 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3753 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 45:
@@ -3758,7 +3772,7 @@
       }
     }
   }
-#line 3762 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3776 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 46:
@@ -3781,7 +3795,7 @@
       }
     }
   }
-#line 3785 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3799 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 47:
@@ -3789,7 +3803,7 @@
     {
     (yyval.column_constraint_) = new quickstep::ParseColumnConstraintNull((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 3793 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3807 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 48:
@@ -3797,7 +3811,7 @@
     {
     (yyval.column_constraint_) = new quickstep::ParseColumnConstraintNotNull((yylsp[-1]).first_line, (yylsp[-1]).first_column);
   }
-#line 3801 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3815 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 49:
@@ -3807,7 +3821,7 @@
     NotSupported(&(yylsp[0]), yyscanner, "Column Constraints (UNIQUE)");
     YYERROR;
   }
-#line 3811 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3825 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 50:
@@ -3817,7 +3831,7 @@
     NotSupported(&(yylsp[-1]), yyscanner, "Column Constraints (PRIMARY KEY)");
     YYERROR;
   }
-#line 3821 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3835 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 51:
@@ -3828,7 +3842,7 @@
     NotSupported(&(yylsp[-1]), yyscanner, "Column Constraints (DEFAULT)");
     YYERROR;
   }
-#line 3832 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3846 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 52:
@@ -3839,7 +3853,7 @@
     NotSupported(&(yylsp[-3]), yyscanner, "Column Constraints (CHECK)");
     YYERROR;
   }
-#line 3843 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3857 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 53:
@@ -3851,7 +3865,7 @@
     NotSupported(&(yylsp[-4]), yyscanner, "Foreign Keys");
     YYERROR;
   }
-#line 3855 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3869 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 54:
@@ -3860,7 +3874,7 @@
     (yyval.column_constraint_list_) = (yyvsp[-1].column_constraint_list_);
     (yyval.column_constraint_list_)->push_back((yyvsp[0].column_constraint_));
   }
-#line 3864 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3878 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 55:
@@ -3869,7 +3883,7 @@
     (yyval.column_constraint_list_) = new quickstep::PtrList<quickstep::ParseColumnConstraint>();
     (yyval.column_constraint_list_)->push_back((yyvsp[0].column_constraint_));
   }
-#line 3873 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3887 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 56:
@@ -3877,7 +3891,7 @@
     {
     (yyval.column_constraint_list_) = nullptr;
   }
-#line 3881 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3895 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 57:
@@ -3885,7 +3899,7 @@
     {
     (yyval.column_constraint_list_) = (yyvsp[0].column_constraint_list_);
   }
-#line 3889 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3903 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 58:
@@ -3895,7 +3909,7 @@
     NotSupported(&(yylsp[-3]), yyscanner, "Table Constraints (UNIQUE)");
     YYERROR;
   }
-#line 3899 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3913 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 59:
@@ -3905,7 +3919,7 @@
     NotSupported(&(yylsp[-4]), yyscanner, "Table Constraints (PRIMARY KEY)");
     YYERROR;
   }
-#line 3909 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3923 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 60:
@@ -3917,7 +3931,7 @@
     NotSupported(&(yylsp[-9]), yyscanner, "Table Constraints (FOREIGN KEY)");
     YYERROR;
   }
-#line 3921 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3935 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 61:
@@ -3927,7 +3941,7 @@
     NotSupported(&(yylsp[-3]), yyscanner, "Table Constraints (CHECK)");
     YYERROR;
   }
-#line 3931 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3945 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 62:
@@ -3936,7 +3950,7 @@
     NotSupported(&(yylsp[-2]), yyscanner, "Table Constraints");
     YYERROR;
   }
-#line 3940 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3954 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 63:
@@ -3945,7 +3959,7 @@
     NotSupported(&(yylsp[0]), yyscanner, "Table Constraints");
     YYERROR;
   }
-#line 3949 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3963 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 64:
@@ -3953,7 +3967,7 @@
     {
     /* $$ = nullptr; */
   }
-#line 3957 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3971 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 65:
@@ -3961,7 +3975,7 @@
     {
     /* $$ = $1; */
   }
-#line 3965 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3979 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 66:
@@ -3969,7 +3983,7 @@
     {
     (yyval.attribute_list_) = nullptr;
   }
-#line 3973 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3987 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 67:
@@ -3977,7 +3991,7 @@
     {
     (yyval.attribute_list_) = (yyvsp[-1].attribute_list_);
   }
-#line 3981 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 3995 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 68:
@@ -3985,7 +3999,7 @@
     {
     (yyval.block_properties_) = nullptr;
   }
-#line 3989 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4003 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 69:
@@ -3993,7 +4007,7 @@
     {
     (yyval.block_properties_) = new quickstep::ParseBlockProperties((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-1].key_value_list_));
   }
-#line 3997 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4011 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 70:
@@ -4001,7 +4015,7 @@
     {
     (yyval.partition_clause_) = nullptr;
   }
-#line 4005 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4019 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 71:
@@ -4023,7 +4037,7 @@
       }
     }
   }
-#line 4027 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4041 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 72:
@@ -4031,7 +4045,7 @@
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::kHashPartitionType);
   }
-#line 4035 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4049 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 73:
@@ -4039,7 +4053,7 @@
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, quickstep::kRangePartitionType);
   }
-#line 4043 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4057 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 74:
@@ -4048,7 +4062,7 @@
     (yyval.key_value_list_) = new quickstep::PtrList<quickstep::ParseKeyValue>();
     (yyval.key_value_list_)->push_back((yyvsp[0].key_value_));
   }
-#line 4052 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4066 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 75:
@@ -4057,7 +4071,7 @@
     (yyval.key_value_list_) = (yyvsp[-2].key_value_list_);
     (yyval.key_value_list_)->push_back((yyvsp[0].key_value_));
   }
-#line 4061 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4075 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 76:
@@ -4065,7 +4079,7 @@
     {
     (yyval.key_value_) = (yyvsp[0].key_string_value_);
   }
-#line 4069 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4083 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 77:
@@ -4073,7 +4087,7 @@
     {
     (yyval.key_value_) = (yyvsp[0].key_string_list_);
   }
-#line 4077 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4091 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 78:
@@ -4081,7 +4095,7 @@
     {
     (yyval.key_value_) = (yyvsp[0].key_integer_value_);
   }
-#line 4085 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4099 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 79:
@@ -4089,7 +4103,7 @@
     {
     (yyval.key_value_) = (yyvsp[0].key_bool_value_);
   }
-#line 4093 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4107 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 80:
@@ -4097,7 +4111,7 @@
     {
     (yyval.key_string_value_) = new quickstep::ParseKeyStringValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].string_value_));
   }
-#line 4101 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4115 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 81:
@@ -4105,7 +4119,7 @@
     {
     (yyval.key_string_value_) = new quickstep::ParseKeyStringValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].string_value_));
   }
-#line 4109 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4123 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 82:
@@ -4115,7 +4129,7 @@
     (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 4119 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4133 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 83:
@@ -4123,7 +4137,7 @@
     {
     (yyval.key_string_list_) = new quickstep::ParseKeyStringList((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].string_list_));
   }
-#line 4127 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4141 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 84:
@@ -4137,7 +4151,7 @@
     }
     (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 4141 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4155 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 85:
@@ -4145,7 +4159,7 @@
     {
     (yyval.key_bool_value_) = new quickstep::ParseKeyBoolValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].boolean_value_));
   }
-#line 4149 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4163 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 86:
@@ -4155,7 +4169,7 @@
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kBitWeavingV));
   }
-#line 4159 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4173 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 87:
@@ -4164,7 +4178,7 @@
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kBloomFilter));
   }
-#line 4168 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4182 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 88:
@@ -4173,7 +4187,7 @@
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kCSBTree));
   }
-#line 4177 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4191 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 89:
@@ -4182,7 +4196,7 @@
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column,
            std::to_string(quickstep::IndexSubBlockType::kSMA));
   }
-#line 4186 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4200 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 90:
@@ -4190,7 +4204,7 @@
     {
     (yyval.key_value_list_) = nullptr;
   }
-#line 4194 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4208 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 91:
@@ -4198,7 +4212,7 @@
     {
     (yyval.key_value_list_) = (yyvsp[-1].key_value_list_);
   }
-#line 4202 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4216 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 92:
@@ -4211,7 +4225,7 @@
     NotSupported(&(yylsp[-6]), yyscanner, "list of column names in INSERT statement");
     YYERROR;
   }
-#line 4215 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4229 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 93:
@@ -4219,7 +4233,7 @@
     {
     (yyval.insert_statement_) = new quickstep::ParseStatementInsertTuple((yylsp[-4]).first_line, (yylsp[-4]).first_column, (yyvsp[-2].string_value_), (yyvsp[0].literal_value_list_multiple_));
   }
-#line 4223 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4237 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 94:
@@ -4227,7 +4241,7 @@
     {
     (yyval.insert_statement_) = new quickstep::ParseStatementInsertSelection((yylsp[-3]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].select_query_), nullptr);
   }
-#line 4231 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4245 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 95:
@@ -4235,7 +4249,7 @@
     {
     (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 4239 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4253 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 96:
@@ -4245,7 +4259,7 @@
                                            quickstep::ParseStatementCopy::kFrom,
                                            (yyvsp[-3].string_value_), (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4249 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4263 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 97:
@@ -4255,7 +4269,7 @@
                                            quickstep::ParseStatementCopy::kTo,
                                            (yyvsp[-2].string_value_), (yyvsp[-1].string_value_), (yyvsp[0].key_value_list_));
   }
-#line 4259 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4273 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 98:
@@ -4264,7 +4278,7 @@
     (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 4268 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4282 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 99:
@@ -4273,7 +4287,7 @@
     (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 4277 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4291 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 100:
@@ -4282,7 +4296,7 @@
     (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 4286 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4300 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 101:
@@ -4290,7 +4304,7 @@
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, "$stdout");
   }
-#line 4294 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4308 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 102:
@@ -4298,7 +4312,7 @@
     {
     (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, "$stderr");
   }
-#line 4302 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4316 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 103:
@@ -4306,7 +4320,7 @@
     {
     (yyval.key_value_list_) = nullptr;
   }
-#line 4310 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4324 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 104:
@@ -4314,7 +4328,7 @@
     {
     (yyval.key_value_list_) = (yyvsp[-1].key_value_list_);
   }
-#line 4318 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4332 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 105:
@@ -4322,7 +4336,7 @@
     {
     (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 4326 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4340 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 106:
@@ -4330,7 +4344,7 @@
     {
     (yyval.delete_statement_) = new quickstep::ParseStatementDelete((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].predicate_));
   }
-#line 4334 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4348 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 107:
@@ -4339,7 +4353,7 @@
     (yyval.assignment_list_) = (yyvsp[-2].assignment_list_);
     (yyval.assignment_list_)->push_back((yyvsp[0].assignment_));
   }
-#line 4343 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4357 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 108:
@@ -4348,7 +4362,7 @@
     (yyval.assignment_list_) = new quickstep::PtrList<quickstep::ParseAssignment>();
     (yyval.assignment_list_)->push_back((yyvsp[0].assignment_));
   }
-#line 4352 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4366 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 109:
@@ -4356,7 +4370,7 @@
     {
     (yyval.assignment_) = new quickstep::ParseAssignment((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].string_value_), (yyvsp[0].expression_));
   }
-#line 4360 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4374 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 110:
@@ -4364,7 +4378,7 @@
     {
     (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 4368 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4382 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 111:
@@ -4372,7 +4386,7 @@
     {
     (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 4376 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4390 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 112:
@@ -4380,7 +4394,7 @@
     {
     (yyval.opt_priority_clause_) = nullptr;
   }
-#line 4384 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4398 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 113:
@@ -4402,7 +4416,7 @@
       }
     }
   }
-#line 4406 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4420 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 114:
@@ -4410,7 +4424,7 @@
     {
     (yyval.with_list_) = (yyvsp[0].with_list_);
   }
-#line 4414 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4428 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 115:
@@ -4419,7 +4433,7 @@
     (yyval.with_list_) = new quickstep::PtrVector<quickstep::ParseSubqueryTableReference>();
     (yyval.with_list_)->push_back((yyvsp[0].with_list_element_));
   }
-#line 4423 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4437 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 116:
@@ -4428,7 +4442,7 @@
     (yyval.with_list_) = (yyvsp[-2].with_list_);
     (yyval.with_list_)->push_back((yyvsp[0].with_list_element_));
   }
-#line 4432 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4446 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 117:
@@ -4437,7 +4451,7 @@
     (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 4441 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4455 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 118:
@@ -4451,7 +4465,7 @@
     (yyval.set_operation_)->addOperand((yyvsp[-3].set_operation_));
     (yyval.set_operation_)->addOperand((yyvsp[0].set_operation_));
   }
-#line 4455 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4469 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 119:
@@ -4459,7 +4473,7 @@
     {
     (yyval.set_operation_) = (yyvsp[0].set_operation_);
   }
-#line 4463 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4477 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 120:
@@ -4472,7 +4486,7 @@
     (yyval.set_operation_)->addOperand((yyvsp[-2].set_operation_));
     (yyval.set_operation_)->addOperand(op);
   }
-#line 4476 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4490 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 121:
@@ -4481,7 +4495,7 @@
     (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 4485 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4499 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 122:
@@ -4489,7 +4503,7 @@
     {
     (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 4493 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4507 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 123:
@@ -4497,7 +4511,7 @@
     {
     (yyval.boolean_value_) = true;  // Distinct
   }
-#line 4501 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4515 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 124:
@@ -4505,7 +4519,7 @@
     {
     (yyval.boolean_value_) = false;  // All
   }
-#line 4509 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4523 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 125:
@@ -4513,7 +4527,7 @@
     {
     (yyval.boolean_value_) = true;  // Distinct
   }
-#line 4517 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4531 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 126:
@@ -4521,7 +4535,7 @@
     {
     (yyval.selection_) = new quickstep::ParseSelectionStar((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 4525 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4539 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 127:
@@ -4529,7 +4543,7 @@
     {
     (yyval.selection_) = (yyvsp[0].selection_list_);
   }
-#line 4533 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4547 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 128:
@@ -4538,7 +4552,7 @@
     (yyval.selection_list_) = new quickstep::ParseSelectionList((yylsp[0]).first_line, (yylsp[0]).first_column);
     (yyval.selection_list_)->add((yyvsp[0].selection_item_));
   }
-#line 4542 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4556 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 129:
@@ -4547,7 +4561,7 @@
     (yyval.selection_list_) = (yyvsp[-2].selection_list_);
     (yyval.selection_list_)->add((yyvsp[0].selection_item_));
   }
-#line 4551 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4565 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 130:
@@ -4555,7 +4569,7 @@
     {
     (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-2].expression_), (yyvsp[0].string_value_));
   }
-#line 4559 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4573 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 131:
@@ -4563,7 +4577,7 @@
     {
     (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].expression_), (yyvsp[0].string_value_));
   }
-#line 4567 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4581 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 132:
@@ -4571,7 +4585,7 @@
     {
     (yyval.selection_item_) = new quickstep::ParseSelectionItem((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].expression_));
   }
-#line 4575 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4589 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 133:
@@ -4579,7 +4593,7 @@
     {
     (yyval.table_reference_list_) = (yyvsp[0].table_reference_list_);
   }
-#line 4583 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4597 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 134:
@@ -4587,7 +4601,7 @@
     {
     (yyval.subquery_expression_) = new quickstep::ParseSubqueryExpression((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[-1].set_operation_));
   }
-#line 4591 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4605 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 135:
@@ -4595,7 +4609,7 @@
     {
     (yyval.opt_sample_clause_) = NULL;
   }
-#line 4599 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4613 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 136:
@@ -4603,7 +4617,7 @@
     {
     (yyval.opt_sample_clause_) = new quickstep::ParseSample((yylsp[-2]).first_line, (yylsp[-2]).first_column, true, (yyvsp[-1].numeric_literal_value_));
   }
-#line 4607 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4621 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 137:
@@ -4611,7 +4625,7 @@
     {
     (yyval.opt_sample_clause_) = new quickstep::ParseSample((yylsp[-2]).first_line, (yylsp[-2]).first_column, false, (yyvsp[-1].numeric_literal_value_));
   }
-#line 4615 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4629 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 138:
@@ -4619,7 +4633,7 @@
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
   }
-#line 4623 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4637 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 139:
@@ -4627,7 +4641,7 @@
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kInnerJoin;
   }
-#line 4631 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4645 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 140:
@@ -4635,7 +4649,7 @@
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
   }
-#line 4639 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4653 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 141:
@@ -4643,7 +4657,7 @@
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kLeftOuterJoin;
   }
-#line 4647 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4661 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 142:
@@ -4651,7 +4665,7 @@
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
   }
-#line 4655 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4669 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 143:
@@ -4659,7 +4673,7 @@
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kRightOuterJoin;
   }
-#line 4663 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4677 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 144:
@@ -4667,7 +4681,7 @@
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
   }
-#line 4671 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4685 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 145:
@@ -4675,7 +4689,7 @@
     {
     (yyval.join_type_) = quickstep::ParseJoinedTableReference::JoinType::kFullOuterJoin;
   }
-#line 4679 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4693 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 146:
@@ -4683,7 +4697,7 @@
     {
     (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 4687 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4701 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 147:
@@ -4691,7 +4705,7 @@
     {
     (yyval.table_reference_) = (yyvsp[0].table_reference_);
   }
-#line 4695 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4709 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 148:
@@ -4700,7 +4714,7 @@
     (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 4704 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4718 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 149:
@@ -4709,7 +4723,7 @@
     (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 4713 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4727 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 150:
@@ -4717,7 +4731,7 @@
     {
     (yyval.table_reference_) = new quickstep::ParseSimpleTableReference((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].opt_sample_clause_));
   }
-#line 4721 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4735 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 151:
@@ -4726,7 +4740,7 @@
     (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 4730 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4744 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 152:
@@ -4734,7 +4748,7 @@
     {
     (yyval.table_reference_) = new quickstep::ParseGeneratorTableReference((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].function_call_));
   }
-#line 4738 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4752 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 153:
@@ -4742,7 +4756,7 @@
     {
     (yyval.table_reference_) = (yyvsp[-1].table_reference_);
   }
-#line 4746 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4760 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 154:
@@ -4750,7 +4764,7 @@
     {
     (yyval.table_reference_signature_) = (yyvsp[0].table_reference_signature_);
   }
-#line 4754 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4768 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 155:
@@ -4758,7 +4772,7 @@
     {
     (yyval.table_reference_signature_) = (yyvsp[0].table_reference_signature_);
   }
-#line 4762 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4776 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 156:
@@ -4766,7 +4780,7 @@
     {
     (yyval.table_reference_signature_) = new ::quickstep::ParseTableReferenceSignature((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].string_value_));
   }
-#line 4770 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4784 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 157:
@@ -4774,7 +4788,7 @@
     {
     (yyval.table_reference_signature_) = new ::quickstep::ParseTableReferenceSignature((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].string_list_));
   }
-#line 4778 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4792 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 158:
@@ -4783,7 +4797,7 @@
     (yyval.table_reference_list_) = new quickstep::PtrList<quickstep::ParseTableReference>();
     (yyval.table_reference_list_)->push_back((yyvsp[0].table_reference_));
   }
-#line 4787 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4801 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 159:
@@ -4792,7 +4806,7 @@
     (yyval.table_reference_list_) = (yyvsp[-2].table_reference_list_);
     (yyval.table_reference_list_)->push_back((yyvsp[0].table_reference_));
   }
-#line 4796 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4810 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 160:
@@ -4800,7 +4814,7 @@
     {
     (yyval.opt_group_by_clause_) = nullptr;
   }
-#line 4804 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4818 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 161:
@@ -4808,7 +4822,7 @@
     {
     (yyval.opt_group_by_clause_) = new quickstep::ParseGroupBy((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].expression_list_));
   }
-#line 4812 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4826 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 162:
@@ -4816,7 +4830,7 @@
     {
     (yyval.opt_having_clause_) = nullptr;
   }
-#line 4820 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4834 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 163:
@@ -4824,7 +4838,7 @@
     {
     (yyval.opt_having_clause_) = new quickstep::ParseHaving((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].predicate_));
   }
-#line 4828 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4842 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 164:
@@ -4832,7 +4846,7 @@
     {
     (yyval.opt_order_by_clause_) = nullptr;
   }
-#line 4836 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4850 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 165:
@@ -4840,7 +4854,7 @@
     {
     (yyval.opt_order_by_clause_) = new quickstep::ParseOrderBy((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].order_commalist_));
   }
-#line 4844 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4858 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 166:
@@ -4848,7 +4862,7 @@
     {
     (yyval.opt_limit_clause_) = nullptr;
   }
-#line 4852 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4866 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 167:
@@ -4870,7 +4884,7 @@
       }
     }
   }
-#line 4874 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4888 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 168:
@@ -4878,7 +4892,7 @@
     {
     (yyval.opt_window_clause_) = nullptr;
   }
-#line 4882 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4896 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 169:
@@ -4886,7 +4900,7 @@
     {
     (yyval.opt_window_clause_) = (yyvsp[0].opt_window_clause_);
   }
-#line 4890 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4904 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 170:
@@ -4895,7 +4909,7 @@
     (yyval.opt_window_clause_) = new quickstep::PtrList<quickstep::ParseWindow>();
     (yyval.opt_window_clause_)->push_back((yyvsp[0].window_definition_));
   }
-#line 4899 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4913 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 171:
@@ -4904,7 +4918,7 @@
     (yyval.opt_window_clause_) = (yyvsp[-1].opt_window_clause_);
     (yyval.opt_window_clause_)->push_back((yyvsp[0].window_definition_));
   }
-#line 4908 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4922 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 172:
@@ -4913,7 +4927,7 @@
     (yyval.window_definition_) = (yyvsp[-1].window_definition_);
     (yyval.window_definition_)->setName((yyvsp[-4].string_value_));
   }
-#line 4917 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4931 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 173:
@@ -4921,7 +4935,7 @@
     {
     (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 4925 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4939 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 174:
@@ -4929,7 +4943,7 @@
     {
     (yyval.window_partition_by_list_) = nullptr;
   }
-#line 4933 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4947 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 175:
@@ -4937,7 +4951,7 @@
     {
     (yyval.window_partition_by_list_) = (yyvsp[0].expression_list_);
   }
-#line 4941 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4955 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 176:
@@ -4945,7 +4959,7 @@
     {
     (yyval.window_order_by_list_) = nullptr;
   }
-#line 4949 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4963 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 177:
@@ -4953,7 +4967,7 @@
     {
     (yyval.window_order_by_list_) = (yyvsp[0].order_commalist_);
   }
-#line 4957 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4971 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 178:
@@ -4961,7 +4975,7 @@
     {
     (yyval.window_frame_info_) = nullptr;
   }
-#line 4965 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4979 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 179:
@@ -4969,7 +4983,7 @@
     {
     (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 4973 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4987 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 180:
@@ -4977,7 +4991,7 @@
     {
     (yyval.boolean_value_) = true;
   }
-#line 4981 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 4995 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 181:
@@ -4985,7 +4999,7 @@
     {
     (yyval.boolean_value_) = false;
   }
-#line 4989 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5003 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 183:
@@ -4993,7 +5007,7 @@
     {
     (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "-1");
   }
-#line 4997 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5011 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 184:
@@ -5001,7 +5015,7 @@
     {
     (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "0");
   }
-#line 5005 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5019 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 186:
@@ -5009,7 +5023,7 @@
     {
     (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "-1");
   }
-#line 5013 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5027 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 187:
@@ -5017,7 +5031,7 @@
     {
     (yyval.numeric_literal_value_) = new quickstep::NumericParseLiteralValue((yylsp[-1]).first_line, (yylsp[-1]).first_column, "0");
   }
-#line 5021 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5035 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 188:
@@ -5026,7 +5040,7 @@
     (yyval.order_commalist_) = new quickstep::PtrList<quickstep::ParseOrderByItem>();
     (yyval.order_commalist_)->push_back((yyvsp[0].order_item_));
   }
-#line 5030 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5044 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 189:
@@ -5035,7 +5049,7 @@
     (yyval.order_commalist_) = (yyvsp[-2].order_commalist_);
     (yyval.order_commalist_)->push_back((yyvsp[0].order_item_));
   }
-#line 5039 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5053 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 190:
@@ -5045,7 +5059,7 @@
     delete (yyvsp[-1].order_direction_);
     delete (yyvsp[0].order_direction_);
   }
-#line 5049 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5063 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 191:
@@ -5053,7 +5067,7 @@
     {
     (yyval.order_direction_) = nullptr;
   }
-#line 5057 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5071 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 192:
@@ -5061,7 +5075,7 @@
     {
     (yyval.order_direction_) = new bool(true);
   }
-#line 5065 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5079 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 193:
@@ -5069,7 +5083,7 @@
     {
     (yyval.order_direction_) = new bool(false);
   }
-#line 5073 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5087 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 194:
@@ -5077,7 +5091,7 @@
     {
     (yyval.order_direction_) = nullptr;
   }
-#line 5081 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5095 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 195:
@@ -5085,7 +5099,7 @@
     {
     (yyval.order_direction_) = new bool(true);
   }
-#line 5089 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5103 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 196:
@@ -5093,7 +5107,7 @@
     {
     (yyval.order_direction_) = new bool(false);
   }
-#line 5097 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5111 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 197:
@@ -5101,7 +5115,7 @@
     {
     (yyval.predicate_) = nullptr;
   }
-#line 5105 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5119 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 198:
@@ -5109,7 +5123,7 @@
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5113 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5127 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 199:
@@ -5117,7 +5131,7 @@
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5121 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5135 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 200:
@@ -5131,7 +5145,7 @@
     }
     static_cast<quickstep::ParsePredicateDisjunction *>((yyval.predicate_))->addPredicate((yyvsp[0].predicate_));
   }
-#line 5135 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5149 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 201:
@@ -5139,7 +5153,7 @@
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5143 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5157 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 202:
@@ -5153,7 +5167,7 @@
     }
     static_cast<quickstep::ParsePredicateConjunction *>((yyval.predicate_))->addPredicate((yyvsp[0].predicate_));
   }
-#line 5157 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5171 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 203:
@@ -5161,7 +5175,7 @@
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5165 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5179 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 204:
@@ -5169,7 +5183,7 @@
     {
     (yyval.predicate_) = new quickstep::ParsePredicateNegation((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].predicate_));
   }
-#line 5173 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5187 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 205:
@@ -5177,7 +5191,7 @@
     {
     (yyval.predicate_) = (yyvsp[0].predicate_);
   }
-#line 5181 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5195 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 206:
@@ -5185,7 +5199,7 @@
     {
     (yyval.predicate_) = new quickstep::ParsePredicateBetween((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-4].expression_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5189 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5203 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 207:
@@ -5195,7 +5209,7 @@
         (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 5199 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5213 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 208:
@@ -5206,7 +5220,7 @@
     NotSupported(&(yylsp[-2]), yyscanner, "NULL comparison predicates");
     YYERROR;
   }
-#line 5210 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5224 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 209:
@@ -5217,7 +5231,7 @@
     NotSupported(&(yylsp[-1]), yyscanner, "NULL comparison predicates");
     YYERROR;
   }
-#line 5221 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5235 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 210:
@@ -5225,7 +5239,7 @@
     {
     (yyval.predicate_) = new quickstep::ParsePredicateComparison((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].comparison_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5229 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5243 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 211:
@@ -5233,7 +5247,7 @@
     {
     (yyval.predicate_) = (yyvsp[-1].predicate_);
   }
-#line 5237 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5251 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 212:
@@ -5241,7 +5255,7 @@
     {
     (yyval.predicate_) = new quickstep::ParsePredicateExists((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[0].subquery_expression_));
   }
-#line 5245 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5259 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 213:
@@ -5249,7 +5263,7 @@
     {
     (yyval.predicate_) = new quickstep::ParsePredicateInTableQuery((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-2].expression_), (yyvsp[0].subquery_expression_));
   }
-#line 5253 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5267 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 214:
@@ -5257,7 +5271,7 @@
     {
     (yyval.predicate_) = new quickstep::ParsePredicateInValueList((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-4].expression_), (yyvsp[-1].expression_list_));
   }
-#line 5261 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5275 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 215:
@@ -5268,7 +5282,7 @@
         (yylsp[-2]).first_column,
         new quickstep::ParsePredicateInTableQuery((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-3].expression_), (yyvsp[0].subquery_expression_)));
   }
-#line 5272 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5286 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 216:
@@ -5279,7 +5293,7 @@
         (yylsp[-4]).first_column,
         new quickstep::ParsePredicateInValueList((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-5].expression_), (yyvsp[-1].expression_list_)));
   }
-#line 5283 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5297 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 217:
@@ -5287,7 +5301,7 @@
     {
     (yyval.expression_) = new quickstep::ParseBinaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].binary_operation_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5291 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5305 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 218:
@@ -5295,7 +5309,7 @@
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5299 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5313 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 219:
@@ -5303,7 +5317,7 @@
     {
     (yyval.expression_) = new quickstep::ParseBinaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].binary_operation_), (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5307 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5321 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 220:
@@ -5311,7 +5325,7 @@
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5315 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5329 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 221:
@@ -5319,7 +5333,7 @@
     {
     (yyval.expression_) = new quickstep::ParseUnaryExpression((yylsp[-1]).first_line, (yylsp[-1]).first_column, *(yyvsp[-1].unary_operation_), (yyvsp[0].expression_));
   }
-#line 5323 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5337 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 222:
@@ -5327,7 +5341,7 @@
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5331 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5345 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 223:
@@ -5335,7 +5349,7 @@
     {
     (yyval.expression_) = (yyvsp[0].attribute_);
   }
-#line 5339 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5353 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 224:
@@ -5343,7 +5357,7 @@
     {
     (yyval.expression_) = new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_));
   }
-#line 5347 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5361 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 225:
@@ -5351,7 +5365,7 @@
     {
     (yyval.expression_) = (yyvsp[0].function_call_);
   }
-#line 5355 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5369 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 226:
@@ -5360,7 +5374,7 @@
     (yyvsp[-2].function_call_)->setWindowName((yyvsp[0].string_value_));
     (yyval.expression_) = (yyvsp[-2].function_call_);
   }
-#line 5364 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5378 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 227:
@@ -5369,7 +5383,7 @@
     (yyvsp[-4].function_call_)->setWindow((yyvsp[-1].window_definition_));
     (yyval.expression_) = (yyvsp[-4].function_call_);
   }
-#line 5373 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5387 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 228:
@@ -5377,7 +5391,7 @@
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5381 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5395 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 229:
@@ -5385,7 +5399,7 @@
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5389 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5403 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 230:
@@ -5393,7 +5407,7 @@
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5397 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5411 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 231:
@@ -5401,7 +5415,7 @@
     {
     (yyval.expression_) = (yyvsp[-1].expression_);
   }
-#line 5405 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5419 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 232:
@@ -5409,7 +5423,7 @@
     {
     (yyval.expression_) = (yyvsp[0].subquery_expression_);
   }
-#line 5413 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5427 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 233:
@@ -5418,7 +5432,7 @@
     (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 5422 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5436 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 234:
@@ -5427,7 +5441,7 @@
     (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 5431 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5445 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 235:
@@ -5435,7 +5449,7 @@
     {
     (yyval.function_call_) = new quickstep::ParseFunctionCall((yylsp[-3]).first_line, (yylsp[-3]).first_column, false, (yyvsp[-3].string_value_), (yyvsp[-1].expression_list_));
   }
-#line 5439 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5453 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 236:
@@ -5443,7 +5457,7 @@
     {
     (yyval.function_call_) = new quickstep::ParseFunctionCall((yylsp[-4]).first_line, (yylsp[-4]).first_column, true, (yyvsp[-4].string_value_), (yyvsp[-1].expression_list_));
   }
-#line 5447 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5461 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 237:
@@ -5451,7 +5465,7 @@
     {
     (yyval.expression_) = new quickstep::ParseExtractFunction((yylsp[-5]).first_line, (yylsp[-5]).first_column, (yyvsp[-3].string_value_), (yyvsp[-1].expression_));
   }
-#line 5455 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5469 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 238:
@@ -5460,7 +5474,7 @@
     (yyval.expression_) = new quickstep::ParseSubstringFunction(
         (yylsp[-5]).first_line, (yylsp[-5]).first_column, (yyvsp[-3].expression_), (yyvsp[-1].numeric_literal_value_)->long_value());
   }
-#line 5464 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5478 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 239:
@@ -5469,7 +5483,7 @@
     (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 5473 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5487 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 240:
@@ -5477,7 +5491,7 @@
     {
     (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 5481 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5495 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 241:
@@ -5485,7 +5499,7 @@
     {
     (yyval.expression_) = new quickstep::ParseSearchedCaseExpression((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].searched_when_clause_list_), (yyvsp[-1].expression_));
   }
-#line 5489 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5503 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 242:
@@ -5494,7 +5508,7 @@
     (yyval.simple_when_clause_list_) = new quickstep::PtrVector<quickstep::ParseSimpleWhenClause>;
     (yyval.simple_when_clause_list_)->push_back((yyvsp[0].simple_when_clause_));
   }
-#line 5498 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5512 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 243:
@@ -5503,7 +5517,7 @@
     (yyval.simple_when_clause_list_) = (yyvsp[-1].simple_when_clause_list_);
     (yyval.simple_when_clause_list_)->push_back((yyvsp[0].simple_when_clause_));
   }
-#line 5507 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5521 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 244:
@@ -5511,7 +5525,7 @@
     {
     (yyval.simple_when_clause_) = new quickstep::ParseSimpleWhenClause((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].expression_), (yyvsp[0].expression_));
   }
-#line 5515 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5529 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 245:
@@ -5520,7 +5534,7 @@
     (yyval.searched_when_clause_list_) = new quickstep::PtrVector<quickstep::ParseSearchedWhenClause>;
     (yyval.searched_when_clause_list_)->push_back((yyvsp[0].searched_when_clause_));
   }
-#line 5524 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5538 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 246:
@@ -5529,7 +5543,7 @@
     (yyval.searched_when_clause_list_) = (yyvsp[-1].searched_when_clause_list_);
     (yyval.searched_when_clause_list_)->push_back((yyvsp[0].searched_when_clause_));
   }
-#line 5533 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5547 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 247:
@@ -5537,7 +5551,7 @@
     {
     (yyval.searched_when_clause_) = new quickstep::ParseSearchedWhenClause((yylsp[-3]).first_line, (yylsp[-3]).first_column, (yyvsp[-2].predicate_), (yyvsp[0].expression_));
   }
-#line 5541 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5555 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 248:
@@ -5545,7 +5559,7 @@
     {
     (yyval.expression_) = NULL;
   }
-#line 5549 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5563 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 249:
@@ -5553,7 +5567,7 @@
     {
     (yyval.expression_) = (yyvsp[0].expression_);
   }
-#line 5557 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5571 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 250:
@@ -5562,7 +5576,7 @@
     (yyval.expression_list_) = new quickstep::PtrList<quickstep::ParseExpression>();
     (yyval.expression_list_)->push_back((yyvsp[0].expression_));
   }
-#line 5566 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5580 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 251:
@@ -5571,7 +5585,7 @@
     (yyval.expression_list_) = (yyvsp[-2].expression_list_);
     (yyval.expression_list_)->push_back((yyvsp[0].expression_));
   }
-#line 5575 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5589 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 252:
@@ -5579,7 +5593,7 @@
     {
     (yyval.literal_value_) = new quickstep::NullParseLiteralValue((yylsp[0]).first_line, (yylsp[0]).first_column);
   }
-#line 5583 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5597 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 253:
@@ -5587,7 +5601,7 @@
     {
     (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
   }
-#line 5591 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5605 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 254:
@@ -5595,7 +5609,7 @@
     {
     (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
   }
-#line 5599 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5613 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 255:
@@ -5612,7 +5626,7 @@
     (yyvsp[0].numeric_literal_value_)->prependMinus();
     (yyval.literal_value_) = (yyvsp[0].numeric_literal_value_);
   }
-#line 5616 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5630 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 256:
@@ -5621,7 +5635,7 @@
     (yyval.literal_value_) = new quickstep::StringParseLiteralValue((yyvsp[0].string_value_),
                                                 nullptr);  // No explicit type.
   }
-#line 5625 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5639 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 257:
@@ -5645,7 +5659,7 @@
       YYERROR;
     }
   }
-#line 5649 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5663 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 258:
@@ -5663,7 +5677,7 @@
       YYERROR;
     }
   }
-#line 5667 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5681 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 259:
@@ -5681,7 +5695,7 @@
       (yyval.literal_value_) = parse_value;
     }
   }
-#line 5685 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5699 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 260:
@@ -5689,7 +5703,7 @@
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("YEAR"));
   }
-#line 5693 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5707 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 261:
@@ -5697,7 +5711,7 @@
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("MONTH"));
   }
-#line 5701 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5715 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 262:
@@ -5705,7 +5719,7 @@
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("DAY"));
   }
-#line 5709 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5723 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 263:
@@ -5713,7 +5727,7 @@
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("HOUR"));
   }
-#line 5717 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5731 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 264:
@@ -5721,7 +5735,7 @@
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("MINUTE"));
   }
-#line 5725 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5739 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 265:
@@ -5729,7 +5743,7 @@
     {
      (yyval.string_value_) = new quickstep::ParseString((yylsp[0]).first_line, (yylsp[0]).first_column, std::string("SECOND"));
   }
-#line 5733 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5747 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 266:
@@ -5738,7 +5752,7 @@
     (yyval.literal_value_list_) = new quickstep::PtrList<quickstep::ParseScalarLiteral>();
     (yyval.literal_value_list_)->push_back(new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_)));
   }
-#line 5742 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5756 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 267:
@@ -5747,7 +5761,7 @@
     (yyval.literal_value_list_) = (yyvsp[-2].literal_value_list_);
     (yyval.literal_value_list_)->push_back(new quickstep::ParseScalarLiteral((yyvsp[0].literal_value_)));
   }
-#line 5751 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5765 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 268:
@@ -5756,7 +5770,7 @@
     (yyval.literal_value_list_multiple_) = new quickstep::PtrList<quickstep::PtrList<quickstep::ParseScalarLiteral>>();
     (yyval.literal_value_list_multiple_)->push_back((yyvsp[-1].literal_value_list_));
   }
-#line 5760 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5774 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 269:
@@ -5765,7 +5779,7 @@
     (yyval.literal_value_list_multiple_) = (yyvsp[-4].literal_value_list_multiple_);
     (yyval.literal_value_list_multiple_)->push_back((yyvsp[-1].literal_value_list_));
   }
-#line 5769 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5783 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 270:
@@ -5773,7 +5787,7 @@
     {
     (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[0]).first_line, (yylsp[0]).first_column, (yyvsp[0].string_value_));
   }
-#line 5777 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5791 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 271:
@@ -5781,7 +5795,7 @@
     {
     (yyval.attribute_) = new quickstep::ParseAttribute((yylsp[-2]).first_line, (yylsp[-2]).first_column, (yyvsp[0].string_value_), (yyvsp[-2].string_value_));
   }
-#line 5785 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5799 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 272:
@@ -5790,7 +5804,7 @@
     (yyval.attribute_list_) = new quickstep::PtrList<quickstep::ParseAttribute>();
     (yyval.attribute_list_)->push_back((yyvsp[0].attribute_));
   }
-#line 5794 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5808 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 273:
@@ -5799,7 +5813,7 @@
     (yyval.attribute_list_) = (yyvsp[-2].attribute_list_);
     (yyval.attribute_list_)->push_back((yyvsp[0].attribute_));
   }
-#line 5803 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5817 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 274:
@@ -5807,7 +5821,7 @@
     {
     (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kEqual);
   }
-#line 5811 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5825 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 275:
@@ -5815,7 +5829,7 @@
     {
     (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotEqual);
   }
-#line 5819 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5833 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 276:
@@ -5823,7 +5837,7 @@
     {
     (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLess);
   }
-#line 5827 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5841 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 277:
@@ -5831,7 +5845,7 @@
     {
     (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLessOrEqual);
   }
-#line 5835 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5849 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 278:
@@ -5839,7 +5853,7 @@
     {
     (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreater);
   }
-#line 5843 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5857 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 279:
@@ -5847,7 +5861,7 @@
     {
     (yyval.comparison_) = &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kGreaterOrEqual);
   }
-#line 5851 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5865 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 280:
@@ -5855,7 +5869,7 @@
     {
     (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kLike);
   }
-#line 5859 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5873 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 281:
@@ -5863,7 +5877,7 @@
     {
     (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotLike);
   }
-#line 5867 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5881 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 282:
@@ -5871,7 +5885,7 @@
     {
     (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kRegexMatch);
   }
-#line 5875 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5889 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 283:
@@ -5879,7 +5893,7 @@
     {
     (yyval.comparison_) =  &quickstep::ComparisonFactory::GetComparison(quickstep::ComparisonID::kNotRegexMatch);
   }
-#line 5883 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5897 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 284:
@@ -5893,7 +5907,7 @@
      **/
     (yyval.unary_operation_) = &quickstep::UnaryOperationFactory::GetUnaryOperation(quickstep::UnaryOperationID::kNegate);
   }
-#line 5897 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5911 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 285:
@@ -5901,7 +5915,7 @@
     {
     (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kAdd);
   }
-#line 5905 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5919 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 286:
@@ -5909,7 +5923,7 @@
     {
     (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kSubtract);
   }
-#line 5913 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5927 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 287:
@@ -5917,7 +5931,7 @@
     {
     (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kModulo);
   }
-#line 5921 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5935 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 288:
@@ -5925,7 +5939,7 @@
     {
     (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kMultiply);
   }
-#line 5929 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5943 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 289:
@@ -5933,7 +5947,7 @@
     {
     (yyval.binary_operation_) = &quickstep::BinaryOperationFactory::GetBinaryOperation(quickstep::BinaryOperationID::kDivide);
   }
-#line 5937 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5951 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 290:
@@ -5942,7 +5956,7 @@
     (yyval.string_list_) = new quickstep::PtrList<quickstep::ParseString>();
     (yyval.string_list_)->push_back((yyvsp[0].string_value_));
   }
-#line 5946 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5960 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 291:
@@ -5951,7 +5965,7 @@
     (yyval.string_list_) = (yyvsp[-2].string_list_);
     (yyval.string_list_)->push_back((yyvsp[0].string_value_));
   }
-#line 5955 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5969 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 292:
@@ -5959,7 +5973,7 @@
     {
     (yyval.string_value_) = (yyvsp[0].string_value_);
   }
-#line 5963 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5977 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 293:
@@ -5970,7 +5984,7 @@
     }
     (yyval.string_value_) = (yyvsp[0].string_value_);
   }
-#line 5974 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5988 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 294:
@@ -5978,7 +5992,7 @@
     {
     (yyval.boolean_value_) = true;
   }
-#line 5982 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 5996 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 295:
@@ -5986,7 +6000,7 @@
     {
     (yyval.boolean_value_) = true;
   }
-#line 5990 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6004 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 296:
@@ -5994,7 +6008,7 @@
     {
     (yyval.boolean_value_) = false;
   }
-#line 5998 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6012 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 297:
@@ -6002,7 +6016,7 @@
     {
     (yyval.boolean_value_) = false;
   }
-#line 6006 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6020 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 298:
@@ -6010,7 +6024,7 @@
     {
     (yyval.command_) = new quickstep::ParseCommand((yylsp[-1]).first_line, (yylsp[-1]).first_column, (yyvsp[-1].string_value_), (yyvsp[0].command_argument_list_));
   }
-#line 6014 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6028 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 299:
@@ -6020,7 +6034,7 @@
     argument_list->push_back((yyvsp[0].string_value_));
     (yyval.command_argument_list_) = argument_list;
   }
-#line 6024 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6038 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
   case 300:
@@ -6028,11 +6042,11 @@
     { /* Epsilon, an empy match. */
     (yyval.command_argument_list_) = new quickstep::PtrVector<quickstep::ParseString>();
   }
-#line 6032 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6046 "SqlParser_gen.cpp" /* yacc.c:1661  */
     break;
 
 
-#line 6036 "SqlParser_gen.cpp" /* yacc.c:1661  */
+#line 6050 "SqlParser_gen.cpp" /* yacc.c:1661  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
diff --git a/parser/preprocessed/SqlParser_gen.hpp b/parser/preprocessed/SqlParser_gen.hpp
index 142059d..dd2728d 100644
--- a/parser/preprocessed/SqlParser_gen.hpp
+++ b/parser/preprocessed/SqlParser_gen.hpp
@@ -78,15 +78,15 @@
     TOKEN_BLOCKPROPERTIES = 288,
     TOKEN_BLOCKSAMPLE = 289,
     TOKEN_BLOOM_FILTER = 290,
-    TOKEN_CSB_TREE = 291,
-    TOKEN_BY = 292,
-    TOKEN_CASE = 293,
-    TOKEN_CHARACTER = 294,
-    TOKEN_CHECK = 295,
-    TOKEN_COLUMN = 296,
-    TOKEN_CONSTRAINT = 297,
-    TOKEN_COPY = 298,
-    TOKEN_CREATE = 299,
+    TOKEN_BY = 291,
+    TOKEN_CASE = 292,
+    TOKEN_CHARACTER = 293,
+    TOKEN_CHECK = 294,
+    TOKEN_COLUMN = 295,
+    TOKEN_CONSTRAINT = 296,
+    TOKEN_COPY = 297,
+    TOKEN_CREATE = 298,
+    TOKEN_CSB_TREE = 299,
     TOKEN_CURRENT = 300,
     TOKEN_DATE = 301,
     TOKEN_DATETIME = 302,
@@ -100,85 +100,85 @@
     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_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
+    TOKEN_EOF = 313,
+    TOKEN_EXISTS = 314,
+    TOKEN_EXTRACT = 315,
+    TOKEN_FALSE = 316,
+    TOKEN_FIRST = 317,
+    TOKEN_FLOAT = 318,
+    TOKEN_FOLLOWING = 319,
+    TOKEN_FOR = 320,
+    TOKEN_FOREIGN = 321,
+    TOKEN_FROM = 322,
+    TOKEN_FULL = 323,
+    TOKEN_GROUP = 324,
+    TOKEN_HASH = 325,
+    TOKEN_HAVING = 326,
+    TOKEN_HOUR = 327,
+    TOKEN_IN = 328,
+    TOKEN_INDEX = 329,
+    TOKEN_INNER = 330,
+    TOKEN_INSERT = 331,
+    TOKEN_INTEGER = 332,
+    TOKEN_INTERVAL = 333,
+    TOKEN_INTO = 334,
+    TOKEN_JOIN = 335,
+    TOKEN_KEY = 336,
+    TOKEN_LAST = 337,
+    TOKEN_LEFT = 338,
+    TOKEN_LEX_ERROR = 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_ROWS = 363,
+    TOKEN_ROW_DELIMITER = 364,
+    TOKEN_SECOND = 365,
+    TOKEN_SELECT = 366,
+    TOKEN_SET = 367,
+    TOKEN_SMA = 368,
+    TOKEN_SMALLINT = 369,
+    TOKEN_STDERR = 370,
+    TOKEN_STDOUT = 371,
+    TOKEN_SUBSTRING = 372,
+    TOKEN_TABLE = 373,
+    TOKEN_THEN = 374,
+    TOKEN_TIME = 375,
+    TOKEN_TIMESTAMP = 376,
+    TOKEN_TO = 377,
+    TOKEN_TRUE = 378,
+    TOKEN_TUPLESAMPLE = 379,
+    TOKEN_UNBOUNDED = 380,
+    TOKEN_UNIQUE = 381,
+    TOKEN_UPDATE = 382,
+    TOKEN_USING = 383,
+    TOKEN_VALUES = 384,
+    TOKEN_VARCHAR = 385,
+    TOKEN_WHEN = 386,
+    TOKEN_WHERE = 387,
+    TOKEN_WINDOW = 388,
+    TOKEN_WITH = 389,
+    TOKEN_YEAR = 390,
+    TOKEN_YEARMONTH = 391
   };
 #endif
 
diff --git a/query_optimizer/cost_model/StarSchemaSimpleCostModel.cpp b/query_optimizer/cost_model/StarSchemaSimpleCostModel.cpp
index 6ab86e5..6b506be 100644
--- a/query_optimizer/cost_model/StarSchemaSimpleCostModel.cpp
+++ b/query_optimizer/cost_model/StarSchemaSimpleCostModel.cpp
@@ -287,6 +287,7 @@
         return static_cast<std::size_t>(
             left_child_num_distinct_values * right_child_selectivity + 0.5);
       }
+      break;
     }
     case P::PhysicalType::kHashJoin: {
       const P::HashJoinPtr &hash_join =
@@ -447,7 +448,7 @@
           if (E::ContainsExprId(child->getOutputAttributes(), attr->id())) {
             const std::size_t child_num_distinct_values = estimateNumDistinctValues(attr->id(), child);
             if (comparison_expression->isEqualityComparisonPredicate()) {
-              return 1.0 / child_num_distinct_values;
+              return 1.0 / std::max(child_num_distinct_values, static_cast<std::size_t>(1u));
             } else {
               return 1.0 / std::max(std::min(child_num_distinct_values / 100.0, 10.0), 2.0);
             }
diff --git a/query_optimizer/resolver/Resolver.cpp b/query_optimizer/resolver/Resolver.cpp
index b07cf10..6e03b83 100644
--- a/query_optimizer/resolver/Resolver.cpp
+++ b/query_optimizer/resolver/Resolver.cpp
@@ -1523,18 +1523,22 @@
   std::vector<const ParseSetOperation*> operands;
   CollapseSetOperation(parse_set_operations, parse_set_operations, &operands);
 
-  DCHECK_LT(1u, operands.size());
+  const std::size_t num_operands = operands.size();
+  DCHECK_LT(1u, num_operands);
   std::vector<L::LogicalPtr> resolved_operations;
+  resolved_operations.reserve(num_operands);
   std::vector<std::vector<E::AttributeReferencePtr>> attribute_matrix;
+  attribute_matrix.reserve(num_operands);
 
   // Resolve the first operation, and get the output attributes.
   auto iter = operands.begin();
   const ParseSetOperation &operation = static_cast<const ParseSetOperation&>(**iter);
   L::LogicalPtr operation_logical =
       resolveSetOperation(operation, set_operation_name, type_hints, parent_resolver);
-  const std::vector<E::AttributeReferencePtr> operation_attributes =
+  std::vector<E::AttributeReferencePtr> operation_attributes =
       operation_logical->getOutputAttributes();
-  attribute_matrix.push_back(operation_attributes);
+  const std::size_t num_operation_attributes = operation_attributes.size();
+  attribute_matrix.push_back(std::move(operation_attributes));
   resolved_operations.push_back(operation_logical);
 
   // Resolve the rest operations, and check the size of output attributes.
@@ -1547,22 +1551,25 @@
 
     // Check output attributes size.
     // Detailed type check and type cast will perform later.
-    if (attribute_matrix.back().size() != operation_attributes.size()) {
+    if (attribute_matrix.back().size() != num_operation_attributes) {
       THROW_SQL_ERROR_AT(&current_operation)
           << "Can not perform " << parse_set_operations.getName()
           << "opeartion between " << std::to_string(attribute_matrix.back().size())
-          << "and " << std::to_string(operation_attributes.size())
+          << "and " << std::to_string(num_operation_attributes)
           << "columns";
     }
 
     resolved_operations.push_back(current_logical);
   }
+  DCHECK_EQ(num_operands, attribute_matrix.size());
+  DCHECK_EQ(num_operands, resolved_operations.size());
 
   // Get the possible output attributes that the attributes of all operands can cast to.
   std::vector<E::AttributeReferencePtr> possible_attributes;
-  for (std::size_t aid = 0; aid < operation_attributes.size(); ++aid) {
+  possible_attributes.reserve(num_operation_attributes);
+  for (std::size_t aid = 0; aid < num_operation_attributes; ++aid) {
     E::AttributeReferencePtr possible_attribute = attribute_matrix[0][aid];
-    for (std::size_t opid = 1; opid < resolved_operations.size(); ++opid) {
+    for (std::size_t opid = 1; opid < num_operands; ++opid) {
       const Type &current_type = attribute_matrix[opid][aid]->getValueType();
       const Type &possible_type = possible_attribute->getValueType();
       if (!possible_type.equals(current_type)) {
@@ -1593,10 +1600,10 @@
     possible_attributes.push_back(possible_attribute);
   }
 
-  for (std::size_t opid = 0; opid < operation_attributes.size(); ++opid) {
+  for (std::size_t opid = 0; opid < num_operation_attributes; ++opid) {
     // Generate a cast operation if needed.
     std::vector<E::NamedExpressionPtr> cast_expressions;
-    for (std::size_t aid = 0; aid < operation_attributes.size(); ++aid) {
+    for (std::size_t aid = 0; aid < num_operation_attributes; ++aid) {
       const E::AttributeReferencePtr current_attr = attribute_matrix[opid][aid];
       const Type &current_type = current_attr->getValueType();
       const Type &possible_type = possible_attributes[aid]->getValueType();
@@ -1635,10 +1642,11 @@
     case ParseSetOperation::kUnionAll:
       return L::SetOperation::Create(
           L::SetOperation::kUnionAll, resolved_operations, output_attributes);
-    default:
-      LOG(FATAL) << "Unknown operation: " << parse_set_operations.toString();
-      return nullptr;
+    case ParseSetOperation::kSelect:
+      LOG(FATAL) << "Unexpected operation: " << parse_set_operations.toString();
   }
+  LOG(FATAL) << "Unreachable";
+  return nullptr;
 }
 
 L::LogicalPtr Resolver::resolveSetOperation(
@@ -1664,10 +1672,9 @@
                            type_hints,
                            parent_resolver);
     }
-    default:
-      LOG(FATAL) << "Unknown set operation: " << set_operation_query.toString();
-      return nullptr;
   }
+  LOG(FATAL) << "Unreachable";
+  return nullptr;
 }
 
 E::SubqueryExpressionPtr Resolver::resolveSubqueryExpression(
diff --git a/query_optimizer/rules/InjectJoinFilters.cpp b/query_optimizer/rules/InjectJoinFilters.cpp
index 90e81d5..a165377 100644
--- a/query_optimizer/rules/InjectJoinFilters.cpp
+++ b/query_optimizer/rules/InjectJoinFilters.cpp
@@ -49,6 +49,28 @@
 namespace E = ::quickstep::optimizer::expressions;
 namespace P = ::quickstep::optimizer::physical;
 
+namespace {
+
+P::PhysicalPtr wrapSelection(const P::PhysicalPtr &input) {
+  DCHECK(P::SomeTopLevelPlan::Matches(input));
+  const P::TopLevelPlanPtr &top_level_plan =
+      std::static_pointer_cast<const P::TopLevelPlan>(input);
+  const P::PhysicalPtr &plan = top_level_plan->plan();
+
+  if (P::SomeFilterJoin::Matches(plan)) {
+    return input;
+  }
+
+  const P::SelectionPtr selection =
+      P::Selection::Create(
+          plan,
+          E::ToNamedExpressions(top_level_plan->plan()->getOutputAttributes()),
+          nullptr /* filter_predicate */);
+  return input->copyWithNewChildren({ selection });
+}
+
+}  // namespace
+
 P::PhysicalPtr InjectJoinFilters::apply(const P::PhysicalPtr &input) {
   DCHECK(input->getPhysicalType() == P::PhysicalType::kTopLevelPlan);
 
@@ -62,17 +84,25 @@
   // Step 1. Transform applicable HashJoin nodes to FilterJoin nodes.
   P::PhysicalPtr output = transformHashJoinToFilters(input);
 
-  // Step 2. Push down FilterJoin nodes to be evaluated early.
+  if (output == input) {
+    return input;
+  }
+
+  // Step 2. If the top level plan is a filter join, wrap it with a Selection
+  // to stabilize output columns.
+  output = wrapSelection(output);
+
+  // Step 3. Push down FilterJoin nodes to be evaluated early.
   output = pushDownFilters(output);
 
-  // Step 3. Add Selection nodes for attaching the LIPFilters, if necessary.
+  // Step 4. Add Selection nodes for attaching the LIPFilters, if necessary.
   output = addFilterAnchors(output, false);
 
-  // Step 4. Because of the pushdown of FilterJoin nodes, there are optimization
+  // Step 5. Because of the pushdown of FilterJoin nodes, there are optimization
   // opportunities for projecting columns early.
   output = PruneColumns().apply(output);
 
-  // Step 5. For each FilterJoin node, attach its corresponding LIPFilter to
+  // Step 6. For each FilterJoin node, attach its corresponding LIPFilter to
   // proper nodes.
   concretizeAsLIPFilters(output, nullptr);
 
@@ -146,13 +176,8 @@
 P::PhysicalPtr InjectJoinFilters::transformHashJoinToFilters(
     const P::PhysicalPtr &input) const {
   std::vector<P::PhysicalPtr> new_children;
-  bool has_changed_children = false;
   for (const P::PhysicalPtr &child : input->children()) {
-    const P::PhysicalPtr new_child = transformHashJoinToFilters(child);
-    if (child != new_child && !has_changed_children) {
-      has_changed_children = true;
-    }
-    new_children.push_back(new_child);
+    new_children.emplace_back(transformHashJoinToFilters(child));
   }
 
   P::HashJoinPtr hash_join;
@@ -187,7 +212,7 @@
                                  hash_join->cloneOutputPartitionSchemeHeader());
   }
 
-  if (has_changed_children) {
+  if (input->children() != new_children) {
     return input->copyWithNewChildren(new_children);
   } else {
     return input;
diff --git a/query_optimizer/rules/ReorderColumns.cpp b/query_optimizer/rules/ReorderColumns.cpp
index 5f52938..6373f36 100644
--- a/query_optimizer/rules/ReorderColumns.cpp
+++ b/query_optimizer/rules/ReorderColumns.cpp
@@ -61,7 +61,9 @@
   if (skip_transform) {
     std::vector<P::PhysicalPtr> new_children;
     for (const P::PhysicalPtr &child : input->children()) {
-      new_children.emplace_back(applyInternal(child, lock_ordering && is_not_transformable));
+      const bool child_lock_ordering =
+          (lock_ordering && is_not_transformable) || P::SomeUnionAll::Matches(child);
+      new_children.emplace_back(applyInternal(child, child_lock_ordering));
     }
 
     if (new_children != input->children()) {
diff --git a/utility/BarrieredReadWriteConcurrentBitVector.hpp b/utility/BarrieredReadWriteConcurrentBitVector.hpp
index 0086c7f..dba5ff0 100644
--- a/utility/BarrieredReadWriteConcurrentBitVector.hpp
+++ b/utility/BarrieredReadWriteConcurrentBitVector.hpp
@@ -42,7 +42,7 @@
  * @brief A bit vector that supports concurrent read/write operations, with a
  *        RESTRICTED CONCURRENCY LEVEL that the read operations and the write
  *        operations must be isolated with a (mostly implicit) barrier.
- * 
+ *
  * In other words, when using this bit vector, the read operations and write
  * operations must be grouped into phases. Within a phase there can be either
  * concurrent read operations or concurrent write operations, but not both (or
diff --git a/utility/ExecutionDAGVisualizer.cpp b/utility/ExecutionDAGVisualizer.cpp
index 8059ef3..4b30492 100644
--- a/utility/ExecutionDAGVisualizer.cpp
+++ b/utility/ExecutionDAGVisualizer.cpp
@@ -292,19 +292,17 @@
       node_info.labels.emplace_back(
           "effective concurrency: " + FormatDigits(concurrency, 2));
 
-      DCHECK(workorders_count.find(node_index) != workorders_count.end());
-      const std::size_t workorders_count_for_node = workorders_count.at(node_index);
-      if (workorders_count_for_node > 0) {
-        mean_time_per_workorder[node_index] =
-            mean_time_per_workorder[node_index] /
+      const auto cit = workorders_count.find(node_index);
+      if (cit != workorders_count.end()) {
+        const std::size_t workorders_count_for_node = cit->second;
+        mean_time_per_workorder[node_index] /=
             (1000 * static_cast<float>(workorders_count_for_node));
-      } else {
-        mean_time_per_workorder[node_index] = 0;
+
+        node_info.labels.emplace_back(std::to_string(workorders_count_for_node) + " work orders");
+        node_info.labels.emplace_back(
+            "Mean work order execution time: " +
+            FormatDigits(mean_time_per_workorder[node_index], 2) + " ms");
       }
-      node_info.labels.emplace_back(std::to_string(workorders_count_for_node) + " work orders");
-      node_info.labels.emplace_back(
-          "Mean work order execution time: " +
-          FormatDigits(mean_time_per_workorder[node_index], 2) + " ms");
     }
   }
 }