diff --git a/src/parser/ast.h b/src/parser/ast.h
index e6815784d6a62410335bcbf4ceafd5ee2ea2f7d0..aca8b707b46b6f444b4a746e44062cf12df57e6d 100644
--- a/src/parser/ast.h
+++ b/src/parser/ast.h
@@ -9,6 +9,7 @@ MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 See the Mulan PSL v2 for more details. */
 #pragma once
 
+#include <utility>
 #include <vector>
 #include <string>
 #include <memory>
@@ -41,7 +42,7 @@ namespace ast {
     };
 
     enum SetKnobType {
-        EnableNestLoop, EnableSortMerge
+        EnableNestLoop, EnableSortMerge, EnableOutputFile
     };
 
     // Base class for tree nodes
@@ -234,6 +235,15 @@ namespace ast {
         }
     };
 
+    struct LoadStmt : public TreeNode {
+        std::string file_name;
+        std::string table_name;
+
+        explicit LoadStmt(std::string &filename_, std::string &tablename_) : file_name(std::move(filename_)),
+                                                                             table_name(std::move(tablename_)) {
+        }
+    };
+
     struct InsertStmt : public TreeNode {
         std::string tab_name;
         std::vector<std::shared_ptr<Value> > vals;
diff --git a/src/parser/ast_printer.h b/src/parser/ast_printer.h
index 6f2bc3affc82c4091e05a6da3b4d0fd5a307ff4d..c131551f6585c0b1be10e65cb51b84c98a73eccf 100644
--- a/src/parser/ast_printer.h
+++ b/src/parser/ast_printer.h
@@ -73,6 +73,19 @@ namespace ast {
             return m.at(op);
         }
 
+        static std::string knobType2str(SetKnobType type) {
+            static std::map<SetKnobType, std::string> m{
+                {EnableNestLoop, "EnableNestLoop"},
+                {EnableSortMerge, "EnableSortMerge"},
+                {EnableOutputFile, "EnableOutputFile"}
+            };
+            return m.at(type);
+        }
+
+        static std::string boolType2str(bool type) {
+            return type ? "true" : "false";
+        }
+
         template<typename T>
         static void print_node_list(std::vector<T> nodes, int offset) {
             std::cout << offset2string(offset);
@@ -161,6 +174,14 @@ namespace ast {
                 print_node(x->lhs, offset);
                 print_val(op2str(x->op), offset);
                 print_node(x->rhs, offset);
+            } else if (auto x = std::dynamic_pointer_cast<LoadStmt>(node)) {
+                std::cout << "LOAD\n";
+                print_val(x->file_name, offset);
+                print_val(x->table_name, offset);
+            } else if (auto x = std::dynamic_pointer_cast<SetStmt>(node)) {
+                std::cout << "SET_KNOB\n";
+                print_val(knobType2str(x->set_knob_type_), offset);
+                print_val(boolType2str(x->bool_val_), offset);
             } else if (auto x = std::dynamic_pointer_cast<InsertStmt>(node)) {
                 std::cout << "INSERT\n";
                 print_val(x->tab_name, offset);
diff --git a/src/parser/lex.l b/src/parser/lex.l
index 8e0cf65c30a86b7e36175a4d510de15db93dc392..8d951da609d8ea02f77c00027df3646bc170bc5a 100644
--- a/src/parser/lex.l
+++ b/src/parser/lex.l
@@ -40,6 +40,7 @@ value_int {sign}?{digit}+
 value_float {sign}?{digit}+\.({digit}+)?
 value_string '[^']*'
 single_op ";"|"("|")"|","|"*"|"="|">"|"<"|"."
+file_path \.\.[0-9a-zA-Z_\/\.\-]+
 
 %x STATE_COMMENT
 
@@ -96,6 +97,10 @@ single_op ";"|"("|")"|","|"*"|"="|">"|"<"|"."
 "HAVING" { return HAVING; }
 "IN" { return IN; }
 "STATIC_CHECKPOINT" { return STATIC_CHECKPOINT; }
+"LOAD" { return LOAD; }
+"OUTPUT_FILE" { return OUTPUT_FILE; }
+"ON" { return ON; }
+"OFF" { return OFF; }
 "TRUE" { 
     yylval->sv_bool = true;
     return VALUE_BOOL; 
@@ -127,6 +132,10 @@ single_op ";"|"("|")"|","|"*"|"="|">"|"<"|"."
 {value_string} {
     yylval->sv_str = std::string(yytext + 1, strlen(yytext) - 2);
     return VALUE_STRING;
+}
+{file_path} {
+    yylval->sv_str = yytext;
+    return FILE_PATH;
 }
     /* EOF */
 <<EOF>> { return T_EOF; }
diff --git a/src/parser/lex.yy.c b/src/parser/lex.yy.c
index 95edeb77556a7d71055a1294fc855f6915a7ea7f..affcf5b671a69192d44d6bc23ae214905e1719e2 100644
--- a/src/parser/lex.yy.c
+++ b/src/parser/lex.yy.c
@@ -379,8 +379,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 61
-#define YY_END_OF_BUFFER 62
+#define YY_NUM_RULES 66
+#define YY_END_OF_BUFFER 67
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -388,32 +388,34 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[222] =
+static const flex_int16_t yy_accept[242] =
     {   0,
-        0,    0,    0,    0,   62,   60,    6,    7,    7,   60,
-       60,   55,   60,   60,   60,   57,   55,   55,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,    3,    4,    6,
-        7,   54,    0,   59,   57,    5,    1,   58,   52,   53,
-       51,   56,   56,   56,   44,   56,   36,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       47,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,    2,    5,   58,   56,   31,
-       37,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   27,
-       56,   41,   42,   56,   56,   56,   25,   56,   56,   43,
-       56,   56,   56,   56,   56,   56,   56,   28,   56,   56,
-       56,   56,   17,   16,   56,   33,   56,   56,   22,   56,
-       56,   34,   56,   56,   19,   32,   56,   56,   56,    8,
-       56,   56,   49,   56,   56,   56,   11,    9,   56,   40,
-       56,   56,   56,   50,   29,   45,   56,   30,   56,   35,
-       56,   56,   56,   15,   56,   56,   23,   10,   14,   21,
-       56,   46,   18,   56,   26,   56,   13,   24,   20,   56,
-       56,   56,   56,   56,   12,   56,   56,   56,   56,   56,
-
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   38,   56,   56,   39,   56,   48,
+        0,    0,    0,    0,   67,   65,    6,    7,    7,   65,
+       65,   59,   65,   65,   59,   65,   61,   59,   59,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,    3,
+        4,    6,    7,   58,    0,   63,   61,    5,    0,    1,
+       62,   56,   57,   55,   60,   60,   60,   44,   60,   36,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   47,   60,   60,   60,   60,   60,   51,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,    2,    5,   64,   62,   60,   31,   37,   60,
+
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   27,   60,   60,
+       41,   42,   52,   60,   60,   60,   60,   25,   60,   60,
+       43,   60,   60,   60,   60,   60,   60,   60,   28,   60,
+       60,   60,   60,   17,   16,   60,   33,   60,   60,   22,
+       60,   60,   34,   60,   60,   19,   32,   49,   60,   60,
+       60,   60,    8,   60,   60,   53,   60,   60,   60,   11,
+        9,   60,   40,   60,   60,   60,   54,   29,   45,   60,
+       30,   60,   35,   60,   60,   60,   60,   15,   60,   60,
+       23,   10,   14,   21,   60,   46,   18,   60,   60,   26,
+
+       60,   13,   24,   20,   60,   60,   60,   60,   60,   60,
+       60,   12,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   50,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   38,   60,   60,   39,   60,   48,
         0
     } ;
 
@@ -452,133 +454,140 @@ static const YY_CHAR yy_ec[256] =
 static const YY_CHAR yy_meta[70] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    3,    1,    1,    1,    1,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3
+        1,    3,    3,    3,    4,    1,    1,    1,    1,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4
     } ;
 
-static const flex_int16_t yy_base[226] =
+static const flex_int16_t yy_base[247] =
     {   0,
-        0,    0,  407,  404,  410,  434,  407,  434,  404,  387,
-      397,  434,  386,   58,  349,   59,   57,  281,   50,   54,
-       50,   55,   47,   62,   49,   76,   48,   60,    0,  101,
-       52,   67,  101,   96,   83,  110,  104,  434,  270,  239,
-      434,  434,  177,  434,  119,    0,  434,  124,  434,  434,
-      434,    0,  101,  113,  115,  112,    0,  123,  113,  122,
-      129,  114,  129,  122,  128,  134,  136,  139,  111,  148,
-      159,  152,  141,  148,  164,  157,  162,  155,  170,  159,
-      174,  160,  179,  172,  180,  434,    0,   87,  173,    0,
-        0,  183,  181,  180,  187,  204,  203,  209,  197,  212,
-
-      197,  201,  214,  208,  202,  216,  210,  223,  224,  215,
-      218,    0,    0,  228,  223,  231,    0,  220,  224,    0,
-      225,  241,  248,  232,  239,  240,  236,    0,  255,  246,
-      247,  250,    0,    0,  259,    0,  268,  257,    0,  258,
-      265,    0,  257,  265,    0,    0,  266,  284,  284,    0,
-      279,  284,    0,  273,  289,  291,    0,    0,  278,    0,
-      296,  298,  299,    0,    0,    0,  300,    0,  290,    0,
-      310,  296,  314,  300,  316,  305,    0,    0,    0,    0,
-       50,    0,    0,  322,    0,   46,    0,    0,    0,  312,
-      317,  329,  329,  321,    0,  330,  321,  324,  340,  328,
-
-      330,  343,  341,  342,  346,  344,  356,  347,  351,  350,
-      354,  354,  367,  367,    0,  372,  364,    0,  360,    0,
-      434,  424,  427,   82,  430
+        0,    0,  442,  441,  449,  470,  445,  470,  443,  427,
+      438,  470,  426,   58,  427,  429,   59,   57,  418,   50,
+       54,   50,   55,   47,   62,   49,   76,   48,   60,    0,
+       61,  105,  102,   68,  105,   94,   99,  116,  110,  470,
+      421,  426,  470,  470,  333,  470,   76,    0,    0,  470,
+      318,  470,  470,  470,    0,  112,  124,  126,  123,    0,
+      130,  125,  128,  146,  120,  146,  140,  140,  145,  147,
+      148,   75,  154,  163,  159,  168,   75,  156,  166,    0,
+      170,  156,  165,  167,  165,  184,  178,  195,  178,  198,
+      192,  204,  470,    0,    0,  185,  195,    0,    0,  201,
+
+      196,  202,  202,  217,  214,  217,  205,  220,  205,  207,
+      226,  216,  210,  223,  217,  229,  232,  225,  229,  245,
+        0,    0,    0,  247,  238,  245,  256,    0,  241,  245,
+        0,  250,  262,  267,  249,  253,  252,  259,    0,  265,
+      256,  257,  259,    0,    0,  269,    0,  277,  264,    0,
+      269,  272,    0,  267,  274,    0,    0,    0,  280,  282,
+      303,  303,    0,  301,  308,    0,  295,  313,  314,    0,
+        0,  301,    0,  317,  319,  320,    0,    0,    0,  319,
+        0,  309,    0,  310,  326,  313,  331,  318,  330,  319,
+        0,    0,    0,    0,   93,    0,    0,   85,  338,    0,
+
+       56,    0,    0,    0,  328,  337,  338,  353,  352,  344,
+      355,    0,  357,  351,  353,  354,  368,  356,  357,  369,
+      375,  367,  367,    0,  370,  369,  381,  371,  373,  375,
+      374,  378,  390,  389,    0,  398,  394,    0,  391,    0,
+      470,  455,  459,   81,  463,  465
     } ;
 
-static const flex_int16_t yy_def[226] =
+static const flex_int16_t yy_def[247] =
     {   0,
-      221,    1,  222,  222,  221,  221,  221,  221,  221,  221,
-      223,  221,  221,  221,  221,  221,  221,  221,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  221,  221,  221,
-      221,  221,  223,  221,  221,  225,  221,  221,  221,  221,
-      221,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  221,  225,  221,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-        0,  221,  221,  221,  221
+      241,    1,  242,  242,  241,  241,  241,  241,  241,  241,
+      243,  241,  241,  241,  241,  241,  241,  241,  241,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  241,
+      241,  241,  241,  241,  243,  241,  241,  245,  246,  241,
+      241,  241,  241,  241,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  241,  245,  246,  241,  244,  244,  244,  244,
+
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+        0,  241,  241,  241,  241,  241
     } ;
 
-static const flex_int16_t yy_nxt[504] =
+static const flex_int16_t yy_nxt[540] =
     {   0,
         6,    7,    8,    9,   10,   11,   12,   12,   12,   13,
-       12,   14,   12,   15,   16,   12,   17,   12,   18,   19,
-       20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
-       29,   30,   29,   31,   29,   29,   32,   33,   34,   35,
-       36,   37,   29,   29,    6,   19,   20,   21,   22,   23,
-       24,   25,   26,   27,   28,   29,   29,   30,   29,   31,
-       29,   32,   33,   34,   35,   36,   37,   29,   29,   46,
-       53,   48,   45,   45,   49,   50,   58,   56,   61,   63,
-       71,   65,   54,   59,   52,   68,   60,   55,   75,   64,
-      192,   62,   66,   72,  190,   69,   53,   57,   67,   70,
-
-       76,   88,   58,   56,   61,   63,   71,   65,   54,   59,
-       68,   60,   55,   75,   64,   81,   62,   83,   66,   72,
-       73,   69,   57,   67,   77,   70,   76,   78,   74,   84,
-       85,   48,   82,   45,   89,   90,   91,   92,   88,   79,
-       80,   81,   93,   83,   94,   96,   73,   99,  100,  101,
-       77,  106,   95,   78,   74,   84,   85,   82,  102,   97,
-       89,   90,   91,   92,   79,   80,   98,  103,   93,  104,
-       94,   96,  105,   99,  100,  101,  106,   95,  107,  111,
-      113,  108,   44,  112,  102,   97,  114,  115,  118,  119,
-      120,   98,  116,  103,  121,  104,  109,  110,  105,  122,
-
-      117,  123,  124,  125,  107,  111,  113,  108,  112,  126,
-      127,  129,  114,  115,  118,  119,  120,  128,  116,  130,
-      121,  109,  110,  131,  122,  117,  132,  123,  124,  125,
-      133,  134,  135,  138,  126,  136,  127,  129,  137,  139,
-       40,  140,  128,  141,  142,  130,  143,  144,  145,  131,
-      146,  147,  132,  148,  149,  152,  133,  134,  135,  138,
-      136,  150,  151,  137,  153,  139,  140,  154,  158,  141,
-      142,  155,  143,  144,  145,  156,  146,  147,  157,  148,
-      149,  152,  159,   86,  160,  161,  150,  151,  162,  163,
-      153,  164,  166,  154,  158,  165,  155,  167,   51,  168,
-
-      156,  169,  170,  157,  171,  172,  173,  174,  159,  160,
-      161,  175,  176,  162,  177,  163,  178,  164,  166,  179,
-      165,  180,  181,  167,  168,  182,  169,  170,  183,  184,
-      171,  172,  173,  174,  185,  186,  175,  187,  176,  188,
-      177,  178,  189,  191,  193,  179,  195,  180,  181,  194,
-      196,  182,  197,  183,  198,  184,  199,   47,  200,  185,
-      201,  186,  187,  202,  205,  188,  203,  189,  204,  191,
-      193,  206,  195,  207,  194,  208,  196,  209,  197,  210,
-      198,  211,  199,  200,  212,  201,  213,  214,  215,  202,
-      205,  203,  216,  204,  217,  218,  219,  206,  220,  207,
-
-       45,  208,   44,  209,   42,  210,   41,  211,   40,  221,
-      212,  213,   39,  214,  215,   39,  221,  221,  216,  221,
-      217,  218,  219,  220,   38,   38,   38,   43,   43,   43,
-       87,  221,   87,    5,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-
-      221,  221,  221
+       12,   14,   15,   16,   17,   12,   18,   12,   19,   20,
+       21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
+       31,   32,   30,   33,   30,   30,   34,   35,   36,   37,
+       38,   39,   30,   30,    6,   20,   21,   22,   23,   24,
+       25,   26,   27,   28,   29,   30,   31,   32,   30,   33,
+       30,   34,   35,   36,   37,   38,   39,   30,   30,   48,
+       56,   51,   47,   47,   52,   53,   61,   59,   64,   66,
+       74,   68,   57,   62,   55,   71,   63,   58,   51,   67,
+       47,   65,   69,   75,   76,   72,   56,   60,   70,   73,
+
+      208,   83,   61,   59,   64,   66,   74,   68,   57,   62,
+       71,   63,   58,   88,   67,  114,   65,  121,   69,   75,
+       76,   72,   60,   70,   77,   73,   79,   83,   84,  206,
+       89,   85,   78,   90,   80,   91,   92,  205,   81,   88,
+      114,   82,  121,   86,   87,   97,   98,   99,  100,  101,
+       77,  104,   79,  107,   84,   89,  102,   85,   78,   90,
+       80,   91,   92,   81,  103,  108,   82,  109,   86,   87,
+      110,   97,   98,   99,  100,  101,  105,  104,  111,  107,
+      112,  113,  102,  106,  115,  116,  119,  120,  122,  103,
+      123,  108,  124,  109,  125,  126,  110,  127,  129,   96,
+
+      117,  118,  105,  130,  111,  128,  112,  113,  106,  131,
+      115,  116,  119,  120,  122,  132,  123,  133,  124,  125,
+      134,  126,  135,  127,  129,  117,  118,  136,  138,  130,
+      128,  137,  139,  140,  141,  131,  142,  143,  144,  145,
+      146,  132,  133,  147,  148,  149,  134,  150,  135,  151,
+      152,  153,  154,  136,  138,  155,  137,  139,  156,  140,
+      141,  157,  142,  143,  144,  145,  146,  158,  147,  148,
+      159,  149,  160,  150,  151,  161,  152,  153,  154,  162,
+      165,  155,  163,  164,  156,  166,  167,  157,  168,  169,
+      170,  171,  172,  158,  173,  174,  159,  175,  160,  176,
+
+      177,  161,  178,  179,  180,  162,  165,  163,  164,  181,
+      182,  166,  167,  168,  169,  170,  183,  171,  172,  173,
+      174,  184,  175,  185,  186,  176,  177,  178,  187,  179,
+      180,  188,   96,  189,  181,  182,  190,  191,   46,  192,
+      193,  183,  194,  195,  196,  199,  184,  197,  198,  185,
+      186,  200,  201,  203,  187,  202,  204,  188,  189,  207,
+      209,  211,  190,  191,  192,  210,  193,  212,  194,  195,
+      196,  199,  197,  198,  213,  214,  200,  215,  201,  203,
+      202,  204,  216,  217,  220,  207,  209,  211,  218,  219,
+      210,  221,  224,  212,  222,  223,  225,  226,  227,  228,
+
+      213,  214,  229,  215,  230,  231,  232,  234,  216,  217,
+      220,  233,  235,  218,  219,  236,  237,  221,  224,  222,
+      223,  238,  225,  226,  227,  228,  239,   42,  229,  240,
+      230,  231,  232,  234,   93,   54,  233,   50,  235,   49,
+       47,  236,  237,   46,   44,   43,   42,  238,  241,   41,
+       41,  241,  239,  241,  240,   40,   40,   40,   40,   45,
+       45,   45,   45,   94,  241,   94,   94,   95,   95,    5,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241
     } ;
 
-static const flex_int16_t yy_chk[504] =
+static const flex_int16_t yy_chk[540] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -587,55 +596,58 @@ static const flex_int16_t yy_chk[504] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,   14,
-       19,   16,   14,   16,   17,   17,   21,   20,   22,   23,
-       27,   24,   19,   21,  224,   25,   21,   19,   31,   23,
-      186,   22,   24,   28,  181,   26,   19,   20,   24,   26,
-
-       32,   88,   21,   20,   22,   23,   27,   24,   19,   21,
-       25,   21,   19,   31,   23,   34,   22,   35,   24,   28,
-       30,   26,   20,   24,   33,   26,   32,   33,   30,   36,
-       37,   45,   34,   45,   53,   54,   55,   56,   48,   33,
-       33,   34,   58,   35,   59,   60,   30,   62,   63,   64,
-       33,   69,   59,   33,   30,   36,   37,   34,   65,   61,
-       53,   54,   55,   56,   33,   33,   61,   66,   58,   67,
-       59,   60,   68,   62,   63,   64,   69,   59,   70,   72,
-       74,   71,   43,   73,   65,   61,   75,   76,   78,   79,
-       80,   61,   77,   66,   81,   67,   71,   71,   68,   82,
-
-       77,   83,   84,   85,   70,   72,   74,   71,   73,   89,
-       92,   94,   75,   76,   78,   79,   80,   93,   77,   95,
-       81,   71,   71,   96,   82,   77,   97,   83,   84,   85,
-       98,   99,  100,  103,   89,  101,   92,   94,  102,  104,
-       40,  105,   93,  106,  107,   95,  108,  109,  110,   96,
-      111,  114,   97,  115,  116,  121,   98,   99,  100,  103,
-      101,  118,  119,  102,  122,  104,  105,  123,  127,  106,
-      107,  124,  108,  109,  110,  125,  111,  114,  126,  115,
-      116,  121,  129,   39,  130,  131,  118,  119,  132,  135,
-      122,  137,  140,  123,  127,  138,  124,  141,   18,  143,
-
-      125,  144,  147,  126,  148,  149,  151,  152,  129,  130,
-      131,  154,  155,  132,  156,  135,  159,  137,  140,  161,
-      138,  162,  163,  141,  143,  167,  144,  147,  169,  171,
-      148,  149,  151,  152,  172,  173,  154,  174,  155,  175,
-      156,  159,  176,  184,  190,  161,  191,  162,  163,  190,
-      192,  167,  193,  169,  194,  171,  196,   15,  197,  172,
-      198,  173,  174,  199,  202,  175,  200,  176,  201,  184,
-      190,  203,  191,  204,  190,  205,  192,  206,  193,  207,
-      194,  208,  196,  197,  209,  198,  210,  211,  212,  199,
-      202,  200,  213,  201,  214,  216,  217,  203,  219,  204,
-
-       13,  205,   11,  206,   10,  207,    9,  208,    7,    5,
-      209,  210,    4,  211,  212,    3,    0,    0,  213,    0,
-      214,  216,  217,  219,  222,  222,  222,  223,  223,  223,
-      225,    0,  225,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-
-      221,  221,  221
+       20,   17,   14,   17,   18,   18,   22,   21,   23,   24,
+       28,   25,   20,   22,  244,   26,   22,   20,   47,   24,
+       47,   23,   25,   29,   31,   27,   20,   21,   25,   27,
+
+      201,   34,   22,   21,   23,   24,   28,   25,   20,   22,
+       26,   22,   20,   36,   24,   72,   23,   77,   25,   29,
+       31,   27,   21,   25,   32,   27,   33,   34,   35,  198,
+       36,   35,   32,   37,   33,   38,   39,  195,   33,   36,
+       72,   33,   77,   35,   35,   56,   57,   58,   59,   61,
+       32,   63,   33,   65,   35,   36,   62,   35,   32,   37,
+       33,   38,   39,   33,   62,   66,   33,   67,   35,   35,
+       68,   56,   57,   58,   59,   61,   64,   63,   69,   65,
+       70,   71,   62,   64,   73,   74,   75,   76,   78,   62,
+       79,   66,   81,   67,   82,   83,   68,   84,   85,   96,
+
+       74,   74,   64,   86,   69,   84,   70,   71,   64,   87,
+       73,   74,   75,   76,   78,   88,   79,   89,   81,   82,
+       90,   83,   91,   84,   85,   74,   74,   92,  100,   86,
+       84,   97,  101,  102,  103,   87,  104,  105,  106,  107,
+      108,   88,   89,  109,  110,  111,   90,  112,   91,  113,
+      114,  115,  116,   92,  100,  117,   97,  101,  118,  102,
+      103,  119,  104,  105,  106,  107,  108,  120,  109,  110,
+      124,  111,  125,  112,  113,  126,  114,  115,  116,  127,
+      132,  117,  129,  130,  118,  133,  134,  119,  135,  136,
+      137,  138,  140,  120,  141,  142,  124,  143,  125,  146,
+
+      148,  126,  149,  151,  152,  127,  132,  129,  130,  154,
+      155,  133,  134,  135,  136,  137,  159,  138,  140,  141,
+      142,  160,  143,  161,  162,  146,  148,  149,  164,  151,
+      152,  165,   51,  167,  154,  155,  168,  169,   45,  172,
+      174,  159,  175,  176,  180,  185,  160,  182,  184,  161,
+      162,  186,  187,  189,  164,  188,  190,  165,  167,  199,
+      205,  206,  168,  169,  172,  205,  174,  207,  175,  176,
+      180,  185,  182,  184,  208,  209,  186,  210,  187,  189,
+      188,  190,  211,  213,  216,  199,  205,  206,  214,  215,
+      205,  217,  220,  207,  218,  219,  221,  222,  223,  225,
+
+      208,  209,  226,  210,  227,  228,  229,  231,  211,  213,
+      216,  230,  232,  214,  215,  233,  234,  217,  220,  218,
+      219,  236,  221,  222,  223,  225,  237,   42,  226,  239,
+      227,  228,  229,  231,   41,   19,  230,   16,  232,   15,
+       13,  233,  234,   11,   10,    9,    7,  236,    5,    4,
+        3,    0,  237,    0,  239,  242,  242,  242,  242,  243,
+      243,  243,  243,  245,    0,  245,  245,  246,  246,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -677,9 +689,9 @@ char *yytext;
         } \
     }
 
-#line 681 "lex.yy.c"
+#line 693 "lex.yy.c"
 
-#line 683 "lex.yy.c"
+#line 695 "lex.yy.c"
 
 #define INITIAL 0
 #define STATE_COMMENT 1
@@ -913,11 +925,11 @@ YY_DECL
 		}
 
 	{
-#line 46 "lex.l"
+#line 47 "lex.l"
 
-#line 48 "lex.l"
+#line 49 "lex.l"
     /* block comment */
-#line 921 "lex.yy.c"
+#line 933 "lex.yy.c"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -944,13 +956,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 222 )
+				if ( yy_current_state >= 242 )
 					yy_c = yy_meta[yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 434 );
+		while ( yy_base[yy_current_state] != 470 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -976,344 +988,372 @@ do_action:	/* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 49 "lex.l"
+#line 50 "lex.l"
 { BEGIN(STATE_COMMENT); }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 50 "lex.l"
+#line 51 "lex.l"
 { BEGIN(INITIAL); }
 	YY_BREAK
 case 3:
 /* rule 3 can match eol */
 YY_RULE_SETUP
-#line 51 "lex.l"
+#line 52 "lex.l"
 { /* ignore the text of the comment */ }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 52 "lex.l"
+#line 53 "lex.l"
 { /* ignore *'s that aren't part of */ }
 	YY_BREAK
 /* single line comment */
 case 5:
 YY_RULE_SETUP
-#line 54 "lex.l"
+#line 55 "lex.l"
 { /* ignore single line comment */ }
 	YY_BREAK
 /* white space and new line */
 case 6:
 YY_RULE_SETUP
-#line 56 "lex.l"
+#line 57 "lex.l"
 { /* ignore white space */ }
 	YY_BREAK
 case 7:
 /* rule 7 can match eol */
 YY_RULE_SETUP
-#line 57 "lex.l"
+#line 58 "lex.l"
 { /* ignore new line */ }
 	YY_BREAK
 /* keywords */
 case 8:
 YY_RULE_SETUP
-#line 59 "lex.l"
+#line 60 "lex.l"
 { return SHOW; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 60 "lex.l"
+#line 61 "lex.l"
 { return TXN_BEGIN; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 61 "lex.l"
+#line 62 "lex.l"
 { return TXN_COMMIT; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 62 "lex.l"
+#line 63 "lex.l"
 { return TXN_ABORT; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 63 "lex.l"
+#line 64 "lex.l"
 { return TXN_ROLLBACK; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 64 "lex.l"
+#line 65 "lex.l"
 { return TABLES; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 65 "lex.l"
+#line 66 "lex.l"
 { return CREATE; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 66 "lex.l"
+#line 67 "lex.l"
 { return TABLE; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 67 "lex.l"
+#line 68 "lex.l"
 { return DROP; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 68 "lex.l"
+#line 69 "lex.l"
 { return DESC; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 69 "lex.l"
+#line 70 "lex.l"
 { return INSERT; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 70 "lex.l"
+#line 71 "lex.l"
 { return INTO; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 71 "lex.l"
+#line 72 "lex.l"
 { return VALUES; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 72 "lex.l"
+#line 73 "lex.l"
 { return DELETE; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 73 "lex.l"
+#line 74 "lex.l"
 { return FROM; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 74 "lex.l"
+#line 75 "lex.l"
 { return WHERE; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 75 "lex.l"
+#line 76 "lex.l"
 { return UPDATE; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 76 "lex.l"
+#line 77 "lex.l"
 { return SET; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 77 "lex.l"
+#line 78 "lex.l"
 { return SELECT; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 78 "lex.l"
+#line 79 "lex.l"
 { return INT; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 79 "lex.l"
+#line 80 "lex.l"
 { return CHAR; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 80 "lex.l"
+#line 81 "lex.l"
 { return FLOAT; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 81 "lex.l"
+#line 82 "lex.l"
 { return INDEX; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 82 "lex.l"
+#line 83 "lex.l"
 { return AND; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 83 "lex.l"
+#line 84 "lex.l"
 {return JOIN;}
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 84 "lex.l"
+#line 85 "lex.l"
 { return EXIT; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 85 "lex.l"
+#line 86 "lex.l"
 { return HELP; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 86 "lex.l"
+#line 87 "lex.l"
 { return ORDER; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 87 "lex.l"
+#line 88 "lex.l"
 {  return BY;  }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 88 "lex.l"
+#line 89 "lex.l"
 { return ASC; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 89 "lex.l"
+#line 90 "lex.l"
 { return ENABLE_NESTLOOP; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 90 "lex.l"
+#line 91 "lex.l"
 { return ENABLE_SORTMERGE; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 91 "lex.l"
+#line 92 "lex.l"
 { return COUNT; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 92 "lex.l"
+#line 93 "lex.l"
 { return MAX; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 93 "lex.l"
+#line 94 "lex.l"
 { return MIN; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 94 "lex.l"
+#line 95 "lex.l"
 { return SUM; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 95 "lex.l"
+#line 96 "lex.l"
 { return AS; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 96 "lex.l"
+#line 97 "lex.l"
 { return GROUP; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 97 "lex.l"
+#line 98 "lex.l"
 { return HAVING; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 98 "lex.l"
+#line 99 "lex.l"
 { return IN; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 99 "lex.l"
+#line 100 "lex.l"
 { return STATIC_CHECKPOINT; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 100 "lex.l"
+#line 101 "lex.l"
+{ return LOAD; }
+	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 102 "lex.l"
+{ return OUTPUT_FILE; }
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 103 "lex.l"
+{ return ON; }
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 104 "lex.l"
+{ return OFF; }
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 105 "lex.l"
 { 
     yylval->sv_bool = true;
     return VALUE_BOOL; 
 }
 	YY_BREAK
-case 50:
+case 54:
 YY_RULE_SETUP
-#line 104 "lex.l"
+#line 109 "lex.l"
 {
     yylval->sv_bool = false;
     return VALUE_BOOL;
 }
 	YY_BREAK
 /* operators */
-case 51:
+case 55:
 YY_RULE_SETUP
-#line 109 "lex.l"
+#line 114 "lex.l"
 { return GEQ; }
 	YY_BREAK
-case 52:
+case 56:
 YY_RULE_SETUP
-#line 110 "lex.l"
+#line 115 "lex.l"
 { return LEQ; }
 	YY_BREAK
-case 53:
+case 57:
 YY_RULE_SETUP
-#line 111 "lex.l"
+#line 116 "lex.l"
 { return NEQ; }
 	YY_BREAK
-case 54:
+case 58:
 YY_RULE_SETUP
-#line 112 "lex.l"
+#line 117 "lex.l"
 { return NEQ; }
 	YY_BREAK
-case 55:
+case 59:
 YY_RULE_SETUP
-#line 113 "lex.l"
+#line 118 "lex.l"
 { return yytext[0]; }
 	YY_BREAK
 /* id */
-case 56:
+case 60:
 YY_RULE_SETUP
-#line 115 "lex.l"
+#line 120 "lex.l"
 {
     yylval->sv_str = yytext;
     return IDENTIFIER;
 }
 	YY_BREAK
 /* literals */
-case 57:
+case 61:
 YY_RULE_SETUP
-#line 120 "lex.l"
+#line 125 "lex.l"
 {
     yylval->sv_int = atoi(yytext);
     return VALUE_INT;
 }
 	YY_BREAK
-case 58:
+case 62:
 YY_RULE_SETUP
-#line 124 "lex.l"
+#line 129 "lex.l"
 {
     yylval->sv_float = atof(yytext);
     return VALUE_FLOAT;
 }
 	YY_BREAK
-case 59:
-/* rule 59 can match eol */
+case 63:
+/* rule 63 can match eol */
 YY_RULE_SETUP
-#line 128 "lex.l"
+#line 133 "lex.l"
 {
     yylval->sv_str = std::string(yytext + 1, strlen(yytext) - 2);
     return VALUE_STRING;
 }
 	YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 137 "lex.l"
+{
+    yylval->sv_str = yytext;
+    return FILE_PATH;
+}
+	YY_BREAK
 /* EOF */
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(STATE_COMMENT):
-#line 133 "lex.l"
+#line 142 "lex.l"
 { return T_EOF; }
 	YY_BREAK
 /* unexpected char */
-case 60:
+case 65:
 YY_RULE_SETUP
-#line 135 "lex.l"
+#line 144 "lex.l"
 { std::cerr << "Lexer Error: unexpected character " << yytext[0] << std::endl; }
 	YY_BREAK
-case 61:
+case 66:
 YY_RULE_SETUP
-#line 136 "lex.l"
+#line 145 "lex.l"
 ECHO;
 	YY_BREAK
-#line 1317 "lex.yy.c"
+#line 1357 "lex.yy.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -1608,7 +1648,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 222 )
+			if ( yy_current_state >= 242 )
 				yy_c = yy_meta[yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1636,11 +1676,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 222 )
+		if ( yy_current_state >= 242 )
 			yy_c = yy_meta[yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-	yy_is_jam = (yy_current_state == 221);
+	yy_is_jam = (yy_current_state == 241);
 
 		return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2279,6 +2319,6 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 136 "lex.l"
+#line 145 "lex.l"
 
 
diff --git a/src/parser/lex.yy.cpp b/src/parser/lex.yy.cpp
index 8c726eb24b0b2f89ca3aa5d92cc0f526759cd058..e69f209e40221c9dfaf6b18b30ded20100ce30e2 100644
--- a/src/parser/lex.yy.cpp
+++ b/src/parser/lex.yy.cpp
@@ -379,8 +379,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 61
-#define YY_END_OF_BUFFER 62
+#define YY_NUM_RULES 66
+#define YY_END_OF_BUFFER 67
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -388,32 +388,34 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[222] =
+static const flex_int16_t yy_accept[242] =
     {   0,
-        0,    0,    0,    0,   62,   60,    6,    7,    7,   60,
-       60,   55,   60,   60,   60,   57,   55,   55,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,    3,    4,    6,
-        7,   54,    0,   59,   57,    5,    1,   58,   52,   53,
-       51,   56,   56,   56,   44,   56,   36,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       47,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,    2,    5,   58,   56,   31,
-       37,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   27,
-       56,   41,   42,   56,   56,   56,   25,   56,   56,   43,
-       56,   56,   56,   56,   56,   56,   56,   28,   56,   56,
-       56,   56,   17,   16,   56,   33,   56,   56,   22,   56,
-       56,   34,   56,   56,   19,   32,   56,   56,   56,    8,
-       56,   56,   49,   56,   56,   56,   11,    9,   56,   40,
-       56,   56,   56,   50,   29,   45,   56,   30,   56,   35,
-       56,   56,   56,   15,   56,   56,   23,   10,   14,   21,
-       56,   46,   18,   56,   26,   56,   13,   24,   20,   56,
-       56,   56,   56,   56,   12,   56,   56,   56,   56,   56,
-
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   38,   56,   56,   39,   56,   48,
+        0,    0,    0,    0,   67,   65,    6,    7,    7,   65,
+       65,   59,   65,   65,   59,   65,   61,   59,   59,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,    3,
+        4,    6,    7,   58,    0,   63,   61,    5,    0,    1,
+       62,   56,   57,   55,   60,   60,   60,   44,   60,   36,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   47,   60,   60,   60,   60,   60,   51,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,    2,    5,   64,   62,   60,   31,   37,   60,
+
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   27,   60,   60,
+       41,   42,   52,   60,   60,   60,   60,   25,   60,   60,
+       43,   60,   60,   60,   60,   60,   60,   60,   28,   60,
+       60,   60,   60,   17,   16,   60,   33,   60,   60,   22,
+       60,   60,   34,   60,   60,   19,   32,   49,   60,   60,
+       60,   60,    8,   60,   60,   53,   60,   60,   60,   11,
+        9,   60,   40,   60,   60,   60,   54,   29,   45,   60,
+       30,   60,   35,   60,   60,   60,   60,   15,   60,   60,
+       23,   10,   14,   21,   60,   46,   18,   60,   60,   26,
+
+       60,   13,   24,   20,   60,   60,   60,   60,   60,   60,
+       60,   12,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   50,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   38,   60,   60,   39,   60,   48,
         0
     } ;
 
@@ -452,133 +454,140 @@ static const YY_CHAR yy_ec[256] =
 static const YY_CHAR yy_meta[70] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    3,    1,    1,    1,    1,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3
+        1,    3,    3,    3,    4,    1,    1,    1,    1,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4
     } ;
 
-static const flex_int16_t yy_base[226] =
+static const flex_int16_t yy_base[247] =
     {   0,
-        0,    0,  407,  404,  410,  434,  407,  434,  404,  387,
-      397,  434,  386,   58,  349,   59,   57,  281,   50,   54,
-       50,   55,   47,   62,   49,   76,   48,   60,    0,  101,
-       52,   67,  101,   96,   83,  110,  104,  434,  270,  239,
-      434,  434,  177,  434,  119,    0,  434,  124,  434,  434,
-      434,    0,  101,  113,  115,  112,    0,  123,  113,  122,
-      129,  114,  129,  122,  128,  134,  136,  139,  111,  148,
-      159,  152,  141,  148,  164,  157,  162,  155,  170,  159,
-      174,  160,  179,  172,  180,  434,    0,   87,  173,    0,
-        0,  183,  181,  180,  187,  204,  203,  209,  197,  212,
-
-      197,  201,  214,  208,  202,  216,  210,  223,  224,  215,
-      218,    0,    0,  228,  223,  231,    0,  220,  224,    0,
-      225,  241,  248,  232,  239,  240,  236,    0,  255,  246,
-      247,  250,    0,    0,  259,    0,  268,  257,    0,  258,
-      265,    0,  257,  265,    0,    0,  266,  284,  284,    0,
-      279,  284,    0,  273,  289,  291,    0,    0,  278,    0,
-      296,  298,  299,    0,    0,    0,  300,    0,  290,    0,
-      310,  296,  314,  300,  316,  305,    0,    0,    0,    0,
-       50,    0,    0,  322,    0,   46,    0,    0,    0,  312,
-      317,  329,  329,  321,    0,  330,  321,  324,  340,  328,
-
-      330,  343,  341,  342,  346,  344,  356,  347,  351,  350,
-      354,  354,  367,  367,    0,  372,  364,    0,  360,    0,
-      434,  424,  427,   82,  430
+        0,    0,  442,  441,  449,  470,  445,  470,  443,  427,
+      438,  470,  426,   58,  427,  429,   59,   57,  418,   50,
+       54,   50,   55,   47,   62,   49,   76,   48,   60,    0,
+       61,  105,  102,   68,  105,   94,   99,  116,  110,  470,
+      421,  426,  470,  470,  333,  470,   76,    0,    0,  470,
+      318,  470,  470,  470,    0,  112,  124,  126,  123,    0,
+      130,  125,  128,  146,  120,  146,  140,  140,  145,  147,
+      148,   75,  154,  163,  159,  168,   75,  156,  166,    0,
+      170,  156,  165,  167,  165,  184,  178,  195,  178,  198,
+      192,  204,  470,    0,    0,  185,  195,    0,    0,  201,
+
+      196,  202,  202,  217,  214,  217,  205,  220,  205,  207,
+      226,  216,  210,  223,  217,  229,  232,  225,  229,  245,
+        0,    0,    0,  247,  238,  245,  256,    0,  241,  245,
+        0,  250,  262,  267,  249,  253,  252,  259,    0,  265,
+      256,  257,  259,    0,    0,  269,    0,  277,  264,    0,
+      269,  272,    0,  267,  274,    0,    0,    0,  280,  282,
+      303,  303,    0,  301,  308,    0,  295,  313,  314,    0,
+        0,  301,    0,  317,  319,  320,    0,    0,    0,  319,
+        0,  309,    0,  310,  326,  313,  331,  318,  330,  319,
+        0,    0,    0,    0,   93,    0,    0,   85,  338,    0,
+
+       56,    0,    0,    0,  328,  337,  338,  353,  352,  344,
+      355,    0,  357,  351,  353,  354,  368,  356,  357,  369,
+      375,  367,  367,    0,  370,  369,  381,  371,  373,  375,
+      374,  378,  390,  389,    0,  398,  394,    0,  391,    0,
+      470,  455,  459,   81,  463,  465
     } ;
 
-static const flex_int16_t yy_def[226] =
+static const flex_int16_t yy_def[247] =
     {   0,
-      221,    1,  222,  222,  221,  221,  221,  221,  221,  221,
-      223,  221,  221,  221,  221,  221,  221,  221,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  221,  221,  221,
-      221,  221,  223,  221,  221,  225,  221,  221,  221,  221,
-      221,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  221,  225,  221,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-        0,  221,  221,  221,  221
+      241,    1,  242,  242,  241,  241,  241,  241,  241,  241,
+      243,  241,  241,  241,  241,  241,  241,  241,  241,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  241,
+      241,  241,  241,  241,  243,  241,  241,  245,  246,  241,
+      241,  241,  241,  241,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  241,  245,  246,  241,  244,  244,  244,  244,
+
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+        0,  241,  241,  241,  241,  241
     } ;
 
-static const flex_int16_t yy_nxt[504] =
+static const flex_int16_t yy_nxt[540] =
     {   0,
         6,    7,    8,    9,   10,   11,   12,   12,   12,   13,
-       12,   14,   12,   15,   16,   12,   17,   12,   18,   19,
-       20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
-       29,   30,   29,   31,   29,   29,   32,   33,   34,   35,
-       36,   37,   29,   29,    6,   19,   20,   21,   22,   23,
-       24,   25,   26,   27,   28,   29,   29,   30,   29,   31,
-       29,   32,   33,   34,   35,   36,   37,   29,   29,   46,
-       53,   48,   45,   45,   49,   50,   58,   56,   61,   63,
-       71,   65,   54,   59,   52,   68,   60,   55,   75,   64,
-      192,   62,   66,   72,  190,   69,   53,   57,   67,   70,
-
-       76,   88,   58,   56,   61,   63,   71,   65,   54,   59,
-       68,   60,   55,   75,   64,   81,   62,   83,   66,   72,
-       73,   69,   57,   67,   77,   70,   76,   78,   74,   84,
-       85,   48,   82,   45,   89,   90,   91,   92,   88,   79,
-       80,   81,   93,   83,   94,   96,   73,   99,  100,  101,
-       77,  106,   95,   78,   74,   84,   85,   82,  102,   97,
-       89,   90,   91,   92,   79,   80,   98,  103,   93,  104,
-       94,   96,  105,   99,  100,  101,  106,   95,  107,  111,
-      113,  108,   44,  112,  102,   97,  114,  115,  118,  119,
-      120,   98,  116,  103,  121,  104,  109,  110,  105,  122,
-
-      117,  123,  124,  125,  107,  111,  113,  108,  112,  126,
-      127,  129,  114,  115,  118,  119,  120,  128,  116,  130,
-      121,  109,  110,  131,  122,  117,  132,  123,  124,  125,
-      133,  134,  135,  138,  126,  136,  127,  129,  137,  139,
-       40,  140,  128,  141,  142,  130,  143,  144,  145,  131,
-      146,  147,  132,  148,  149,  152,  133,  134,  135,  138,
-      136,  150,  151,  137,  153,  139,  140,  154,  158,  141,
-      142,  155,  143,  144,  145,  156,  146,  147,  157,  148,
-      149,  152,  159,   86,  160,  161,  150,  151,  162,  163,
-      153,  164,  166,  154,  158,  165,  155,  167,   51,  168,
-
-      156,  169,  170,  157,  171,  172,  173,  174,  159,  160,
-      161,  175,  176,  162,  177,  163,  178,  164,  166,  179,
-      165,  180,  181,  167,  168,  182,  169,  170,  183,  184,
-      171,  172,  173,  174,  185,  186,  175,  187,  176,  188,
-      177,  178,  189,  191,  193,  179,  195,  180,  181,  194,
-      196,  182,  197,  183,  198,  184,  199,   47,  200,  185,
-      201,  186,  187,  202,  205,  188,  203,  189,  204,  191,
-      193,  206,  195,  207,  194,  208,  196,  209,  197,  210,
-      198,  211,  199,  200,  212,  201,  213,  214,  215,  202,
-      205,  203,  216,  204,  217,  218,  219,  206,  220,  207,
-
-       45,  208,   44,  209,   42,  210,   41,  211,   40,  221,
-      212,  213,   39,  214,  215,   39,  221,  221,  216,  221,
-      217,  218,  219,  220,   38,   38,   38,   43,   43,   43,
-       87,  221,   87,    5,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-
-      221,  221,  221
+       12,   14,   15,   16,   17,   12,   18,   12,   19,   20,
+       21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
+       31,   32,   30,   33,   30,   30,   34,   35,   36,   37,
+       38,   39,   30,   30,    6,   20,   21,   22,   23,   24,
+       25,   26,   27,   28,   29,   30,   31,   32,   30,   33,
+       30,   34,   35,   36,   37,   38,   39,   30,   30,   48,
+       56,   51,   47,   47,   52,   53,   61,   59,   64,   66,
+       74,   68,   57,   62,   55,   71,   63,   58,   51,   67,
+       47,   65,   69,   75,   76,   72,   56,   60,   70,   73,
+
+      208,   83,   61,   59,   64,   66,   74,   68,   57,   62,
+       71,   63,   58,   88,   67,  114,   65,  121,   69,   75,
+       76,   72,   60,   70,   77,   73,   79,   83,   84,  206,
+       89,   85,   78,   90,   80,   91,   92,  205,   81,   88,
+      114,   82,  121,   86,   87,   97,   98,   99,  100,  101,
+       77,  104,   79,  107,   84,   89,  102,   85,   78,   90,
+       80,   91,   92,   81,  103,  108,   82,  109,   86,   87,
+      110,   97,   98,   99,  100,  101,  105,  104,  111,  107,
+      112,  113,  102,  106,  115,  116,  119,  120,  122,  103,
+      123,  108,  124,  109,  125,  126,  110,  127,  129,   96,
+
+      117,  118,  105,  130,  111,  128,  112,  113,  106,  131,
+      115,  116,  119,  120,  122,  132,  123,  133,  124,  125,
+      134,  126,  135,  127,  129,  117,  118,  136,  138,  130,
+      128,  137,  139,  140,  141,  131,  142,  143,  144,  145,
+      146,  132,  133,  147,  148,  149,  134,  150,  135,  151,
+      152,  153,  154,  136,  138,  155,  137,  139,  156,  140,
+      141,  157,  142,  143,  144,  145,  146,  158,  147,  148,
+      159,  149,  160,  150,  151,  161,  152,  153,  154,  162,
+      165,  155,  163,  164,  156,  166,  167,  157,  168,  169,
+      170,  171,  172,  158,  173,  174,  159,  175,  160,  176,
+
+      177,  161,  178,  179,  180,  162,  165,  163,  164,  181,
+      182,  166,  167,  168,  169,  170,  183,  171,  172,  173,
+      174,  184,  175,  185,  186,  176,  177,  178,  187,  179,
+      180,  188,   96,  189,  181,  182,  190,  191,   46,  192,
+      193,  183,  194,  195,  196,  199,  184,  197,  198,  185,
+      186,  200,  201,  203,  187,  202,  204,  188,  189,  207,
+      209,  211,  190,  191,  192,  210,  193,  212,  194,  195,
+      196,  199,  197,  198,  213,  214,  200,  215,  201,  203,
+      202,  204,  216,  217,  220,  207,  209,  211,  218,  219,
+      210,  221,  224,  212,  222,  223,  225,  226,  227,  228,
+
+      213,  214,  229,  215,  230,  231,  232,  234,  216,  217,
+      220,  233,  235,  218,  219,  236,  237,  221,  224,  222,
+      223,  238,  225,  226,  227,  228,  239,   42,  229,  240,
+      230,  231,  232,  234,   93,   54,  233,   50,  235,   49,
+       47,  236,  237,   46,   44,   43,   42,  238,  241,   41,
+       41,  241,  239,  241,  240,   40,   40,   40,   40,   45,
+       45,   45,   45,   94,  241,   94,   94,   95,   95,    5,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241
     } ;
 
-static const flex_int16_t yy_chk[504] =
+static const flex_int16_t yy_chk[540] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -587,55 +596,58 @@ static const flex_int16_t yy_chk[504] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,   14,
-       19,   16,   14,   16,   17,   17,   21,   20,   22,   23,
-       27,   24,   19,   21,  224,   25,   21,   19,   31,   23,
-      186,   22,   24,   28,  181,   26,   19,   20,   24,   26,
-
-       32,   88,   21,   20,   22,   23,   27,   24,   19,   21,
-       25,   21,   19,   31,   23,   34,   22,   35,   24,   28,
-       30,   26,   20,   24,   33,   26,   32,   33,   30,   36,
-       37,   45,   34,   45,   53,   54,   55,   56,   48,   33,
-       33,   34,   58,   35,   59,   60,   30,   62,   63,   64,
-       33,   69,   59,   33,   30,   36,   37,   34,   65,   61,
-       53,   54,   55,   56,   33,   33,   61,   66,   58,   67,
-       59,   60,   68,   62,   63,   64,   69,   59,   70,   72,
-       74,   71,   43,   73,   65,   61,   75,   76,   78,   79,
-       80,   61,   77,   66,   81,   67,   71,   71,   68,   82,
-
-       77,   83,   84,   85,   70,   72,   74,   71,   73,   89,
-       92,   94,   75,   76,   78,   79,   80,   93,   77,   95,
-       81,   71,   71,   96,   82,   77,   97,   83,   84,   85,
-       98,   99,  100,  103,   89,  101,   92,   94,  102,  104,
-       40,  105,   93,  106,  107,   95,  108,  109,  110,   96,
-      111,  114,   97,  115,  116,  121,   98,   99,  100,  103,
-      101,  118,  119,  102,  122,  104,  105,  123,  127,  106,
-      107,  124,  108,  109,  110,  125,  111,  114,  126,  115,
-      116,  121,  129,   39,  130,  131,  118,  119,  132,  135,
-      122,  137,  140,  123,  127,  138,  124,  141,   18,  143,
-
-      125,  144,  147,  126,  148,  149,  151,  152,  129,  130,
-      131,  154,  155,  132,  156,  135,  159,  137,  140,  161,
-      138,  162,  163,  141,  143,  167,  144,  147,  169,  171,
-      148,  149,  151,  152,  172,  173,  154,  174,  155,  175,
-      156,  159,  176,  184,  190,  161,  191,  162,  163,  190,
-      192,  167,  193,  169,  194,  171,  196,   15,  197,  172,
-      198,  173,  174,  199,  202,  175,  200,  176,  201,  184,
-      190,  203,  191,  204,  190,  205,  192,  206,  193,  207,
-      194,  208,  196,  197,  209,  198,  210,  211,  212,  199,
-      202,  200,  213,  201,  214,  216,  217,  203,  219,  204,
-
-       13,  205,   11,  206,   10,  207,    9,  208,    7,    5,
-      209,  210,    4,  211,  212,    3,    0,    0,  213,    0,
-      214,  216,  217,  219,  222,  222,  222,  223,  223,  223,
-      225,    0,  225,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
-
-      221,  221,  221
+       20,   17,   14,   17,   18,   18,   22,   21,   23,   24,
+       28,   25,   20,   22,  244,   26,   22,   20,   47,   24,
+       47,   23,   25,   29,   31,   27,   20,   21,   25,   27,
+
+      201,   34,   22,   21,   23,   24,   28,   25,   20,   22,
+       26,   22,   20,   36,   24,   72,   23,   77,   25,   29,
+       31,   27,   21,   25,   32,   27,   33,   34,   35,  198,
+       36,   35,   32,   37,   33,   38,   39,  195,   33,   36,
+       72,   33,   77,   35,   35,   56,   57,   58,   59,   61,
+       32,   63,   33,   65,   35,   36,   62,   35,   32,   37,
+       33,   38,   39,   33,   62,   66,   33,   67,   35,   35,
+       68,   56,   57,   58,   59,   61,   64,   63,   69,   65,
+       70,   71,   62,   64,   73,   74,   75,   76,   78,   62,
+       79,   66,   81,   67,   82,   83,   68,   84,   85,   96,
+
+       74,   74,   64,   86,   69,   84,   70,   71,   64,   87,
+       73,   74,   75,   76,   78,   88,   79,   89,   81,   82,
+       90,   83,   91,   84,   85,   74,   74,   92,  100,   86,
+       84,   97,  101,  102,  103,   87,  104,  105,  106,  107,
+      108,   88,   89,  109,  110,  111,   90,  112,   91,  113,
+      114,  115,  116,   92,  100,  117,   97,  101,  118,  102,
+      103,  119,  104,  105,  106,  107,  108,  120,  109,  110,
+      124,  111,  125,  112,  113,  126,  114,  115,  116,  127,
+      132,  117,  129,  130,  118,  133,  134,  119,  135,  136,
+      137,  138,  140,  120,  141,  142,  124,  143,  125,  146,
+
+      148,  126,  149,  151,  152,  127,  132,  129,  130,  154,
+      155,  133,  134,  135,  136,  137,  159,  138,  140,  141,
+      142,  160,  143,  161,  162,  146,  148,  149,  164,  151,
+      152,  165,   51,  167,  154,  155,  168,  169,   45,  172,
+      174,  159,  175,  176,  180,  185,  160,  182,  184,  161,
+      162,  186,  187,  189,  164,  188,  190,  165,  167,  199,
+      205,  206,  168,  169,  172,  205,  174,  207,  175,  176,
+      180,  185,  182,  184,  208,  209,  186,  210,  187,  189,
+      188,  190,  211,  213,  216,  199,  205,  206,  214,  215,
+      205,  217,  220,  207,  218,  219,  221,  222,  223,  225,
+
+      208,  209,  226,  210,  227,  228,  229,  231,  211,  213,
+      216,  230,  232,  214,  215,  233,  234,  217,  220,  218,
+      219,  236,  221,  222,  223,  225,  237,   42,  226,  239,
+      227,  228,  229,  231,   41,   19,  230,   16,  232,   15,
+       13,  233,  234,   11,   10,    9,    7,  236,    5,    4,
+        3,    0,  237,    0,  239,  242,  242,  242,  242,  243,
+      243,  243,  243,  245,    0,  245,  245,  246,  246,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  241,  241,  241,  241,  241,  241
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -677,9 +689,9 @@ char *yytext;
         } \
     }
 
-#line 681 "lex.yy.cpp"
+#line 693 "lex.yy.cpp"
 
-#line 683 "lex.yy.cpp"
+#line 695 "lex.yy.cpp"
 
 #define INITIAL 0
 #define STATE_COMMENT 1
@@ -913,11 +925,11 @@ YY_DECL
 		}
 
 	{
-#line 46 "lex.l"
+#line 47 "lex.l"
 
-#line 48 "lex.l"
+#line 49 "lex.l"
     /* block comment */
-#line 921 "lex.yy.cpp"
+#line 933 "lex.yy.cpp"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -944,13 +956,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 222 )
+				if ( yy_current_state >= 242 )
 					yy_c = yy_meta[yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 434 );
+		while ( yy_base[yy_current_state] != 470 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -976,344 +988,372 @@ do_action:	/* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 49 "lex.l"
+#line 50 "lex.l"
 { BEGIN(STATE_COMMENT); }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 50 "lex.l"
+#line 51 "lex.l"
 { BEGIN(INITIAL); }
 	YY_BREAK
 case 3:
 /* rule 3 can match eol */
 YY_RULE_SETUP
-#line 51 "lex.l"
+#line 52 "lex.l"
 { /* ignore the text of the comment */ }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 52 "lex.l"
+#line 53 "lex.l"
 { /* ignore *'s that aren't part of */ }
 	YY_BREAK
 /* single line comment */
 case 5:
 YY_RULE_SETUP
-#line 54 "lex.l"
+#line 55 "lex.l"
 { /* ignore single line comment */ }
 	YY_BREAK
 /* white space and new line */
 case 6:
 YY_RULE_SETUP
-#line 56 "lex.l"
+#line 57 "lex.l"
 { /* ignore white space */ }
 	YY_BREAK
 case 7:
 /* rule 7 can match eol */
 YY_RULE_SETUP
-#line 57 "lex.l"
+#line 58 "lex.l"
 { /* ignore new line */ }
 	YY_BREAK
 /* keywords */
 case 8:
 YY_RULE_SETUP
-#line 59 "lex.l"
+#line 60 "lex.l"
 { return SHOW; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 60 "lex.l"
+#line 61 "lex.l"
 { return TXN_BEGIN; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 61 "lex.l"
+#line 62 "lex.l"
 { return TXN_COMMIT; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 62 "lex.l"
+#line 63 "lex.l"
 { return TXN_ABORT; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 63 "lex.l"
+#line 64 "lex.l"
 { return TXN_ROLLBACK; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 64 "lex.l"
+#line 65 "lex.l"
 { return TABLES; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 65 "lex.l"
+#line 66 "lex.l"
 { return CREATE; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 66 "lex.l"
+#line 67 "lex.l"
 { return TABLE; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 67 "lex.l"
+#line 68 "lex.l"
 { return DROP; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 68 "lex.l"
+#line 69 "lex.l"
 { return DESC; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 69 "lex.l"
+#line 70 "lex.l"
 { return INSERT; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 70 "lex.l"
+#line 71 "lex.l"
 { return INTO; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 71 "lex.l"
+#line 72 "lex.l"
 { return VALUES; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 72 "lex.l"
+#line 73 "lex.l"
 { return DELETE; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 73 "lex.l"
+#line 74 "lex.l"
 { return FROM; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 74 "lex.l"
+#line 75 "lex.l"
 { return WHERE; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 75 "lex.l"
+#line 76 "lex.l"
 { return UPDATE; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 76 "lex.l"
+#line 77 "lex.l"
 { return SET; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 77 "lex.l"
+#line 78 "lex.l"
 { return SELECT; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 78 "lex.l"
+#line 79 "lex.l"
 { return INT; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 79 "lex.l"
+#line 80 "lex.l"
 { return CHAR; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 80 "lex.l"
+#line 81 "lex.l"
 { return FLOAT; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 81 "lex.l"
+#line 82 "lex.l"
 { return INDEX; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 82 "lex.l"
+#line 83 "lex.l"
 { return AND; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 83 "lex.l"
+#line 84 "lex.l"
 {return JOIN;}
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 84 "lex.l"
+#line 85 "lex.l"
 { return EXIT; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 85 "lex.l"
+#line 86 "lex.l"
 { return HELP; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 86 "lex.l"
+#line 87 "lex.l"
 { return ORDER; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 87 "lex.l"
+#line 88 "lex.l"
 {  return BY;  }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 88 "lex.l"
+#line 89 "lex.l"
 { return ASC; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 89 "lex.l"
+#line 90 "lex.l"
 { return ENABLE_NESTLOOP; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 90 "lex.l"
+#line 91 "lex.l"
 { return ENABLE_SORTMERGE; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 91 "lex.l"
+#line 92 "lex.l"
 { return COUNT; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 92 "lex.l"
+#line 93 "lex.l"
 { return MAX; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 93 "lex.l"
+#line 94 "lex.l"
 { return MIN; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 94 "lex.l"
+#line 95 "lex.l"
 { return SUM; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 95 "lex.l"
+#line 96 "lex.l"
 { return AS; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 96 "lex.l"
+#line 97 "lex.l"
 { return GROUP; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 97 "lex.l"
+#line 98 "lex.l"
 { return HAVING; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 98 "lex.l"
+#line 99 "lex.l"
 { return IN; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 99 "lex.l"
+#line 100 "lex.l"
 { return STATIC_CHECKPOINT; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 100 "lex.l"
+#line 101 "lex.l"
+{ return LOAD; }
+	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 102 "lex.l"
+{ return OUTPUT_FILE; }
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 103 "lex.l"
+{ return ON; }
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 104 "lex.l"
+{ return OFF; }
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 105 "lex.l"
 { 
     yylval->sv_bool = true;
     return VALUE_BOOL; 
 }
 	YY_BREAK
-case 50:
+case 54:
 YY_RULE_SETUP
-#line 104 "lex.l"
+#line 109 "lex.l"
 {
     yylval->sv_bool = false;
     return VALUE_BOOL;
 }
 	YY_BREAK
 /* operators */
-case 51:
+case 55:
 YY_RULE_SETUP
-#line 109 "lex.l"
+#line 114 "lex.l"
 { return GEQ; }
 	YY_BREAK
-case 52:
+case 56:
 YY_RULE_SETUP
-#line 110 "lex.l"
+#line 115 "lex.l"
 { return LEQ; }
 	YY_BREAK
-case 53:
+case 57:
 YY_RULE_SETUP
-#line 111 "lex.l"
+#line 116 "lex.l"
 { return NEQ; }
 	YY_BREAK
-case 54:
+case 58:
 YY_RULE_SETUP
-#line 112 "lex.l"
+#line 117 "lex.l"
 { return NEQ; }
 	YY_BREAK
-case 55:
+case 59:
 YY_RULE_SETUP
-#line 113 "lex.l"
+#line 118 "lex.l"
 { return yytext[0]; }
 	YY_BREAK
 /* id */
-case 56:
+case 60:
 YY_RULE_SETUP
-#line 115 "lex.l"
+#line 120 "lex.l"
 {
     yylval->sv_str = yytext;
     return IDENTIFIER;
 }
 	YY_BREAK
 /* literals */
-case 57:
+case 61:
 YY_RULE_SETUP
-#line 120 "lex.l"
+#line 125 "lex.l"
 {
     yylval->sv_int = atoi(yytext);
     return VALUE_INT;
 }
 	YY_BREAK
-case 58:
+case 62:
 YY_RULE_SETUP
-#line 124 "lex.l"
+#line 129 "lex.l"
 {
     yylval->sv_float = atof(yytext);
     return VALUE_FLOAT;
 }
 	YY_BREAK
-case 59:
-/* rule 59 can match eol */
+case 63:
+/* rule 63 can match eol */
 YY_RULE_SETUP
-#line 128 "lex.l"
+#line 133 "lex.l"
 {
     yylval->sv_str = std::string(yytext + 1, strlen(yytext) - 2);
     return VALUE_STRING;
 }
 	YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 137 "lex.l"
+{
+    yylval->sv_str = yytext;
+    return FILE_PATH;
+}
+	YY_BREAK
 /* EOF */
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(STATE_COMMENT):
-#line 133 "lex.l"
+#line 142 "lex.l"
 { return T_EOF; }
 	YY_BREAK
 /* unexpected char */
-case 60:
+case 65:
 YY_RULE_SETUP
-#line 135 "lex.l"
+#line 144 "lex.l"
 { std::cerr << "Lexer Error: unexpected character " << yytext[0] << std::endl; }
 	YY_BREAK
-case 61:
+case 66:
 YY_RULE_SETUP
-#line 136 "lex.l"
+#line 145 "lex.l"
 ECHO;
 	YY_BREAK
-#line 1317 "lex.yy.cpp"
+#line 1357 "lex.yy.cpp"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -1608,7 +1648,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 222 )
+			if ( yy_current_state >= 242 )
 				yy_c = yy_meta[yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1636,11 +1676,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 222 )
+		if ( yy_current_state >= 242 )
 			yy_c = yy_meta[yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-	yy_is_jam = (yy_current_state == 221);
+	yy_is_jam = (yy_current_state == 241);
 
 		return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2279,6 +2319,6 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 136 "lex.l"
+#line 145 "lex.l"
 
 
diff --git a/src/parser/lex.yy.h b/src/parser/lex.yy.h
index a897defad273a2ed974a7aa5d9d3273abd8a7be3..5b4cb1a0baec80b3400ab4f74f8a5fa0851e5421 100644
--- a/src/parser/lex.yy.h
+++ b/src/parser/lex.yy.h
@@ -504,7 +504,7 @@ extern int yylex \
 #undef yyTABLES_NAME
 #endif
 
-#line 136 "lex.l"
+#line 145 "lex.l"
 
 
 #line 511 "lex.yy.h"
diff --git a/src/parser/lex.yy.hpp b/src/parser/lex.yy.hpp
index adf9b13124fe11c10c2aa24063442113394ad124..7264ca2803f2cfbe9f11b5b74cfb0f5671383ac3 100644
--- a/src/parser/lex.yy.hpp
+++ b/src/parser/lex.yy.hpp
@@ -504,7 +504,7 @@ extern int yylex \
 #undef yyTABLES_NAME
 #endif
 
-#line 136 "lex.l"
+#line 145 "lex.l"
 
 
 #line 511 "lex.yy.hpp"
diff --git a/src/parser/test_parser.cpp b/src/parser/test_parser.cpp
index 7bf38d1cab2bf0b541d6cfeed27887573c5370a2..ae494c693fbeb9f62f560062e55253eebbd41b2f 100644
--- a/src/parser/test_parser.cpp
+++ b/src/parser/test_parser.cpp
@@ -59,7 +59,16 @@ int main() {
         "select id from grade where score >= (999.0);", // 多级嵌套
         "select id from grade where name in (1, 3.45, '4');"
     };
-    for (auto &sql: constValueSubquerySqls) {
+    std::vector<std::string> PerformanceSqls = {
+        // 为了减少编写词法规则工作量,在分析阶段判断非法 sqls
+        "load ../../src/test/performance_test/table_data/warehouse.csv into warehouse;",
+        "load ../../src/test/performance_test/table_data/city.csv into city;",
+        "load ../../src/test/performance_test/table_data/city.csv into orders;",
+        "load ../my.csv into your;",
+        "set output_file off",
+        "set output_file on"
+    };
+    for (auto &sql: PerformanceSqls) {
         std::cout << sql << std::endl;
         YY_BUFFER_STATE buf = yy_scan_string(sql.c_str());
         assert(yyparse() == 0);
diff --git a/src/parser/yacc.tab.c b/src/parser/yacc.tab.c
index 4e1ba4a3eec0cda0a7d0dbaf61337f4dd2276db3..0ee8fb6b1b8ac29a2e5159c9ef9cc215e7e291e2 100644
--- a/src/parser/yacc.tab.c
+++ b/src/parser/yacc.tab.c
@@ -171,15 +171,20 @@ extern int yydebug;
     HAVING = 297,
     IN = 298,
     STATIC_CHECKPOINT = 299,
-    LEQ = 300,
-    NEQ = 301,
-    GEQ = 302,
-    T_EOF = 303,
-    IDENTIFIER = 304,
-    VALUE_STRING = 305,
-    VALUE_INT = 306,
-    VALUE_FLOAT = 307,
-    VALUE_BOOL = 308
+    LOAD = 300,
+    OUTPUT_FILE = 301,
+    ON = 302,
+    OFF = 303,
+    LEQ = 304,
+    NEQ = 305,
+    GEQ = 306,
+    T_EOF = 307,
+    FILE_PATH = 308,
+    IDENTIFIER = 309,
+    VALUE_STRING = 310,
+    VALUE_INT = 311,
+    VALUE_FLOAT = 312,
+    VALUE_BOOL = 313
   };
 #endif
 
@@ -510,21 +515,21 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  50
+#define YYFINAL  53
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   195
+#define YYLAST   203
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  63
+#define YYNTOKENS  68
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  37
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  96
+#define YYNRULES  100
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  197
+#define YYNSTATES  204
 
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   308
+#define YYMAXUTOK   313
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -540,9 +545,9 @@ static const yytype_int8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      56,    57,    62,     2,    58,     2,    59,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,    54,
-      60,    55,    61,     2,     2,     2,     2,     2,     2,     2,
+      61,    62,    67,     2,    63,     2,    64,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,    59,
+      65,    60,    66,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -566,23 +571,25 @@ static const yytype_int8 yytranslate[] =
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,    63,    63,    68,    73,    78,    86,    87,    88,    89,
-      90,    94,    98,   102,   106,   113,   117,   124,   131,   135,
-     139,   143,   147,   151,   158,   162,   166,   170,   177,   181,
-     188,   192,   199,   206,   210,   214,   221,   225,   232,   236,
-     240,   244,   251,   255,   262,   263,   270,   274,   281,   285,
-     292,   296,   303,   307,   311,   315,   319,   323,   327,   334,
-     338,   342,   349,   353,   360,   367,   371,   375,   379,   383,
-     387,   391,   395,   402,   406,   410,   417,   421,   425,   432,
-     436,   440,   447,   448,   449,   453,   457,   461,   465,   469,
-     473,   477,   481,   482,   485,   487,   489
+       0,    63,    63,    68,    73,    78,    83,    88,    96,    97,
+      98,    99,   100,   104,   108,   112,   116,   123,   127,   134,
+     141,   145,   149,   153,   157,   161,   168,   172,   176,   180,
+     184,   191,   195,   202,   206,   213,   220,   224,   228,   235,
+     239,   246,   250,   254,   258,   265,   269,   276,   277,   284,
+     288,   295,   299,   306,   310,   317,   321,   325,   329,   333,
+     337,   341,   348,   352,   356,   363,   367,   374,   381,   385,
+     389,   393,   397,   401,   405,   409,   416,   420,   424,   431,
+     435,   439,   446,   450,   454,   461,   462,   463,   467,   471,
+     475,   479,   483,   487,   491,   495,   496,   497,   500,   502,
+     504
 };
 #endif
 
@@ -597,16 +604,17 @@ static const char *const yytname[] =
   "FLOAT", "INDEX", "AND", "JOIN", "EXIT", "HELP", "TXN_BEGIN",
   "TXN_COMMIT", "TXN_ABORT", "TXN_ROLLBACK", "ORDER_BY", "ENABLE_NESTLOOP",
   "ENABLE_SORTMERGE", "COUNT", "MAX", "MIN", "SUM", "AS", "GROUP",
-  "HAVING", "IN", "STATIC_CHECKPOINT", "LEQ", "NEQ", "GEQ", "T_EOF",
-  "IDENTIFIER", "VALUE_STRING", "VALUE_INT", "VALUE_FLOAT", "VALUE_BOOL",
-  "';'", "'='", "'('", "')'", "','", "'.'", "'<'", "'>'", "'*'", "$accept",
-  "start", "stmt", "txnStmt", "dbStmt", "setStmt", "ddl", "dml",
-  "fieldList", "colNameList", "field", "type", "valueList", "value",
-  "condition", "optWhereClause", "whereClause", "col", "colList", "op",
-  "expr", "setClauses", "setClause", "asClause", "select_item",
-  "select_list", "tableList", "opt_order_clause", "order_clause",
-  "opt_asc_desc", "group_by_clause", "having_clause", "having_clauses",
-  "set_knob_type", "tbName", "colName", "alias", YY_NULLPTR
+  "HAVING", "IN", "STATIC_CHECKPOINT", "LOAD", "OUTPUT_FILE", "ON", "OFF",
+  "LEQ", "NEQ", "GEQ", "T_EOF", "FILE_PATH", "IDENTIFIER", "VALUE_STRING",
+  "VALUE_INT", "VALUE_FLOAT", "VALUE_BOOL", "';'", "'='", "'('", "')'",
+  "','", "'.'", "'<'", "'>'", "'*'", "$accept", "start", "stmt", "txnStmt",
+  "dbStmt", "setStmt", "ddl", "dml", "fieldList", "colNameList", "field",
+  "type", "valueList", "value", "condition", "optWhereClause",
+  "whereClause", "col", "colList", "op", "expr", "setClauses", "setClause",
+  "asClause", "select_item", "select_list", "tableList",
+  "opt_order_clause", "order_clause", "opt_asc_desc", "group_by_clause",
+  "having_clause", "having_clauses", "set_knob_type", "tbName", "colName",
+  "alias", YY_NULLPTR
 };
 #endif
 
@@ -620,17 +628,17 @@ static const yytype_int16 yytoknum[] =
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,    59,    61,    40,    41,    44,    46,
-      60,    62,    42
+     305,   306,   307,   308,   309,   310,   311,   312,   313,    59,
+      61,    40,    41,    44,    46,    60,    62,    42
 };
 # endif
 
-#define YYPACT_NINF (-145)
+#define YYPACT_NINF (-135)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-95)
+#define YYTABLE_NINF (-99)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -639,26 +647,27 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     117,    13,     8,    14,   -37,    44,    40,   -37,     7,    22,
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,    57,    31,  -145,
-    -145,  -145,  -145,  -145,  -145,    49,   -37,   -37,  -145,   -37,
-     -37,  -145,  -145,   -37,   -37,    48,  -145,  -145,    32,    45,
-      50,    53,    61,    38,  -145,    65,  -145,   -11,    64,  -145,
-    -145,  -145,   -37,    71,    72,  -145,    75,   121,   116,    85,
-      89,   -34,    94,    94,    94,   101,  -145,   -37,   102,    85,
-    -145,    85,    85,    85,   110,    94,  -145,  -145,    -8,  -145,
-     113,  -145,   100,   112,   114,   115,   119,  -145,  -145,    10,
-    -145,  -145,  -145,    12,  -145,    73,    21,  -145,    24,    23,
-    -145,   133,    43,    85,  -145,    23,    65,    65,    65,    65,
-      65,   -37,   -37,   129,  -145,    85,  -145,   118,  -145,  -145,
-    -145,    85,  -145,  -145,  -145,  -145,  -145,    34,  -145,    94,
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,   103,  -145,  -145,
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,   157,   135,  -145,
-     127,  -145,  -145,    23,  -145,    -7,  -145,  -145,  -145,    94,
-     102,   164,   123,  -145,    22,    42,  -145,   124,    43,   156,
-     167,  -145,  -145,    -2,  -145,    94,   111,   102,    94,   -37,
-    -145,   165,  -145,    43,    41,  -145,    10,   111,  -145,  -145,
-    -145,   129,  -145,   135,   164,   130,  -145
+      98,    16,    15,    43,   -29,    12,    29,   -29,    38,    -1,
+    -135,  -135,  -135,  -135,  -135,  -135,     1,  -135,    50,    -7,
+    -135,  -135,  -135,  -135,  -135,  -135,    56,   -29,   -29,  -135,
+     -29,   -29,  -135,  -135,   -29,   -29,    66,  -135,  -135,  -135,
+     -32,    41,    52,    58,    61,    60,  -135,   109,  -135,    -3,
+      96,  -135,   151,  -135,  -135,   -29,   102,   103,  -135,   104,
+     155,   150,   114,  -135,  -135,   111,   -10,   116,   116,   116,
+     117,  -135,   -29,     9,   114,   -29,  -135,   114,   114,   114,
+     112,   116,  -135,  -135,    -5,  -135,   115,  -135,   110,   118,
+     121,   122,   123,  -135,  -135,    -8,  -135,  -135,  -135,  -135,
+      30,  -135,   119,    46,  -135,    82,    78,  -135,   149,    88,
+     114,  -135,    78,   109,   109,   109,   109,   109,   -29,   -29,
+     135,  -135,   114,  -135,   120,  -135,  -135,  -135,   114,  -135,
+    -135,  -135,  -135,  -135,    84,  -135,   116,  -135,  -135,  -135,
+    -135,  -135,  -135,  -135,    33,  -135,  -135,  -135,  -135,  -135,
+    -135,  -135,  -135,  -135,   161,   136,  -135,   130,  -135,  -135,
+      78,  -135,    23,  -135,  -135,  -135,   116,     9,   164,   125,
+    -135,    -1,    89,  -135,   126,    88,   163,   174,  -135,  -135,
+      -2,  -135,   116,   101,     9,   116,   -29,  -135,   171,  -135,
+      88,    62,  -135,    -8,   101,  -135,  -135,  -135,   135,  -135,
+     136,   164,   131,  -135
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -667,43 +676,44 @@ static const yytype_int16 yypact[] =
 static const yytype_int8 yydefact[] =
 {
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       4,     3,    11,    12,    13,    14,     5,     0,     0,     9,
-       6,    10,     7,     8,    15,     0,     0,     0,    19,     0,
-       0,    94,    21,     0,     0,     0,    92,    93,     0,     0,
-       0,     0,     0,    95,    73,    66,    74,     0,     0,    49,
-       1,     2,     0,     0,     0,    20,     0,     0,    44,     0,
-       0,     0,     0,     0,     0,     0,    67,     0,     0,     0,
-      16,     0,     0,     0,     0,     0,    25,    95,    44,    62,
-       0,    17,     0,     0,     0,     0,     0,    96,    65,    44,
-      76,    75,    48,     0,    28,     0,     0,    30,     0,     0,
-      46,    45,     0,     0,    26,     0,    66,    66,    66,    66,
-      66,     0,     0,    86,    18,     0,    33,     0,    35,    32,
-      22,     0,    23,    40,    38,    39,    41,     0,    36,     0,
-      58,    56,    55,    57,    52,    53,    54,     0,    63,    64,
-      68,    69,    70,    71,    72,    78,    77,     0,    91,    29,
-       0,    31,    24,     0,    47,     0,    59,    60,    42,     0,
-      89,    80,     0,    37,     0,     0,    50,    85,     0,    90,
-       0,    27,    34,     0,    43,     0,     0,     0,     0,     0,
-      51,     0,    87,     0,    84,    79,    44,     0,    83,    82,
-      81,    86,    88,    91,    80,     0,    61
+       6,     5,    13,    14,    15,    16,     0,     7,     0,     0,
+      11,     8,    12,     9,    10,    17,     0,     0,     0,    21,
+       0,     0,    98,    23,     0,     0,     0,    95,    96,    97,
+       0,     0,     0,     0,     0,    99,    76,    69,    77,     0,
+       0,    52,     0,     1,     2,     0,     0,     0,    22,     0,
+       0,    47,     0,     4,     3,     0,     0,     0,     0,     0,
+       0,    70,     0,     0,     0,     0,    18,     0,     0,     0,
+       0,     0,    28,    99,    47,    65,     0,    19,     0,     0,
+       0,     0,     0,   100,    68,    47,    79,    78,    51,    26,
+       0,    31,     0,     0,    33,     0,     0,    49,    48,     0,
+       0,    29,     0,    69,    69,    69,    69,    69,     0,     0,
+      89,    20,     0,    36,     0,    38,    35,    24,     0,    25,
+      43,    41,    42,    44,     0,    39,     0,    61,    59,    58,
+      60,    55,    56,    57,     0,    66,    67,    71,    72,    73,
+      74,    75,    81,    80,     0,    94,    32,     0,    34,    27,
+       0,    50,     0,    62,    63,    45,     0,    92,    83,     0,
+      40,     0,     0,    53,    88,     0,    93,     0,    30,    37,
+       0,    46,     0,     0,     0,     0,     0,    54,     0,    90,
+       0,    87,    82,    47,     0,    86,    85,    84,    89,    91,
+      94,    83,     0,    64
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,   120,
-      69,  -145,    33,   -89,    60,   -70,  -145,   -57,  -145,  -144,
-    -136,  -145,    83,     5,   -67,    26,    15,    -3,  -145,  -145,
-       1,  -145,     2,  -145,    -4,   -38,  -145
+    -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,   113,
+      72,  -135,    34,   -98,    59,   -82,  -135,   -62,  -135,  -134,
+    -108,  -135,    87,   -17,   -72,    27,    13,     0,  -135,  -135,
+       2,  -135,     3,  -135,    -4,   -45,  -135
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    17,    18,    19,    20,    21,    22,    23,    93,    96,
-      94,   119,   127,   156,   100,    76,   101,    45,   167,   137,
-     158,    78,    79,    66,    46,    47,    89,   171,   185,   190,
-     148,   169,   161,    38,    48,    49,    88
+      -1,    18,    19,    20,    21,    22,    23,    24,   100,   103,
+     101,   126,   134,   163,   107,    82,   108,    47,   174,   144,
+     165,    84,    85,    71,    48,    49,    95,   178,   192,   197,
+     155,   176,   168,    40,    50,    51,    94
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -711,50 +721,52 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      32,    91,    67,    35,    83,    84,    85,    86,   104,    75,
-     128,   179,    31,   164,    26,    43,   139,    24,   102,   113,
-      29,    80,    53,    54,   176,    55,    56,    75,    82,    57,
-      58,    92,    27,    95,    97,    97,   111,    25,    30,   187,
-     182,    36,    37,   123,   124,   125,   126,    68,    70,   188,
-     103,   192,    28,    34,    33,   189,    68,    50,    39,    40,
-      41,    42,    52,    90,   163,    80,   128,    59,   112,   114,
-     115,    43,   102,   123,   124,   125,   126,    95,   120,   121,
-     157,   122,   121,   151,    44,    51,   130,    60,   131,   132,
-     133,   152,   153,   168,   116,   117,   118,   -94,   134,   174,
-     153,    61,   166,   135,   136,    65,    62,   145,   146,    63,
-     183,   140,   141,   142,   143,   144,   191,    64,   180,   157,
-       1,   184,     2,    69,     3,     4,     5,    71,    72,     6,
-     157,    73,    74,    75,    77,     7,     8,     9,    39,    40,
-      41,    42,    81,    43,    10,    11,    12,    13,    14,    15,
-      87,    43,    43,   123,   124,   125,   126,   106,   129,   155,
-      43,   123,   124,   125,   126,    16,    99,   181,   105,   107,
-     147,   108,   109,   159,   150,    90,   110,   160,   162,   170,
-     172,   177,   175,   178,   149,   164,   138,   196,   165,   154,
-     173,   195,   193,    98,   186,   194
+      33,    97,   111,    36,    89,    90,    91,    92,   135,    81,
+      72,   186,    81,   120,   146,    63,    64,    86,   118,   109,
+      25,    27,    34,    56,    57,    32,    58,    59,    65,    98,
+      60,    61,   102,   104,   104,    41,    42,    43,    44,    28,
+      26,   183,    35,   171,    45,    41,    42,    43,    44,    30,
+      53,    76,    54,    45,    52,   119,   194,    88,   110,    29,
+      73,    73,   170,    45,   135,    86,    46,    31,    96,    55,
+     195,    99,    37,    38,   109,   189,   196,   102,   130,   131,
+     132,   133,   164,   158,    39,    62,   199,    45,   130,   131,
+     132,   133,   121,   122,   162,   175,   147,   148,   149,   150,
+     151,     1,    66,     2,   173,     3,     4,     5,   127,   128,
+       6,   198,   190,    67,   152,   153,     7,     8,     9,    68,
+     187,   164,    69,   191,   -98,    10,    11,    12,    13,    14,
+      15,   137,   164,   130,   131,   132,   133,   138,   139,   140,
+     123,   124,   125,    16,   129,   128,   159,   160,   141,    70,
+      17,   181,   160,   142,   143,    45,   130,   131,   132,   133,
+      74,    75,   188,    77,    78,    79,    80,    81,    83,    87,
+      45,    93,   113,   106,   136,   112,   154,   166,   167,   177,
+     114,   157,    96,   115,   116,   117,   169,   179,   184,   182,
+     185,   171,   105,   203,   156,   161,   172,   145,   180,   193,
+     200,   202,     0,   201
 };
 
-static const yytype_uint8 yycheck[] =
+static const yytype_int16 yycheck[] =
 {
-       4,    68,    13,     7,    61,    62,    63,    64,    78,    17,
-      99,    13,    49,    20,     6,    49,   105,     4,    75,    89,
-       6,    59,    26,    27,   168,    29,    30,    17,    62,    33,
-      34,    69,    24,    71,    72,    73,    26,    24,    24,   183,
-     176,    34,    35,    50,    51,    52,    53,    58,    52,     8,
-      58,   187,    44,    13,    10,    14,    58,     0,    36,    37,
-      38,    39,    13,    67,   153,   103,   155,    19,    58,    57,
-      58,    49,   129,    50,    51,    52,    53,   115,    57,    58,
-     137,    57,    58,   121,    62,    54,    43,    55,    45,    46,
-      47,    57,    58,   160,    21,    22,    23,    59,    55,    57,
-      58,    56,   159,    60,    61,    40,    56,   111,   112,    56,
-     177,   106,   107,   108,   109,   110,   186,    56,   175,   176,
-       3,   178,     5,    59,     7,     8,     9,    56,    56,    12,
-     187,    56,    11,    17,    49,    18,    19,    20,    36,    37,
-      38,    39,    53,    49,    27,    28,    29,    30,    31,    32,
-      49,    49,    49,    50,    51,    52,    53,    57,    25,    56,
-      49,    50,    51,    52,    53,    48,    56,    56,    55,    57,
-      41,    57,    57,    16,    56,   179,    57,    42,    51,    15,
-      57,    25,    58,    16,   115,    20,   103,    57,   155,   129,
-     164,   194,   191,    73,   179,   193
+       4,    73,    84,     7,    66,    67,    68,    69,   106,    17,
+      13,    13,    17,    95,   112,    47,    48,    62,    26,    81,
+       4,     6,    10,    27,    28,    54,    30,    31,    60,    74,
+      34,    35,    77,    78,    79,    36,    37,    38,    39,    24,
+      24,   175,    13,    20,    54,    36,    37,    38,    39,     6,
+       0,    55,    59,    54,    53,    63,   190,    67,    63,    44,
+      63,    63,   160,    54,   162,   110,    67,    24,    72,    13,
+       8,    75,    34,    35,   136,   183,    14,   122,    55,    56,
+      57,    58,   144,   128,    46,    19,   194,    54,    55,    56,
+      57,    58,    62,    63,    61,   167,   113,   114,   115,   116,
+     117,     3,    61,     5,   166,     7,     8,     9,    62,    63,
+      12,   193,   184,    61,   118,   119,    18,    19,    20,    61,
+     182,   183,    61,   185,    64,    27,    28,    29,    30,    31,
+      32,    43,   194,    55,    56,    57,    58,    49,    50,    51,
+      21,    22,    23,    45,    62,    63,    62,    63,    60,    40,
+      52,    62,    63,    65,    66,    54,    55,    56,    57,    58,
+      64,    10,    61,    61,    61,    61,    11,    17,    54,    58,
+      54,    54,    62,    61,    25,    60,    41,    16,    42,    15,
+      62,    61,   186,    62,    62,    62,    56,    62,    25,    63,
+      16,    20,    79,    62,   122,   136,   162,   110,   171,   186,
+     198,   201,    -1,   200
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -762,55 +774,58 @@ static const yytype_uint8 yycheck[] =
 static const yytype_int8 yystos[] =
 {
        0,     3,     5,     7,     8,     9,    12,    18,    19,    20,
-      27,    28,    29,    30,    31,    32,    48,    64,    65,    66,
-      67,    68,    69,    70,     4,    24,     6,    24,    44,     6,
-      24,    49,    97,    10,    13,    97,    34,    35,    96,    36,
-      37,    38,    39,    49,    62,    80,    87,    88,    97,    98,
-       0,    54,    13,    97,    97,    97,    97,    97,    97,    19,
-      55,    56,    56,    56,    56,    40,    86,    13,    58,    59,
-      97,    56,    56,    56,    11,    17,    78,    49,    84,    85,
-      98,    53,    62,    80,    80,    80,    80,    49,    99,    89,
-      97,    87,    98,    71,    73,    98,    72,    98,    72,    56,
-      77,    79,    80,    58,    78,    55,    57,    57,    57,    57,
-      57,    26,    58,    78,    57,    58,    21,    22,    23,    74,
-      57,    58,    57,    50,    51,    52,    53,    75,    76,    25,
-      43,    45,    46,    47,    55,    60,    61,    82,    85,    76,
-      86,    86,    86,    86,    86,    97,    97,    41,    93,    73,
-      56,    98,    57,    58,    77,    56,    76,    80,    83,    16,
-      42,    95,    51,    76,    20,    75,    80,    81,    87,    94,
-      15,    90,    57,    88,    57,    58,    82,    25,    16,    13,
-      80,    56,    83,    87,    80,    91,    89,    82,     8,    14,
-      92,    78,    83,    93,    95,    90,    57
+      27,    28,    29,    30,    31,    32,    45,    52,    69,    70,
+      71,    72,    73,    74,    75,     4,    24,     6,    24,    44,
+       6,    24,    54,   102,    10,    13,   102,    34,    35,    46,
+     101,    36,    37,    38,    39,    54,    67,    85,    92,    93,
+     102,   103,    53,     0,    59,    13,   102,   102,   102,   102,
+     102,   102,    19,    47,    48,    60,    61,    61,    61,    61,
+      40,    91,    13,    63,    64,    10,   102,    61,    61,    61,
+      11,    17,    83,    54,    89,    90,   103,    58,    67,    85,
+      85,    85,    85,    54,   104,    94,   102,    92,   103,   102,
+      76,    78,   103,    77,   103,    77,    61,    82,    84,    85,
+      63,    83,    60,    62,    62,    62,    62,    62,    26,    63,
+      83,    62,    63,    21,    22,    23,    79,    62,    63,    62,
+      55,    56,    57,    58,    80,    81,    25,    43,    49,    50,
+      51,    60,    65,    66,    87,    90,    81,    91,    91,    91,
+      91,    91,   102,   102,    41,    98,    78,    61,   103,    62,
+      63,    82,    61,    81,    85,    88,    16,    42,   100,    56,
+      81,    20,    80,    85,    86,    92,    99,    15,    95,    62,
+      93,    62,    63,    87,    25,    16,    13,    85,    61,    88,
+      92,    85,    96,    94,    87,     8,    14,    97,    83,    88,
+      98,   100,    95,    62
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_int8 yyr1[] =
 {
-       0,    63,    64,    64,    64,    64,    65,    65,    65,    65,
-      65,    66,    66,    66,    66,    67,    67,    68,    69,    69,
-      69,    69,    69,    69,    70,    70,    70,    70,    71,    71,
-      72,    72,    73,    74,    74,    74,    75,    75,    76,    76,
-      76,    76,    77,    77,    78,    78,    79,    79,    80,    80,
-      81,    81,    82,    82,    82,    82,    82,    82,    82,    83,
-      83,    83,    84,    84,    85,    86,    86,    87,    87,    87,
-      87,    87,    87,    88,    88,    88,    89,    89,    89,    90,
-      90,    91,    92,    92,    92,    93,    93,    94,    94,    94,
-      95,    95,    96,    96,    97,    98,    99
+       0,    68,    69,    69,    69,    69,    69,    69,    70,    70,
+      70,    70,    70,    71,    71,    71,    71,    72,    72,    73,
+      74,    74,    74,    74,    74,    74,    75,    75,    75,    75,
+      75,    76,    76,    77,    77,    78,    79,    79,    79,    80,
+      80,    81,    81,    81,    81,    82,    82,    83,    83,    84,
+      84,    85,    85,    86,    86,    87,    87,    87,    87,    87,
+      87,    87,    88,    88,    88,    89,    89,    90,    91,    91,
+      92,    92,    92,    92,    92,    92,    93,    93,    93,    94,
+      94,    94,    95,    95,    96,    97,    97,    97,    98,    98,
+      99,    99,    99,   100,   100,   101,   101,   101,   102,   103,
+     104
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_int8 yyr2[] =
 {
-       0,     2,     2,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     4,     4,     6,     2,
-       3,     2,     6,     6,     7,     4,     5,     8,     1,     3,
-       1,     3,     2,     1,     4,     1,     1,     3,     1,     1,
-       1,     1,     3,     5,     0,     2,     1,     3,     3,     1,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,    10,     1,     3,     3,     2,     0,     2,     5,     5,
-       5,     5,     5,     1,     1,     3,     1,     3,     3,     3,
-       0,     2,     1,     1,     0,     3,     0,     3,     5,     0,
-       2,     0,     1,     1,     1,     1,     1
+       0,     2,     2,     3,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     4,     4,
+       6,     2,     3,     2,     6,     6,     4,     7,     4,     5,
+       8,     1,     3,     1,     3,     2,     1,     4,     1,     1,
+       3,     1,     1,     1,     1,     3,     5,     0,     2,     1,
+       3,     3,     1,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,    10,     1,     3,     3,     2,     0,
+       2,     5,     5,     5,     5,     5,     1,     1,     3,     1,
+       3,     3,     3,     0,     2,     1,     1,     0,     3,     0,
+       3,     5,     0,     2,     0,     1,     1,     1,     1,     1,
+       1
 };
 
 
@@ -1612,680 +1627,712 @@ yyreduce:
         parse_tree = (yyvsp[-1].sv_node);
         YYACCEPT;
     }
-#line 1616 "yacc.tab.c"
+#line 1631 "yacc.tab.c"
     break;
 
   case 3:
 #line 69 "yacc.y"
     {
-        parse_tree = std::make_shared<Help>();
+        parse_tree = std::make_shared<SetStmt>((yyvsp[-1].sv_setKnobType), false);
         YYACCEPT;
     }
-#line 1625 "yacc.tab.c"
+#line 1640 "yacc.tab.c"
     break;
 
   case 4:
 #line 74 "yacc.y"
     {
-        parse_tree = nullptr;
+        parse_tree = std::make_shared<SetStmt>((yyvsp[-1].sv_setKnobType), true);
         YYACCEPT;
     }
-#line 1634 "yacc.tab.c"
+#line 1649 "yacc.tab.c"
     break;
 
   case 5:
 #line 79 "yacc.y"
+    {
+        parse_tree = std::make_shared<Help>();
+        YYACCEPT;
+    }
+#line 1658 "yacc.tab.c"
+    break;
+
+  case 6:
+#line 84 "yacc.y"
     {
         parse_tree = nullptr;
         YYACCEPT;
     }
-#line 1643 "yacc.tab.c"
+#line 1667 "yacc.tab.c"
     break;
 
-  case 11:
-#line 95 "yacc.y"
+  case 7:
+#line 89 "yacc.y"
+    {
+        parse_tree = nullptr;
+        YYACCEPT;
+    }
+#line 1676 "yacc.tab.c"
+    break;
+
+  case 13:
+#line 105 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<TxnBegin>();
     }
-#line 1651 "yacc.tab.c"
+#line 1684 "yacc.tab.c"
     break;
 
-  case 12:
-#line 99 "yacc.y"
+  case 14:
+#line 109 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<TxnCommit>();
     }
-#line 1659 "yacc.tab.c"
+#line 1692 "yacc.tab.c"
     break;
 
-  case 13:
-#line 103 "yacc.y"
+  case 15:
+#line 113 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<TxnAbort>();
     }
-#line 1667 "yacc.tab.c"
+#line 1700 "yacc.tab.c"
     break;
 
-  case 14:
-#line 107 "yacc.y"
+  case 16:
+#line 117 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<TxnRollback>();
     }
-#line 1675 "yacc.tab.c"
+#line 1708 "yacc.tab.c"
     break;
 
-  case 15:
-#line 114 "yacc.y"
+  case 17:
+#line 124 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<ShowTables>();
     }
-#line 1683 "yacc.tab.c"
+#line 1716 "yacc.tab.c"
     break;
 
-  case 16:
-#line 118 "yacc.y"
+  case 18:
+#line 128 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<ShowIndexs>((yyvsp[0].sv_str));
     }
-#line 1691 "yacc.tab.c"
+#line 1724 "yacc.tab.c"
     break;
 
-  case 17:
-#line 125 "yacc.y"
+  case 19:
+#line 135 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<SetStmt>((yyvsp[-2].sv_setKnobType), (yyvsp[0].sv_bool));
     }
-#line 1699 "yacc.tab.c"
+#line 1732 "yacc.tab.c"
     break;
 
-  case 18:
-#line 132 "yacc.y"
+  case 20:
+#line 142 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<CreateTable>((yyvsp[-3].sv_str), (yyvsp[-1].sv_fields));
     }
-#line 1707 "yacc.tab.c"
+#line 1740 "yacc.tab.c"
     break;
 
-  case 19:
-#line 136 "yacc.y"
+  case 21:
+#line 146 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<CreateStaticCheckpoint>();
     }
-#line 1715 "yacc.tab.c"
+#line 1748 "yacc.tab.c"
     break;
 
-  case 20:
-#line 140 "yacc.y"
+  case 22:
+#line 150 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<DropTable>((yyvsp[0].sv_str));
     }
-#line 1723 "yacc.tab.c"
+#line 1756 "yacc.tab.c"
     break;
 
-  case 21:
-#line 144 "yacc.y"
+  case 23:
+#line 154 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<DescTable>((yyvsp[0].sv_str));
     }
-#line 1731 "yacc.tab.c"
+#line 1764 "yacc.tab.c"
     break;
 
-  case 22:
-#line 148 "yacc.y"
+  case 24:
+#line 158 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<CreateIndex>((yyvsp[-3].sv_str), (yyvsp[-1].sv_strs));
     }
-#line 1739 "yacc.tab.c"
+#line 1772 "yacc.tab.c"
     break;
 
-  case 23:
-#line 152 "yacc.y"
+  case 25:
+#line 162 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<DropIndex>((yyvsp[-3].sv_str), (yyvsp[-1].sv_strs));
     }
-#line 1747 "yacc.tab.c"
+#line 1780 "yacc.tab.c"
     break;
 
-  case 24:
-#line 159 "yacc.y"
+  case 26:
+#line 169 "yacc.y"
+    {
+        (yyval.sv_node) = std::make_shared<LoadStmt>((yyvsp[-2].sv_str), (yyvsp[0].sv_str));
+    }
+#line 1788 "yacc.tab.c"
+    break;
+
+  case 27:
+#line 173 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<InsertStmt>((yyvsp[-4].sv_str), (yyvsp[-1].sv_vals));
     }
-#line 1755 "yacc.tab.c"
+#line 1796 "yacc.tab.c"
     break;
 
-  case 25:
-#line 163 "yacc.y"
+  case 28:
+#line 177 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<DeleteStmt>((yyvsp[-1].sv_str), (yyvsp[0].sv_conds));
     }
-#line 1763 "yacc.tab.c"
+#line 1804 "yacc.tab.c"
     break;
 
-  case 26:
-#line 167 "yacc.y"
+  case 29:
+#line 181 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<UpdateStmt>((yyvsp[-3].sv_str), (yyvsp[-1].sv_set_clauses), (yyvsp[0].sv_conds));
     }
-#line 1771 "yacc.tab.c"
+#line 1812 "yacc.tab.c"
     break;
 
-  case 27:
-#line 171 "yacc.y"
+  case 30:
+#line 185 "yacc.y"
     {
         (yyval.sv_node) = std::static_pointer_cast<Expr>(std::make_shared<SelectStmt>((yyvsp[-6].sv_bounds), (yyvsp[-4].sv_strs), (yyvsp[-3].sv_conds), (yyvsp[-2].sv_cols), (yyvsp[-1].sv_havings), (yyvsp[0].sv_orderby)));
     }
-#line 1779 "yacc.tab.c"
+#line 1820 "yacc.tab.c"
     break;
 
-  case 28:
-#line 178 "yacc.y"
+  case 31:
+#line 192 "yacc.y"
     {
         (yyval.sv_fields) = std::vector<std::shared_ptr<Field>>{(yyvsp[0].sv_field)};
     }
-#line 1787 "yacc.tab.c"
+#line 1828 "yacc.tab.c"
     break;
 
-  case 29:
-#line 182 "yacc.y"
+  case 32:
+#line 196 "yacc.y"
     {
         (yyval.sv_fields).push_back((yyvsp[0].sv_field));
     }
-#line 1795 "yacc.tab.c"
+#line 1836 "yacc.tab.c"
     break;
 
-  case 30:
-#line 189 "yacc.y"
+  case 33:
+#line 203 "yacc.y"
     {
         (yyval.sv_strs) = std::vector<std::string>{(yyvsp[0].sv_str)};
     }
-#line 1803 "yacc.tab.c"
+#line 1844 "yacc.tab.c"
     break;
 
-  case 31:
-#line 193 "yacc.y"
+  case 34:
+#line 207 "yacc.y"
     {
         (yyval.sv_strs).push_back((yyvsp[0].sv_str));
     }
-#line 1811 "yacc.tab.c"
+#line 1852 "yacc.tab.c"
     break;
 
-  case 32:
-#line 200 "yacc.y"
+  case 35:
+#line 214 "yacc.y"
     {
         (yyval.sv_field) = std::make_shared<ColDef>((yyvsp[-1].sv_str), (yyvsp[0].sv_type_len));
     }
-#line 1819 "yacc.tab.c"
+#line 1860 "yacc.tab.c"
     break;
 
-  case 33:
-#line 207 "yacc.y"
+  case 36:
+#line 221 "yacc.y"
     {
         (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_INT, sizeof(int));
     }
-#line 1827 "yacc.tab.c"
+#line 1868 "yacc.tab.c"
     break;
 
-  case 34:
-#line 211 "yacc.y"
+  case 37:
+#line 225 "yacc.y"
     {
         (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_STRING, (yyvsp[-1].sv_int));
     }
-#line 1835 "yacc.tab.c"
+#line 1876 "yacc.tab.c"
     break;
 
-  case 35:
-#line 215 "yacc.y"
+  case 38:
+#line 229 "yacc.y"
     {
         (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_FLOAT, sizeof(float));
     }
-#line 1843 "yacc.tab.c"
+#line 1884 "yacc.tab.c"
     break;
 
-  case 36:
-#line 222 "yacc.y"
+  case 39:
+#line 236 "yacc.y"
     {
         (yyval.sv_vals) = std::vector<std::shared_ptr<Value>>{(yyvsp[0].sv_val)};
     }
-#line 1851 "yacc.tab.c"
+#line 1892 "yacc.tab.c"
     break;
 
-  case 37:
-#line 226 "yacc.y"
+  case 40:
+#line 240 "yacc.y"
     {
         (yyval.sv_vals).push_back((yyvsp[0].sv_val));
     }
-#line 1859 "yacc.tab.c"
+#line 1900 "yacc.tab.c"
     break;
 
-  case 38:
-#line 233 "yacc.y"
+  case 41:
+#line 247 "yacc.y"
     {
         (yyval.sv_val) = std::make_shared<IntLit>((yyvsp[0].sv_int));
     }
-#line 1867 "yacc.tab.c"
+#line 1908 "yacc.tab.c"
     break;
 
-  case 39:
-#line 237 "yacc.y"
+  case 42:
+#line 251 "yacc.y"
     {
         (yyval.sv_val) = std::make_shared<FloatLit>((yyvsp[0].sv_float));
     }
-#line 1875 "yacc.tab.c"
+#line 1916 "yacc.tab.c"
     break;
 
-  case 40:
-#line 241 "yacc.y"
+  case 43:
+#line 255 "yacc.y"
     {
         (yyval.sv_val) = std::make_shared<StringLit>((yyvsp[0].sv_str));
     }
-#line 1883 "yacc.tab.c"
+#line 1924 "yacc.tab.c"
     break;
 
-  case 41:
-#line 245 "yacc.y"
+  case 44:
+#line 259 "yacc.y"
     {
         (yyval.sv_val) = std::make_shared<BoolLit>((yyvsp[0].sv_bool));
     }
-#line 1891 "yacc.tab.c"
+#line 1932 "yacc.tab.c"
     break;
 
-  case 42:
-#line 252 "yacc.y"
+  case 45:
+#line 266 "yacc.y"
     {
         (yyval.sv_cond) = std::make_shared<BinaryExpr>((yyvsp[-2].sv_col), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr));
     }
-#line 1899 "yacc.tab.c"
+#line 1940 "yacc.tab.c"
     break;
 
-  case 43:
-#line 256 "yacc.y"
+  case 46:
+#line 270 "yacc.y"
     {
         (yyval.sv_cond) = std::make_shared<BinaryExpr>((yyvsp[-4].sv_col), (yyvsp[-3].sv_comp_op), (yyvsp[-1].sv_vals));
     }
-#line 1907 "yacc.tab.c"
+#line 1948 "yacc.tab.c"
     break;
 
-  case 44:
-#line 262 "yacc.y"
+  case 47:
+#line 276 "yacc.y"
                       { /* ignore*/ }
-#line 1913 "yacc.tab.c"
+#line 1954 "yacc.tab.c"
     break;
 
-  case 45:
-#line 264 "yacc.y"
+  case 48:
+#line 278 "yacc.y"
     {
         (yyval.sv_conds) = (yyvsp[0].sv_conds);
     }
-#line 1921 "yacc.tab.c"
+#line 1962 "yacc.tab.c"
     break;
 
-  case 46:
-#line 271 "yacc.y"
+  case 49:
+#line 285 "yacc.y"
     {
         (yyval.sv_conds) = std::vector<std::shared_ptr<BinaryExpr>>{(yyvsp[0].sv_cond)};
     }
-#line 1929 "yacc.tab.c"
+#line 1970 "yacc.tab.c"
     break;
 
-  case 47:
-#line 275 "yacc.y"
+  case 50:
+#line 289 "yacc.y"
     {
         (yyval.sv_conds).push_back((yyvsp[0].sv_cond));
     }
-#line 1937 "yacc.tab.c"
+#line 1978 "yacc.tab.c"
     break;
 
-  case 48:
-#line 282 "yacc.y"
+  case 51:
+#line 296 "yacc.y"
     {
         (yyval.sv_col) = std::make_shared<Col>((yyvsp[-2].sv_str), (yyvsp[0].sv_str));
     }
-#line 1945 "yacc.tab.c"
+#line 1986 "yacc.tab.c"
     break;
 
-  case 49:
-#line 286 "yacc.y"
+  case 52:
+#line 300 "yacc.y"
     {
         (yyval.sv_col) = std::make_shared<Col>("", (yyvsp[0].sv_str));
     }
-#line 1953 "yacc.tab.c"
+#line 1994 "yacc.tab.c"
     break;
 
-  case 50:
-#line 293 "yacc.y"
+  case 53:
+#line 307 "yacc.y"
     {
         (yyval.sv_cols) = std::vector<std::shared_ptr<Col>>{(yyvsp[0].sv_col)};
     }
-#line 1961 "yacc.tab.c"
+#line 2002 "yacc.tab.c"
     break;
 
-  case 51:
-#line 297 "yacc.y"
+  case 54:
+#line 311 "yacc.y"
     {
         (yyval.sv_cols).push_back((yyvsp[0].sv_col));
     }
-#line 1969 "yacc.tab.c"
+#line 2010 "yacc.tab.c"
     break;
 
-  case 52:
-#line 304 "yacc.y"
+  case 55:
+#line 318 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_EQ;
     }
-#line 1977 "yacc.tab.c"
+#line 2018 "yacc.tab.c"
     break;
 
-  case 53:
-#line 308 "yacc.y"
+  case 56:
+#line 322 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_LT;
     }
-#line 1985 "yacc.tab.c"
+#line 2026 "yacc.tab.c"
     break;
 
-  case 54:
-#line 312 "yacc.y"
+  case 57:
+#line 326 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_GT;
     }
-#line 1993 "yacc.tab.c"
+#line 2034 "yacc.tab.c"
     break;
 
-  case 55:
-#line 316 "yacc.y"
+  case 58:
+#line 330 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_NE;
     }
-#line 2001 "yacc.tab.c"
+#line 2042 "yacc.tab.c"
     break;
 
-  case 56:
-#line 320 "yacc.y"
+  case 59:
+#line 334 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_LE;
     }
-#line 2009 "yacc.tab.c"
+#line 2050 "yacc.tab.c"
     break;
 
-  case 57:
-#line 324 "yacc.y"
+  case 60:
+#line 338 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_GE;
     }
-#line 2017 "yacc.tab.c"
+#line 2058 "yacc.tab.c"
     break;
 
-  case 58:
-#line 328 "yacc.y"
+  case 61:
+#line 342 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_IN;
     }
-#line 2025 "yacc.tab.c"
+#line 2066 "yacc.tab.c"
     break;
 
-  case 59:
-#line 335 "yacc.y"
+  case 62:
+#line 349 "yacc.y"
     {
         (yyval.sv_expr) = std::static_pointer_cast<Expr>((yyvsp[0].sv_val));
     }
-#line 2033 "yacc.tab.c"
+#line 2074 "yacc.tab.c"
     break;
 
-  case 60:
-#line 339 "yacc.y"
+  case 63:
+#line 353 "yacc.y"
     {
         (yyval.sv_expr) = std::static_pointer_cast<Expr>((yyvsp[0].sv_col));
     }
-#line 2041 "yacc.tab.c"
+#line 2082 "yacc.tab.c"
     break;
 
-  case 61:
-#line 343 "yacc.y"
+  case 64:
+#line 357 "yacc.y"
     {
         (yyval.sv_expr) = std::make_shared<SelectStmt>((yyvsp[-7].sv_bounds), (yyvsp[-5].sv_strs), (yyvsp[-4].sv_conds), (yyvsp[-3].sv_cols), (yyvsp[-2].sv_havings), (yyvsp[-1].sv_orderby));
     }
-#line 2049 "yacc.tab.c"
+#line 2090 "yacc.tab.c"
     break;
 
-  case 62:
-#line 350 "yacc.y"
+  case 65:
+#line 364 "yacc.y"
     {
         (yyval.sv_set_clauses) = std::vector<std::shared_ptr<SetClause>>{(yyvsp[0].sv_set_clause)};
     }
-#line 2057 "yacc.tab.c"
+#line 2098 "yacc.tab.c"
     break;
 
-  case 63:
-#line 354 "yacc.y"
+  case 66:
+#line 368 "yacc.y"
     {
         (yyval.sv_set_clauses).push_back((yyvsp[0].sv_set_clause));
     }
-#line 2065 "yacc.tab.c"
+#line 2106 "yacc.tab.c"
     break;
 
-  case 64:
-#line 361 "yacc.y"
+  case 67:
+#line 375 "yacc.y"
     {
         (yyval.sv_set_clause) = std::make_shared<SetClause>((yyvsp[-2].sv_str), (yyvsp[0].sv_val));
     }
-#line 2073 "yacc.tab.c"
+#line 2114 "yacc.tab.c"
     break;
 
-  case 65:
-#line 368 "yacc.y"
+  case 68:
+#line 382 "yacc.y"
     {
         (yyval.sv_str) = (yyvsp[0].sv_str);
     }
-#line 2081 "yacc.tab.c"
+#line 2122 "yacc.tab.c"
     break;
 
-  case 66:
-#line 371 "yacc.y"
+  case 69:
+#line 385 "yacc.y"
         { (yyval.sv_str) = ""; }
-#line 2087 "yacc.tab.c"
+#line 2128 "yacc.tab.c"
     break;
 
-  case 67:
-#line 376 "yacc.y"
+  case 70:
+#line 390 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-1].sv_col), AGG_COL, (yyvsp[0].sv_str));
     }
-#line 2095 "yacc.tab.c"
+#line 2136 "yacc.tab.c"
     break;
 
-  case 68:
-#line 380 "yacc.y"
+  case 71:
+#line 394 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>(std::make_shared<Col>("", ""), AGG_COUNT, (yyvsp[0].sv_str));
     }
-#line 2103 "yacc.tab.c"
+#line 2144 "yacc.tab.c"
     break;
 
-  case 69:
-#line 384 "yacc.y"
+  case 72:
+#line 398 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_COUNT, (yyvsp[0].sv_str));
     }
-#line 2111 "yacc.tab.c"
+#line 2152 "yacc.tab.c"
     break;
 
-  case 70:
-#line 388 "yacc.y"
+  case 73:
+#line 402 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_MAX, (yyvsp[0].sv_str));
     }
-#line 2119 "yacc.tab.c"
+#line 2160 "yacc.tab.c"
     break;
 
-  case 71:
-#line 392 "yacc.y"
+  case 74:
+#line 406 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_MIN, (yyvsp[0].sv_str));
     }
-#line 2127 "yacc.tab.c"
+#line 2168 "yacc.tab.c"
     break;
 
-  case 72:
-#line 396 "yacc.y"
+  case 75:
+#line 410 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_SUM, (yyvsp[0].sv_str));
     }
-#line 2135 "yacc.tab.c"
+#line 2176 "yacc.tab.c"
     break;
 
-  case 73:
-#line 403 "yacc.y"
+  case 76:
+#line 417 "yacc.y"
     {
         (yyval.sv_bounds) = {};
     }
-#line 2143 "yacc.tab.c"
+#line 2184 "yacc.tab.c"
     break;
 
-  case 74:
-#line 407 "yacc.y"
+  case 77:
+#line 421 "yacc.y"
     {
         (yyval.sv_bounds) = std::vector<std::shared_ptr<BoundExpr>>{(yyvsp[0].sv_bound)};
     }
-#line 2151 "yacc.tab.c"
+#line 2192 "yacc.tab.c"
     break;
 
-  case 75:
-#line 411 "yacc.y"
+  case 78:
+#line 425 "yacc.y"
     {
         (yyval.sv_bounds).push_back((yyvsp[0].sv_bound));
     }
-#line 2159 "yacc.tab.c"
+#line 2200 "yacc.tab.c"
     break;
 
-  case 76:
-#line 418 "yacc.y"
+  case 79:
+#line 432 "yacc.y"
     {
         (yyval.sv_strs) = std::vector<std::string>{(yyvsp[0].sv_str)};
     }
-#line 2167 "yacc.tab.c"
+#line 2208 "yacc.tab.c"
     break;
 
-  case 77:
-#line 422 "yacc.y"
+  case 80:
+#line 436 "yacc.y"
     {
         (yyval.sv_strs).push_back((yyvsp[0].sv_str));
     }
-#line 2175 "yacc.tab.c"
+#line 2216 "yacc.tab.c"
     break;
 
-  case 78:
-#line 426 "yacc.y"
+  case 81:
+#line 440 "yacc.y"
     {
         (yyval.sv_strs).push_back((yyvsp[0].sv_str));
     }
-#line 2183 "yacc.tab.c"
+#line 2224 "yacc.tab.c"
     break;
 
-  case 79:
-#line 433 "yacc.y"
+  case 82:
+#line 447 "yacc.y"
     { 
         (yyval.sv_orderby) = (yyvsp[0].sv_orderby); 
     }
-#line 2191 "yacc.tab.c"
+#line 2232 "yacc.tab.c"
     break;
 
-  case 80:
-#line 436 "yacc.y"
+  case 83:
+#line 450 "yacc.y"
                       { /* ignore*/ }
-#line 2197 "yacc.tab.c"
+#line 2238 "yacc.tab.c"
     break;
 
-  case 81:
-#line 441 "yacc.y"
+  case 84:
+#line 455 "yacc.y"
     { 
         (yyval.sv_orderby) = std::make_shared<OrderBy>((yyvsp[-1].sv_col), (yyvsp[0].sv_orderby_dir));
     }
-#line 2205 "yacc.tab.c"
+#line 2246 "yacc.tab.c"
     break;
 
-  case 82:
-#line 447 "yacc.y"
+  case 85:
+#line 461 "yacc.y"
                  { (yyval.sv_orderby_dir) = OrderBy_ASC;     }
-#line 2211 "yacc.tab.c"
+#line 2252 "yacc.tab.c"
     break;
 
-  case 83:
-#line 448 "yacc.y"
+  case 86:
+#line 462 "yacc.y"
                  { (yyval.sv_orderby_dir) = OrderBy_DESC;    }
-#line 2217 "yacc.tab.c"
+#line 2258 "yacc.tab.c"
     break;
 
-  case 84:
-#line 449 "yacc.y"
+  case 87:
+#line 463 "yacc.y"
             { (yyval.sv_orderby_dir) = OrderBy_DEFAULT; }
-#line 2223 "yacc.tab.c"
+#line 2264 "yacc.tab.c"
     break;
 
-  case 85:
-#line 454 "yacc.y"
+  case 88:
+#line 468 "yacc.y"
     {
         (yyval.sv_cols) = (yyvsp[0].sv_cols);
     }
-#line 2231 "yacc.tab.c"
+#line 2272 "yacc.tab.c"
     break;
 
-  case 86:
-#line 457 "yacc.y"
+  case 89:
+#line 471 "yacc.y"
                       { /* ignore*/ }
-#line 2237 "yacc.tab.c"
+#line 2278 "yacc.tab.c"
     break;
 
-  case 87:
-#line 462 "yacc.y"
+  case 90:
+#line 476 "yacc.y"
     {
         (yyval.sv_havings).emplace_back(std::make_shared<HavingExpr>((yyvsp[-2].sv_bound), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr)));
     }
-#line 2245 "yacc.tab.c"
+#line 2286 "yacc.tab.c"
     break;
 
-  case 88:
-#line 466 "yacc.y"
+  case 91:
+#line 480 "yacc.y"
     {
         (yyval.sv_havings).emplace_back(std::make_shared<HavingExpr>((yyvsp[-2].sv_bound), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr)));
     }
-#line 2253 "yacc.tab.c"
+#line 2294 "yacc.tab.c"
     break;
 
-  case 89:
-#line 469 "yacc.y"
+  case 92:
+#line 483 "yacc.y"
                       { /* ignore*/ }
-#line 2259 "yacc.tab.c"
+#line 2300 "yacc.tab.c"
     break;
 
-  case 90:
-#line 474 "yacc.y"
+  case 93:
+#line 488 "yacc.y"
     {
         (yyval.sv_havings) = (yyvsp[0].sv_havings);
     }
-#line 2267 "yacc.tab.c"
+#line 2308 "yacc.tab.c"
     break;
 
-  case 91:
-#line 477 "yacc.y"
+  case 94:
+#line 491 "yacc.y"
                       { /* ignore*/ }
-#line 2273 "yacc.tab.c"
+#line 2314 "yacc.tab.c"
     break;
 
-  case 92:
-#line 481 "yacc.y"
-                    { (yyval.sv_setKnobType) = EnableNestLoop; }
-#line 2279 "yacc.tab.c"
+  case 95:
+#line 495 "yacc.y"
+                        { (yyval.sv_setKnobType) = EnableNestLoop; }
+#line 2320 "yacc.tab.c"
     break;
 
-  case 93:
-#line 482 "yacc.y"
+  case 96:
+#line 496 "yacc.y"
                          { (yyval.sv_setKnobType) = EnableSortMerge; }
-#line 2285 "yacc.tab.c"
+#line 2326 "yacc.tab.c"
+    break;
+
+  case 97:
+#line 497 "yacc.y"
+                    { (yyval.sv_setKnobType) = EnableOutputFile; }
+#line 2332 "yacc.tab.c"
     break;
 
 
-#line 2289 "yacc.tab.c"
+#line 2336 "yacc.tab.c"
 
       default: break;
     }
@@ -2523,5 +2570,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 490 "yacc.y"
+#line 505 "yacc.y"
 
diff --git a/src/parser/yacc.tab.cpp b/src/parser/yacc.tab.cpp
index 76f293bc437e4a21d12751929ccca2ce801c074c..3f7bb7ccde3edd6e8f7554446f7c7fcaa7a6b711 100644
--- a/src/parser/yacc.tab.cpp
+++ b/src/parser/yacc.tab.cpp
@@ -171,15 +171,20 @@ extern int yydebug;
     HAVING = 297,
     IN = 298,
     STATIC_CHECKPOINT = 299,
-    LEQ = 300,
-    NEQ = 301,
-    GEQ = 302,
-    T_EOF = 303,
-    IDENTIFIER = 304,
-    VALUE_STRING = 305,
-    VALUE_INT = 306,
-    VALUE_FLOAT = 307,
-    VALUE_BOOL = 308
+    LOAD = 300,
+    OUTPUT_FILE = 301,
+    ON = 302,
+    OFF = 303,
+    LEQ = 304,
+    NEQ = 305,
+    GEQ = 306,
+    T_EOF = 307,
+    FILE_PATH = 308,
+    IDENTIFIER = 309,
+    VALUE_STRING = 310,
+    VALUE_INT = 311,
+    VALUE_FLOAT = 312,
+    VALUE_BOOL = 313
   };
 #endif
 
@@ -510,21 +515,21 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  50
+#define YYFINAL  53
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   195
+#define YYLAST   203
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  63
+#define YYNTOKENS  68
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  37
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  96
+#define YYNRULES  100
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  197
+#define YYNSTATES  204
 
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   308
+#define YYMAXUTOK   313
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -540,9 +545,9 @@ static const yytype_int8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      56,    57,    62,     2,    58,     2,    59,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,    54,
-      60,    55,    61,     2,     2,     2,     2,     2,     2,     2,
+      61,    62,    67,     2,    63,     2,    64,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,    59,
+      65,    60,    66,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -566,23 +571,25 @@ static const yytype_int8 yytranslate[] =
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,    63,    63,    68,    73,    78,    86,    87,    88,    89,
-      90,    94,    98,   102,   106,   113,   117,   124,   131,   135,
-     139,   143,   147,   151,   158,   162,   166,   170,   177,   181,
-     188,   192,   199,   206,   210,   214,   221,   225,   232,   236,
-     240,   244,   251,   255,   262,   263,   270,   274,   281,   285,
-     292,   296,   303,   307,   311,   315,   319,   323,   327,   334,
-     338,   342,   349,   353,   360,   367,   371,   375,   379,   383,
-     387,   391,   395,   402,   406,   410,   417,   421,   425,   432,
-     436,   440,   447,   448,   449,   453,   457,   461,   465,   469,
-     473,   477,   481,   482,   485,   487,   489
+       0,    63,    63,    68,    73,    78,    83,    88,    96,    97,
+      98,    99,   100,   104,   108,   112,   116,   123,   127,   134,
+     141,   145,   149,   153,   157,   161,   168,   172,   176,   180,
+     184,   191,   195,   202,   206,   213,   220,   224,   228,   235,
+     239,   246,   250,   254,   258,   265,   269,   276,   277,   284,
+     288,   295,   299,   306,   310,   317,   321,   325,   329,   333,
+     337,   341,   348,   352,   356,   363,   367,   374,   381,   385,
+     389,   393,   397,   401,   405,   409,   416,   420,   424,   431,
+     435,   439,   446,   450,   454,   461,   462,   463,   467,   471,
+     475,   479,   483,   487,   491,   495,   496,   497,   500,   502,
+     504
 };
 #endif
 
@@ -597,16 +604,17 @@ static const char *const yytname[] =
   "FLOAT", "INDEX", "AND", "JOIN", "EXIT", "HELP", "TXN_BEGIN",
   "TXN_COMMIT", "TXN_ABORT", "TXN_ROLLBACK", "ORDER_BY", "ENABLE_NESTLOOP",
   "ENABLE_SORTMERGE", "COUNT", "MAX", "MIN", "SUM", "AS", "GROUP",
-  "HAVING", "IN", "STATIC_CHECKPOINT", "LEQ", "NEQ", "GEQ", "T_EOF",
-  "IDENTIFIER", "VALUE_STRING", "VALUE_INT", "VALUE_FLOAT", "VALUE_BOOL",
-  "';'", "'='", "'('", "')'", "','", "'.'", "'<'", "'>'", "'*'", "$accept",
-  "start", "stmt", "txnStmt", "dbStmt", "setStmt", "ddl", "dml",
-  "fieldList", "colNameList", "field", "type", "valueList", "value",
-  "condition", "optWhereClause", "whereClause", "col", "colList", "op",
-  "expr", "setClauses", "setClause", "asClause", "select_item",
-  "select_list", "tableList", "opt_order_clause", "order_clause",
-  "opt_asc_desc", "group_by_clause", "having_clause", "having_clauses",
-  "set_knob_type", "tbName", "colName", "alias", YY_NULLPTR
+  "HAVING", "IN", "STATIC_CHECKPOINT", "LOAD", "OUTPUT_FILE", "ON", "OFF",
+  "LEQ", "NEQ", "GEQ", "T_EOF", "FILE_PATH", "IDENTIFIER", "VALUE_STRING",
+  "VALUE_INT", "VALUE_FLOAT", "VALUE_BOOL", "';'", "'='", "'('", "')'",
+  "','", "'.'", "'<'", "'>'", "'*'", "$accept", "start", "stmt", "txnStmt",
+  "dbStmt", "setStmt", "ddl", "dml", "fieldList", "colNameList", "field",
+  "type", "valueList", "value", "condition", "optWhereClause",
+  "whereClause", "col", "colList", "op", "expr", "setClauses", "setClause",
+  "asClause", "select_item", "select_list", "tableList",
+  "opt_order_clause", "order_clause", "opt_asc_desc", "group_by_clause",
+  "having_clause", "having_clauses", "set_knob_type", "tbName", "colName",
+  "alias", YY_NULLPTR
 };
 #endif
 
@@ -620,17 +628,17 @@ static const yytype_int16 yytoknum[] =
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,    59,    61,    40,    41,    44,    46,
-      60,    62,    42
+     305,   306,   307,   308,   309,   310,   311,   312,   313,    59,
+      61,    40,    41,    44,    46,    60,    62,    42
 };
 # endif
 
-#define YYPACT_NINF (-145)
+#define YYPACT_NINF (-135)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-95)
+#define YYTABLE_NINF (-99)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -639,26 +647,27 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     117,    13,     8,    14,   -37,    44,    40,   -37,     7,    22,
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,    57,    31,  -145,
-    -145,  -145,  -145,  -145,  -145,    49,   -37,   -37,  -145,   -37,
-     -37,  -145,  -145,   -37,   -37,    48,  -145,  -145,    32,    45,
-      50,    53,    61,    38,  -145,    65,  -145,   -11,    64,  -145,
-    -145,  -145,   -37,    71,    72,  -145,    75,   121,   116,    85,
-      89,   -34,    94,    94,    94,   101,  -145,   -37,   102,    85,
-    -145,    85,    85,    85,   110,    94,  -145,  -145,    -8,  -145,
-     113,  -145,   100,   112,   114,   115,   119,  -145,  -145,    10,
-    -145,  -145,  -145,    12,  -145,    73,    21,  -145,    24,    23,
-    -145,   133,    43,    85,  -145,    23,    65,    65,    65,    65,
-      65,   -37,   -37,   129,  -145,    85,  -145,   118,  -145,  -145,
-    -145,    85,  -145,  -145,  -145,  -145,  -145,    34,  -145,    94,
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,   103,  -145,  -145,
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,   157,   135,  -145,
-     127,  -145,  -145,    23,  -145,    -7,  -145,  -145,  -145,    94,
-     102,   164,   123,  -145,    22,    42,  -145,   124,    43,   156,
-     167,  -145,  -145,    -2,  -145,    94,   111,   102,    94,   -37,
-    -145,   165,  -145,    43,    41,  -145,    10,   111,  -145,  -145,
-    -145,   129,  -145,   135,   164,   130,  -145
+      98,    16,    15,    43,   -29,    12,    29,   -29,    38,    -1,
+    -135,  -135,  -135,  -135,  -135,  -135,     1,  -135,    50,    -7,
+    -135,  -135,  -135,  -135,  -135,  -135,    56,   -29,   -29,  -135,
+     -29,   -29,  -135,  -135,   -29,   -29,    66,  -135,  -135,  -135,
+     -32,    41,    52,    58,    61,    60,  -135,   109,  -135,    -3,
+      96,  -135,   151,  -135,  -135,   -29,   102,   103,  -135,   104,
+     155,   150,   114,  -135,  -135,   111,   -10,   116,   116,   116,
+     117,  -135,   -29,     9,   114,   -29,  -135,   114,   114,   114,
+     112,   116,  -135,  -135,    -5,  -135,   115,  -135,   110,   118,
+     121,   122,   123,  -135,  -135,    -8,  -135,  -135,  -135,  -135,
+      30,  -135,   119,    46,  -135,    82,    78,  -135,   149,    88,
+     114,  -135,    78,   109,   109,   109,   109,   109,   -29,   -29,
+     135,  -135,   114,  -135,   120,  -135,  -135,  -135,   114,  -135,
+    -135,  -135,  -135,  -135,    84,  -135,   116,  -135,  -135,  -135,
+    -135,  -135,  -135,  -135,    33,  -135,  -135,  -135,  -135,  -135,
+    -135,  -135,  -135,  -135,   161,   136,  -135,   130,  -135,  -135,
+      78,  -135,    23,  -135,  -135,  -135,   116,     9,   164,   125,
+    -135,    -1,    89,  -135,   126,    88,   163,   174,  -135,  -135,
+      -2,  -135,   116,   101,     9,   116,   -29,  -135,   171,  -135,
+      88,    62,  -135,    -8,   101,  -135,  -135,  -135,   135,  -135,
+     136,   164,   131,  -135
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -667,43 +676,44 @@ static const yytype_int16 yypact[] =
 static const yytype_int8 yydefact[] =
 {
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       4,     3,    11,    12,    13,    14,     5,     0,     0,     9,
-       6,    10,     7,     8,    15,     0,     0,     0,    19,     0,
-       0,    94,    21,     0,     0,     0,    92,    93,     0,     0,
-       0,     0,     0,    95,    73,    66,    74,     0,     0,    49,
-       1,     2,     0,     0,     0,    20,     0,     0,    44,     0,
-       0,     0,     0,     0,     0,     0,    67,     0,     0,     0,
-      16,     0,     0,     0,     0,     0,    25,    95,    44,    62,
-       0,    17,     0,     0,     0,     0,     0,    96,    65,    44,
-      76,    75,    48,     0,    28,     0,     0,    30,     0,     0,
-      46,    45,     0,     0,    26,     0,    66,    66,    66,    66,
-      66,     0,     0,    86,    18,     0,    33,     0,    35,    32,
-      22,     0,    23,    40,    38,    39,    41,     0,    36,     0,
-      58,    56,    55,    57,    52,    53,    54,     0,    63,    64,
-      68,    69,    70,    71,    72,    78,    77,     0,    91,    29,
-       0,    31,    24,     0,    47,     0,    59,    60,    42,     0,
-      89,    80,     0,    37,     0,     0,    50,    85,     0,    90,
-       0,    27,    34,     0,    43,     0,     0,     0,     0,     0,
-      51,     0,    87,     0,    84,    79,    44,     0,    83,    82,
-      81,    86,    88,    91,    80,     0,    61
+       6,     5,    13,    14,    15,    16,     0,     7,     0,     0,
+      11,     8,    12,     9,    10,    17,     0,     0,     0,    21,
+       0,     0,    98,    23,     0,     0,     0,    95,    96,    97,
+       0,     0,     0,     0,     0,    99,    76,    69,    77,     0,
+       0,    52,     0,     1,     2,     0,     0,     0,    22,     0,
+       0,    47,     0,     4,     3,     0,     0,     0,     0,     0,
+       0,    70,     0,     0,     0,     0,    18,     0,     0,     0,
+       0,     0,    28,    99,    47,    65,     0,    19,     0,     0,
+       0,     0,     0,   100,    68,    47,    79,    78,    51,    26,
+       0,    31,     0,     0,    33,     0,     0,    49,    48,     0,
+       0,    29,     0,    69,    69,    69,    69,    69,     0,     0,
+      89,    20,     0,    36,     0,    38,    35,    24,     0,    25,
+      43,    41,    42,    44,     0,    39,     0,    61,    59,    58,
+      60,    55,    56,    57,     0,    66,    67,    71,    72,    73,
+      74,    75,    81,    80,     0,    94,    32,     0,    34,    27,
+       0,    50,     0,    62,    63,    45,     0,    92,    83,     0,
+      40,     0,     0,    53,    88,     0,    93,     0,    30,    37,
+       0,    46,     0,     0,     0,     0,     0,    54,     0,    90,
+       0,    87,    82,    47,     0,    86,    85,    84,    89,    91,
+      94,    83,     0,    64
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,   120,
-      69,  -145,    33,   -89,    60,   -70,  -145,   -57,  -145,  -144,
-    -136,  -145,    83,     5,   -67,    26,    15,    -3,  -145,  -145,
-       1,  -145,     2,  -145,    -4,   -38,  -145
+    -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,   113,
+      72,  -135,    34,   -98,    59,   -82,  -135,   -62,  -135,  -134,
+    -108,  -135,    87,   -17,   -72,    27,    13,     0,  -135,  -135,
+       2,  -135,     3,  -135,    -4,   -45,  -135
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    17,    18,    19,    20,    21,    22,    23,    93,    96,
-      94,   119,   127,   156,   100,    76,   101,    45,   167,   137,
-     158,    78,    79,    66,    46,    47,    89,   171,   185,   190,
-     148,   169,   161,    38,    48,    49,    88
+      -1,    18,    19,    20,    21,    22,    23,    24,   100,   103,
+     101,   126,   134,   163,   107,    82,   108,    47,   174,   144,
+     165,    84,    85,    71,    48,    49,    95,   178,   192,   197,
+     155,   176,   168,    40,    50,    51,    94
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -711,50 +721,52 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      32,    91,    67,    35,    83,    84,    85,    86,   104,    75,
-     128,   179,    31,   164,    26,    43,   139,    24,   102,   113,
-      29,    80,    53,    54,   176,    55,    56,    75,    82,    57,
-      58,    92,    27,    95,    97,    97,   111,    25,    30,   187,
-     182,    36,    37,   123,   124,   125,   126,    68,    70,   188,
-     103,   192,    28,    34,    33,   189,    68,    50,    39,    40,
-      41,    42,    52,    90,   163,    80,   128,    59,   112,   114,
-     115,    43,   102,   123,   124,   125,   126,    95,   120,   121,
-     157,   122,   121,   151,    44,    51,   130,    60,   131,   132,
-     133,   152,   153,   168,   116,   117,   118,   -94,   134,   174,
-     153,    61,   166,   135,   136,    65,    62,   145,   146,    63,
-     183,   140,   141,   142,   143,   144,   191,    64,   180,   157,
-       1,   184,     2,    69,     3,     4,     5,    71,    72,     6,
-     157,    73,    74,    75,    77,     7,     8,     9,    39,    40,
-      41,    42,    81,    43,    10,    11,    12,    13,    14,    15,
-      87,    43,    43,   123,   124,   125,   126,   106,   129,   155,
-      43,   123,   124,   125,   126,    16,    99,   181,   105,   107,
-     147,   108,   109,   159,   150,    90,   110,   160,   162,   170,
-     172,   177,   175,   178,   149,   164,   138,   196,   165,   154,
-     173,   195,   193,    98,   186,   194
+      33,    97,   111,    36,    89,    90,    91,    92,   135,    81,
+      72,   186,    81,   120,   146,    63,    64,    86,   118,   109,
+      25,    27,    34,    56,    57,    32,    58,    59,    65,    98,
+      60,    61,   102,   104,   104,    41,    42,    43,    44,    28,
+      26,   183,    35,   171,    45,    41,    42,    43,    44,    30,
+      53,    76,    54,    45,    52,   119,   194,    88,   110,    29,
+      73,    73,   170,    45,   135,    86,    46,    31,    96,    55,
+     195,    99,    37,    38,   109,   189,   196,   102,   130,   131,
+     132,   133,   164,   158,    39,    62,   199,    45,   130,   131,
+     132,   133,   121,   122,   162,   175,   147,   148,   149,   150,
+     151,     1,    66,     2,   173,     3,     4,     5,   127,   128,
+       6,   198,   190,    67,   152,   153,     7,     8,     9,    68,
+     187,   164,    69,   191,   -98,    10,    11,    12,    13,    14,
+      15,   137,   164,   130,   131,   132,   133,   138,   139,   140,
+     123,   124,   125,    16,   129,   128,   159,   160,   141,    70,
+      17,   181,   160,   142,   143,    45,   130,   131,   132,   133,
+      74,    75,   188,    77,    78,    79,    80,    81,    83,    87,
+      45,    93,   113,   106,   136,   112,   154,   166,   167,   177,
+     114,   157,    96,   115,   116,   117,   169,   179,   184,   182,
+     185,   171,   105,   203,   156,   161,   172,   145,   180,   193,
+     200,   202,     0,   201
 };
 
-static const yytype_uint8 yycheck[] =
+static const yytype_int16 yycheck[] =
 {
-       4,    68,    13,     7,    61,    62,    63,    64,    78,    17,
-      99,    13,    49,    20,     6,    49,   105,     4,    75,    89,
-       6,    59,    26,    27,   168,    29,    30,    17,    62,    33,
-      34,    69,    24,    71,    72,    73,    26,    24,    24,   183,
-     176,    34,    35,    50,    51,    52,    53,    58,    52,     8,
-      58,   187,    44,    13,    10,    14,    58,     0,    36,    37,
-      38,    39,    13,    67,   153,   103,   155,    19,    58,    57,
-      58,    49,   129,    50,    51,    52,    53,   115,    57,    58,
-     137,    57,    58,   121,    62,    54,    43,    55,    45,    46,
-      47,    57,    58,   160,    21,    22,    23,    59,    55,    57,
-      58,    56,   159,    60,    61,    40,    56,   111,   112,    56,
-     177,   106,   107,   108,   109,   110,   186,    56,   175,   176,
-       3,   178,     5,    59,     7,     8,     9,    56,    56,    12,
-     187,    56,    11,    17,    49,    18,    19,    20,    36,    37,
-      38,    39,    53,    49,    27,    28,    29,    30,    31,    32,
-      49,    49,    49,    50,    51,    52,    53,    57,    25,    56,
-      49,    50,    51,    52,    53,    48,    56,    56,    55,    57,
-      41,    57,    57,    16,    56,   179,    57,    42,    51,    15,
-      57,    25,    58,    16,   115,    20,   103,    57,   155,   129,
-     164,   194,   191,    73,   179,   193
+       4,    73,    84,     7,    66,    67,    68,    69,   106,    17,
+      13,    13,    17,    95,   112,    47,    48,    62,    26,    81,
+       4,     6,    10,    27,    28,    54,    30,    31,    60,    74,
+      34,    35,    77,    78,    79,    36,    37,    38,    39,    24,
+      24,   175,    13,    20,    54,    36,    37,    38,    39,     6,
+       0,    55,    59,    54,    53,    63,   190,    67,    63,    44,
+      63,    63,   160,    54,   162,   110,    67,    24,    72,    13,
+       8,    75,    34,    35,   136,   183,    14,   122,    55,    56,
+      57,    58,   144,   128,    46,    19,   194,    54,    55,    56,
+      57,    58,    62,    63,    61,   167,   113,   114,   115,   116,
+     117,     3,    61,     5,   166,     7,     8,     9,    62,    63,
+      12,   193,   184,    61,   118,   119,    18,    19,    20,    61,
+     182,   183,    61,   185,    64,    27,    28,    29,    30,    31,
+      32,    43,   194,    55,    56,    57,    58,    49,    50,    51,
+      21,    22,    23,    45,    62,    63,    62,    63,    60,    40,
+      52,    62,    63,    65,    66,    54,    55,    56,    57,    58,
+      64,    10,    61,    61,    61,    61,    11,    17,    54,    58,
+      54,    54,    62,    61,    25,    60,    41,    16,    42,    15,
+      62,    61,   186,    62,    62,    62,    56,    62,    25,    63,
+      16,    20,    79,    62,   122,   136,   162,   110,   171,   186,
+     198,   201,    -1,   200
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -762,55 +774,58 @@ static const yytype_uint8 yycheck[] =
 static const yytype_int8 yystos[] =
 {
        0,     3,     5,     7,     8,     9,    12,    18,    19,    20,
-      27,    28,    29,    30,    31,    32,    48,    64,    65,    66,
-      67,    68,    69,    70,     4,    24,     6,    24,    44,     6,
-      24,    49,    97,    10,    13,    97,    34,    35,    96,    36,
-      37,    38,    39,    49,    62,    80,    87,    88,    97,    98,
-       0,    54,    13,    97,    97,    97,    97,    97,    97,    19,
-      55,    56,    56,    56,    56,    40,    86,    13,    58,    59,
-      97,    56,    56,    56,    11,    17,    78,    49,    84,    85,
-      98,    53,    62,    80,    80,    80,    80,    49,    99,    89,
-      97,    87,    98,    71,    73,    98,    72,    98,    72,    56,
-      77,    79,    80,    58,    78,    55,    57,    57,    57,    57,
-      57,    26,    58,    78,    57,    58,    21,    22,    23,    74,
-      57,    58,    57,    50,    51,    52,    53,    75,    76,    25,
-      43,    45,    46,    47,    55,    60,    61,    82,    85,    76,
-      86,    86,    86,    86,    86,    97,    97,    41,    93,    73,
-      56,    98,    57,    58,    77,    56,    76,    80,    83,    16,
-      42,    95,    51,    76,    20,    75,    80,    81,    87,    94,
-      15,    90,    57,    88,    57,    58,    82,    25,    16,    13,
-      80,    56,    83,    87,    80,    91,    89,    82,     8,    14,
-      92,    78,    83,    93,    95,    90,    57
+      27,    28,    29,    30,    31,    32,    45,    52,    69,    70,
+      71,    72,    73,    74,    75,     4,    24,     6,    24,    44,
+       6,    24,    54,   102,    10,    13,   102,    34,    35,    46,
+     101,    36,    37,    38,    39,    54,    67,    85,    92,    93,
+     102,   103,    53,     0,    59,    13,   102,   102,   102,   102,
+     102,   102,    19,    47,    48,    60,    61,    61,    61,    61,
+      40,    91,    13,    63,    64,    10,   102,    61,    61,    61,
+      11,    17,    83,    54,    89,    90,   103,    58,    67,    85,
+      85,    85,    85,    54,   104,    94,   102,    92,   103,   102,
+      76,    78,   103,    77,   103,    77,    61,    82,    84,    85,
+      63,    83,    60,    62,    62,    62,    62,    62,    26,    63,
+      83,    62,    63,    21,    22,    23,    79,    62,    63,    62,
+      55,    56,    57,    58,    80,    81,    25,    43,    49,    50,
+      51,    60,    65,    66,    87,    90,    81,    91,    91,    91,
+      91,    91,   102,   102,    41,    98,    78,    61,   103,    62,
+      63,    82,    61,    81,    85,    88,    16,    42,   100,    56,
+      81,    20,    80,    85,    86,    92,    99,    15,    95,    62,
+      93,    62,    63,    87,    25,    16,    13,    85,    61,    88,
+      92,    85,    96,    94,    87,     8,    14,    97,    83,    88,
+      98,   100,    95,    62
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_int8 yyr1[] =
 {
-       0,    63,    64,    64,    64,    64,    65,    65,    65,    65,
-      65,    66,    66,    66,    66,    67,    67,    68,    69,    69,
-      69,    69,    69,    69,    70,    70,    70,    70,    71,    71,
-      72,    72,    73,    74,    74,    74,    75,    75,    76,    76,
-      76,    76,    77,    77,    78,    78,    79,    79,    80,    80,
-      81,    81,    82,    82,    82,    82,    82,    82,    82,    83,
-      83,    83,    84,    84,    85,    86,    86,    87,    87,    87,
-      87,    87,    87,    88,    88,    88,    89,    89,    89,    90,
-      90,    91,    92,    92,    92,    93,    93,    94,    94,    94,
-      95,    95,    96,    96,    97,    98,    99
+       0,    68,    69,    69,    69,    69,    69,    69,    70,    70,
+      70,    70,    70,    71,    71,    71,    71,    72,    72,    73,
+      74,    74,    74,    74,    74,    74,    75,    75,    75,    75,
+      75,    76,    76,    77,    77,    78,    79,    79,    79,    80,
+      80,    81,    81,    81,    81,    82,    82,    83,    83,    84,
+      84,    85,    85,    86,    86,    87,    87,    87,    87,    87,
+      87,    87,    88,    88,    88,    89,    89,    90,    91,    91,
+      92,    92,    92,    92,    92,    92,    93,    93,    93,    94,
+      94,    94,    95,    95,    96,    97,    97,    97,    98,    98,
+      99,    99,    99,   100,   100,   101,   101,   101,   102,   103,
+     104
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_int8 yyr2[] =
 {
-       0,     2,     2,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     4,     4,     6,     2,
-       3,     2,     6,     6,     7,     4,     5,     8,     1,     3,
-       1,     3,     2,     1,     4,     1,     1,     3,     1,     1,
-       1,     1,     3,     5,     0,     2,     1,     3,     3,     1,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,    10,     1,     3,     3,     2,     0,     2,     5,     5,
-       5,     5,     5,     1,     1,     3,     1,     3,     3,     3,
-       0,     2,     1,     1,     0,     3,     0,     3,     5,     0,
-       2,     0,     1,     1,     1,     1,     1
+       0,     2,     2,     3,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     4,     4,
+       6,     2,     3,     2,     6,     6,     4,     7,     4,     5,
+       8,     1,     3,     1,     3,     2,     1,     4,     1,     1,
+       3,     1,     1,     1,     1,     3,     5,     0,     2,     1,
+       3,     3,     1,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,    10,     1,     3,     3,     2,     0,
+       2,     5,     5,     5,     5,     5,     1,     1,     3,     1,
+       3,     3,     3,     0,     2,     1,     1,     0,     3,     0,
+       3,     5,     0,     2,     0,     1,     1,     1,     1,     1,
+       1
 };
 
 
@@ -1612,680 +1627,712 @@ yyreduce:
         parse_tree = (yyvsp[-1].sv_node);
         YYACCEPT;
     }
-#line 1616 "yacc.tab.cpp"
+#line 1631 "yacc.tab.cpp"
     break;
 
   case 3:
 #line 69 "yacc.y"
     {
-        parse_tree = std::make_shared<Help>();
+        parse_tree = std::make_shared<SetStmt>((yyvsp[-1].sv_setKnobType), false);
         YYACCEPT;
     }
-#line 1625 "yacc.tab.cpp"
+#line 1640 "yacc.tab.cpp"
     break;
 
   case 4:
 #line 74 "yacc.y"
     {
-        parse_tree = nullptr;
+        parse_tree = std::make_shared<SetStmt>((yyvsp[-1].sv_setKnobType), true);
         YYACCEPT;
     }
-#line 1634 "yacc.tab.cpp"
+#line 1649 "yacc.tab.cpp"
     break;
 
   case 5:
 #line 79 "yacc.y"
+    {
+        parse_tree = std::make_shared<Help>();
+        YYACCEPT;
+    }
+#line 1658 "yacc.tab.cpp"
+    break;
+
+  case 6:
+#line 84 "yacc.y"
     {
         parse_tree = nullptr;
         YYACCEPT;
     }
-#line 1643 "yacc.tab.cpp"
+#line 1667 "yacc.tab.cpp"
     break;
 
-  case 11:
-#line 95 "yacc.y"
+  case 7:
+#line 89 "yacc.y"
+    {
+        parse_tree = nullptr;
+        YYACCEPT;
+    }
+#line 1676 "yacc.tab.cpp"
+    break;
+
+  case 13:
+#line 105 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<TxnBegin>();
     }
-#line 1651 "yacc.tab.cpp"
+#line 1684 "yacc.tab.cpp"
     break;
 
-  case 12:
-#line 99 "yacc.y"
+  case 14:
+#line 109 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<TxnCommit>();
     }
-#line 1659 "yacc.tab.cpp"
+#line 1692 "yacc.tab.cpp"
     break;
 
-  case 13:
-#line 103 "yacc.y"
+  case 15:
+#line 113 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<TxnAbort>();
     }
-#line 1667 "yacc.tab.cpp"
+#line 1700 "yacc.tab.cpp"
     break;
 
-  case 14:
-#line 107 "yacc.y"
+  case 16:
+#line 117 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<TxnRollback>();
     }
-#line 1675 "yacc.tab.cpp"
+#line 1708 "yacc.tab.cpp"
     break;
 
-  case 15:
-#line 114 "yacc.y"
+  case 17:
+#line 124 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<ShowTables>();
     }
-#line 1683 "yacc.tab.cpp"
+#line 1716 "yacc.tab.cpp"
     break;
 
-  case 16:
-#line 118 "yacc.y"
+  case 18:
+#line 128 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<ShowIndexs>((yyvsp[0].sv_str));
     }
-#line 1691 "yacc.tab.cpp"
+#line 1724 "yacc.tab.cpp"
     break;
 
-  case 17:
-#line 125 "yacc.y"
+  case 19:
+#line 135 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<SetStmt>((yyvsp[-2].sv_setKnobType), (yyvsp[0].sv_bool));
     }
-#line 1699 "yacc.tab.cpp"
+#line 1732 "yacc.tab.cpp"
     break;
 
-  case 18:
-#line 132 "yacc.y"
+  case 20:
+#line 142 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<CreateTable>((yyvsp[-3].sv_str), (yyvsp[-1].sv_fields));
     }
-#line 1707 "yacc.tab.cpp"
+#line 1740 "yacc.tab.cpp"
     break;
 
-  case 19:
-#line 136 "yacc.y"
+  case 21:
+#line 146 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<CreateStaticCheckpoint>();
     }
-#line 1715 "yacc.tab.cpp"
+#line 1748 "yacc.tab.cpp"
     break;
 
-  case 20:
-#line 140 "yacc.y"
+  case 22:
+#line 150 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<DropTable>((yyvsp[0].sv_str));
     }
-#line 1723 "yacc.tab.cpp"
+#line 1756 "yacc.tab.cpp"
     break;
 
-  case 21:
-#line 144 "yacc.y"
+  case 23:
+#line 154 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<DescTable>((yyvsp[0].sv_str));
     }
-#line 1731 "yacc.tab.cpp"
+#line 1764 "yacc.tab.cpp"
     break;
 
-  case 22:
-#line 148 "yacc.y"
+  case 24:
+#line 158 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<CreateIndex>((yyvsp[-3].sv_str), (yyvsp[-1].sv_strs));
     }
-#line 1739 "yacc.tab.cpp"
+#line 1772 "yacc.tab.cpp"
     break;
 
-  case 23:
-#line 152 "yacc.y"
+  case 25:
+#line 162 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<DropIndex>((yyvsp[-3].sv_str), (yyvsp[-1].sv_strs));
     }
-#line 1747 "yacc.tab.cpp"
+#line 1780 "yacc.tab.cpp"
     break;
 
-  case 24:
-#line 159 "yacc.y"
+  case 26:
+#line 169 "yacc.y"
+    {
+        (yyval.sv_node) = std::make_shared<LoadStmt>((yyvsp[-2].sv_str), (yyvsp[0].sv_str));
+    }
+#line 1788 "yacc.tab.cpp"
+    break;
+
+  case 27:
+#line 173 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<InsertStmt>((yyvsp[-4].sv_str), (yyvsp[-1].sv_vals));
     }
-#line 1755 "yacc.tab.cpp"
+#line 1796 "yacc.tab.cpp"
     break;
 
-  case 25:
-#line 163 "yacc.y"
+  case 28:
+#line 177 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<DeleteStmt>((yyvsp[-1].sv_str), (yyvsp[0].sv_conds));
     }
-#line 1763 "yacc.tab.cpp"
+#line 1804 "yacc.tab.cpp"
     break;
 
-  case 26:
-#line 167 "yacc.y"
+  case 29:
+#line 181 "yacc.y"
     {
         (yyval.sv_node) = std::make_shared<UpdateStmt>((yyvsp[-3].sv_str), (yyvsp[-1].sv_set_clauses), (yyvsp[0].sv_conds));
     }
-#line 1771 "yacc.tab.cpp"
+#line 1812 "yacc.tab.cpp"
     break;
 
-  case 27:
-#line 171 "yacc.y"
+  case 30:
+#line 185 "yacc.y"
     {
         (yyval.sv_node) = std::static_pointer_cast<Expr>(std::make_shared<SelectStmt>((yyvsp[-6].sv_bounds), (yyvsp[-4].sv_strs), (yyvsp[-3].sv_conds), (yyvsp[-2].sv_cols), (yyvsp[-1].sv_havings), (yyvsp[0].sv_orderby)));
     }
-#line 1779 "yacc.tab.cpp"
+#line 1820 "yacc.tab.cpp"
     break;
 
-  case 28:
-#line 178 "yacc.y"
+  case 31:
+#line 192 "yacc.y"
     {
         (yyval.sv_fields) = std::vector<std::shared_ptr<Field>>{(yyvsp[0].sv_field)};
     }
-#line 1787 "yacc.tab.cpp"
+#line 1828 "yacc.tab.cpp"
     break;
 
-  case 29:
-#line 182 "yacc.y"
+  case 32:
+#line 196 "yacc.y"
     {
         (yyval.sv_fields).push_back((yyvsp[0].sv_field));
     }
-#line 1795 "yacc.tab.cpp"
+#line 1836 "yacc.tab.cpp"
     break;
 
-  case 30:
-#line 189 "yacc.y"
+  case 33:
+#line 203 "yacc.y"
     {
         (yyval.sv_strs) = std::vector<std::string>{(yyvsp[0].sv_str)};
     }
-#line 1803 "yacc.tab.cpp"
+#line 1844 "yacc.tab.cpp"
     break;
 
-  case 31:
-#line 193 "yacc.y"
+  case 34:
+#line 207 "yacc.y"
     {
         (yyval.sv_strs).push_back((yyvsp[0].sv_str));
     }
-#line 1811 "yacc.tab.cpp"
+#line 1852 "yacc.tab.cpp"
     break;
 
-  case 32:
-#line 200 "yacc.y"
+  case 35:
+#line 214 "yacc.y"
     {
         (yyval.sv_field) = std::make_shared<ColDef>((yyvsp[-1].sv_str), (yyvsp[0].sv_type_len));
     }
-#line 1819 "yacc.tab.cpp"
+#line 1860 "yacc.tab.cpp"
     break;
 
-  case 33:
-#line 207 "yacc.y"
+  case 36:
+#line 221 "yacc.y"
     {
         (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_INT, sizeof(int));
     }
-#line 1827 "yacc.tab.cpp"
+#line 1868 "yacc.tab.cpp"
     break;
 
-  case 34:
-#line 211 "yacc.y"
+  case 37:
+#line 225 "yacc.y"
     {
         (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_STRING, (yyvsp[-1].sv_int));
     }
-#line 1835 "yacc.tab.cpp"
+#line 1876 "yacc.tab.cpp"
     break;
 
-  case 35:
-#line 215 "yacc.y"
+  case 38:
+#line 229 "yacc.y"
     {
         (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_FLOAT, sizeof(float));
     }
-#line 1843 "yacc.tab.cpp"
+#line 1884 "yacc.tab.cpp"
     break;
 
-  case 36:
-#line 222 "yacc.y"
+  case 39:
+#line 236 "yacc.y"
     {
         (yyval.sv_vals) = std::vector<std::shared_ptr<Value>>{(yyvsp[0].sv_val)};
     }
-#line 1851 "yacc.tab.cpp"
+#line 1892 "yacc.tab.cpp"
     break;
 
-  case 37:
-#line 226 "yacc.y"
+  case 40:
+#line 240 "yacc.y"
     {
         (yyval.sv_vals).push_back((yyvsp[0].sv_val));
     }
-#line 1859 "yacc.tab.cpp"
+#line 1900 "yacc.tab.cpp"
     break;
 
-  case 38:
-#line 233 "yacc.y"
+  case 41:
+#line 247 "yacc.y"
     {
         (yyval.sv_val) = std::make_shared<IntLit>((yyvsp[0].sv_int));
     }
-#line 1867 "yacc.tab.cpp"
+#line 1908 "yacc.tab.cpp"
     break;
 
-  case 39:
-#line 237 "yacc.y"
+  case 42:
+#line 251 "yacc.y"
     {
         (yyval.sv_val) = std::make_shared<FloatLit>((yyvsp[0].sv_float));
     }
-#line 1875 "yacc.tab.cpp"
+#line 1916 "yacc.tab.cpp"
     break;
 
-  case 40:
-#line 241 "yacc.y"
+  case 43:
+#line 255 "yacc.y"
     {
         (yyval.sv_val) = std::make_shared<StringLit>((yyvsp[0].sv_str));
     }
-#line 1883 "yacc.tab.cpp"
+#line 1924 "yacc.tab.cpp"
     break;
 
-  case 41:
-#line 245 "yacc.y"
+  case 44:
+#line 259 "yacc.y"
     {
         (yyval.sv_val) = std::make_shared<BoolLit>((yyvsp[0].sv_bool));
     }
-#line 1891 "yacc.tab.cpp"
+#line 1932 "yacc.tab.cpp"
     break;
 
-  case 42:
-#line 252 "yacc.y"
+  case 45:
+#line 266 "yacc.y"
     {
         (yyval.sv_cond) = std::make_shared<BinaryExpr>((yyvsp[-2].sv_col), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr));
     }
-#line 1899 "yacc.tab.cpp"
+#line 1940 "yacc.tab.cpp"
     break;
 
-  case 43:
-#line 256 "yacc.y"
+  case 46:
+#line 270 "yacc.y"
     {
         (yyval.sv_cond) = std::make_shared<BinaryExpr>((yyvsp[-4].sv_col), (yyvsp[-3].sv_comp_op), (yyvsp[-1].sv_vals));
     }
-#line 1907 "yacc.tab.cpp"
+#line 1948 "yacc.tab.cpp"
     break;
 
-  case 44:
-#line 262 "yacc.y"
+  case 47:
+#line 276 "yacc.y"
                       { /* ignore*/ }
-#line 1913 "yacc.tab.cpp"
+#line 1954 "yacc.tab.cpp"
     break;
 
-  case 45:
-#line 264 "yacc.y"
+  case 48:
+#line 278 "yacc.y"
     {
         (yyval.sv_conds) = (yyvsp[0].sv_conds);
     }
-#line 1921 "yacc.tab.cpp"
+#line 1962 "yacc.tab.cpp"
     break;
 
-  case 46:
-#line 271 "yacc.y"
+  case 49:
+#line 285 "yacc.y"
     {
         (yyval.sv_conds) = std::vector<std::shared_ptr<BinaryExpr>>{(yyvsp[0].sv_cond)};
     }
-#line 1929 "yacc.tab.cpp"
+#line 1970 "yacc.tab.cpp"
     break;
 
-  case 47:
-#line 275 "yacc.y"
+  case 50:
+#line 289 "yacc.y"
     {
         (yyval.sv_conds).push_back((yyvsp[0].sv_cond));
     }
-#line 1937 "yacc.tab.cpp"
+#line 1978 "yacc.tab.cpp"
     break;
 
-  case 48:
-#line 282 "yacc.y"
+  case 51:
+#line 296 "yacc.y"
     {
         (yyval.sv_col) = std::make_shared<Col>((yyvsp[-2].sv_str), (yyvsp[0].sv_str));
     }
-#line 1945 "yacc.tab.cpp"
+#line 1986 "yacc.tab.cpp"
     break;
 
-  case 49:
-#line 286 "yacc.y"
+  case 52:
+#line 300 "yacc.y"
     {
         (yyval.sv_col) = std::make_shared<Col>("", (yyvsp[0].sv_str));
     }
-#line 1953 "yacc.tab.cpp"
+#line 1994 "yacc.tab.cpp"
     break;
 
-  case 50:
-#line 293 "yacc.y"
+  case 53:
+#line 307 "yacc.y"
     {
         (yyval.sv_cols) = std::vector<std::shared_ptr<Col>>{(yyvsp[0].sv_col)};
     }
-#line 1961 "yacc.tab.cpp"
+#line 2002 "yacc.tab.cpp"
     break;
 
-  case 51:
-#line 297 "yacc.y"
+  case 54:
+#line 311 "yacc.y"
     {
         (yyval.sv_cols).push_back((yyvsp[0].sv_col));
     }
-#line 1969 "yacc.tab.cpp"
+#line 2010 "yacc.tab.cpp"
     break;
 
-  case 52:
-#line 304 "yacc.y"
+  case 55:
+#line 318 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_EQ;
     }
-#line 1977 "yacc.tab.cpp"
+#line 2018 "yacc.tab.cpp"
     break;
 
-  case 53:
-#line 308 "yacc.y"
+  case 56:
+#line 322 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_LT;
     }
-#line 1985 "yacc.tab.cpp"
+#line 2026 "yacc.tab.cpp"
     break;
 
-  case 54:
-#line 312 "yacc.y"
+  case 57:
+#line 326 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_GT;
     }
-#line 1993 "yacc.tab.cpp"
+#line 2034 "yacc.tab.cpp"
     break;
 
-  case 55:
-#line 316 "yacc.y"
+  case 58:
+#line 330 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_NE;
     }
-#line 2001 "yacc.tab.cpp"
+#line 2042 "yacc.tab.cpp"
     break;
 
-  case 56:
-#line 320 "yacc.y"
+  case 59:
+#line 334 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_LE;
     }
-#line 2009 "yacc.tab.cpp"
+#line 2050 "yacc.tab.cpp"
     break;
 
-  case 57:
-#line 324 "yacc.y"
+  case 60:
+#line 338 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_GE;
     }
-#line 2017 "yacc.tab.cpp"
+#line 2058 "yacc.tab.cpp"
     break;
 
-  case 58:
-#line 328 "yacc.y"
+  case 61:
+#line 342 "yacc.y"
     {
         (yyval.sv_comp_op) = SV_OP_IN;
     }
-#line 2025 "yacc.tab.cpp"
+#line 2066 "yacc.tab.cpp"
     break;
 
-  case 59:
-#line 335 "yacc.y"
+  case 62:
+#line 349 "yacc.y"
     {
         (yyval.sv_expr) = std::static_pointer_cast<Expr>((yyvsp[0].sv_val));
     }
-#line 2033 "yacc.tab.cpp"
+#line 2074 "yacc.tab.cpp"
     break;
 
-  case 60:
-#line 339 "yacc.y"
+  case 63:
+#line 353 "yacc.y"
     {
         (yyval.sv_expr) = std::static_pointer_cast<Expr>((yyvsp[0].sv_col));
     }
-#line 2041 "yacc.tab.cpp"
+#line 2082 "yacc.tab.cpp"
     break;
 
-  case 61:
-#line 343 "yacc.y"
+  case 64:
+#line 357 "yacc.y"
     {
         (yyval.sv_expr) = std::make_shared<SelectStmt>((yyvsp[-7].sv_bounds), (yyvsp[-5].sv_strs), (yyvsp[-4].sv_conds), (yyvsp[-3].sv_cols), (yyvsp[-2].sv_havings), (yyvsp[-1].sv_orderby));
     }
-#line 2049 "yacc.tab.cpp"
+#line 2090 "yacc.tab.cpp"
     break;
 
-  case 62:
-#line 350 "yacc.y"
+  case 65:
+#line 364 "yacc.y"
     {
         (yyval.sv_set_clauses) = std::vector<std::shared_ptr<SetClause>>{(yyvsp[0].sv_set_clause)};
     }
-#line 2057 "yacc.tab.cpp"
+#line 2098 "yacc.tab.cpp"
     break;
 
-  case 63:
-#line 354 "yacc.y"
+  case 66:
+#line 368 "yacc.y"
     {
         (yyval.sv_set_clauses).push_back((yyvsp[0].sv_set_clause));
     }
-#line 2065 "yacc.tab.cpp"
+#line 2106 "yacc.tab.cpp"
     break;
 
-  case 64:
-#line 361 "yacc.y"
+  case 67:
+#line 375 "yacc.y"
     {
         (yyval.sv_set_clause) = std::make_shared<SetClause>((yyvsp[-2].sv_str), (yyvsp[0].sv_val));
     }
-#line 2073 "yacc.tab.cpp"
+#line 2114 "yacc.tab.cpp"
     break;
 
-  case 65:
-#line 368 "yacc.y"
+  case 68:
+#line 382 "yacc.y"
     {
         (yyval.sv_str) = (yyvsp[0].sv_str);
     }
-#line 2081 "yacc.tab.cpp"
+#line 2122 "yacc.tab.cpp"
     break;
 
-  case 66:
-#line 371 "yacc.y"
+  case 69:
+#line 385 "yacc.y"
         { (yyval.sv_str) = ""; }
-#line 2087 "yacc.tab.cpp"
+#line 2128 "yacc.tab.cpp"
     break;
 
-  case 67:
-#line 376 "yacc.y"
+  case 70:
+#line 390 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-1].sv_col), AGG_COL, (yyvsp[0].sv_str));
     }
-#line 2095 "yacc.tab.cpp"
+#line 2136 "yacc.tab.cpp"
     break;
 
-  case 68:
-#line 380 "yacc.y"
+  case 71:
+#line 394 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>(std::make_shared<Col>("", ""), AGG_COUNT, (yyvsp[0].sv_str));
     }
-#line 2103 "yacc.tab.cpp"
+#line 2144 "yacc.tab.cpp"
     break;
 
-  case 69:
-#line 384 "yacc.y"
+  case 72:
+#line 398 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_COUNT, (yyvsp[0].sv_str));
     }
-#line 2111 "yacc.tab.cpp"
+#line 2152 "yacc.tab.cpp"
     break;
 
-  case 70:
-#line 388 "yacc.y"
+  case 73:
+#line 402 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_MAX, (yyvsp[0].sv_str));
     }
-#line 2119 "yacc.tab.cpp"
+#line 2160 "yacc.tab.cpp"
     break;
 
-  case 71:
-#line 392 "yacc.y"
+  case 74:
+#line 406 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_MIN, (yyvsp[0].sv_str));
     }
-#line 2127 "yacc.tab.cpp"
+#line 2168 "yacc.tab.cpp"
     break;
 
-  case 72:
-#line 396 "yacc.y"
+  case 75:
+#line 410 "yacc.y"
     {
         (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_SUM, (yyvsp[0].sv_str));
     }
-#line 2135 "yacc.tab.cpp"
+#line 2176 "yacc.tab.cpp"
     break;
 
-  case 73:
-#line 403 "yacc.y"
+  case 76:
+#line 417 "yacc.y"
     {
         (yyval.sv_bounds) = {};
     }
-#line 2143 "yacc.tab.cpp"
+#line 2184 "yacc.tab.cpp"
     break;
 
-  case 74:
-#line 407 "yacc.y"
+  case 77:
+#line 421 "yacc.y"
     {
         (yyval.sv_bounds) = std::vector<std::shared_ptr<BoundExpr>>{(yyvsp[0].sv_bound)};
     }
-#line 2151 "yacc.tab.cpp"
+#line 2192 "yacc.tab.cpp"
     break;
 
-  case 75:
-#line 411 "yacc.y"
+  case 78:
+#line 425 "yacc.y"
     {
         (yyval.sv_bounds).push_back((yyvsp[0].sv_bound));
     }
-#line 2159 "yacc.tab.cpp"
+#line 2200 "yacc.tab.cpp"
     break;
 
-  case 76:
-#line 418 "yacc.y"
+  case 79:
+#line 432 "yacc.y"
     {
         (yyval.sv_strs) = std::vector<std::string>{(yyvsp[0].sv_str)};
     }
-#line 2167 "yacc.tab.cpp"
+#line 2208 "yacc.tab.cpp"
     break;
 
-  case 77:
-#line 422 "yacc.y"
+  case 80:
+#line 436 "yacc.y"
     {
         (yyval.sv_strs).push_back((yyvsp[0].sv_str));
     }
-#line 2175 "yacc.tab.cpp"
+#line 2216 "yacc.tab.cpp"
     break;
 
-  case 78:
-#line 426 "yacc.y"
+  case 81:
+#line 440 "yacc.y"
     {
         (yyval.sv_strs).push_back((yyvsp[0].sv_str));
     }
-#line 2183 "yacc.tab.cpp"
+#line 2224 "yacc.tab.cpp"
     break;
 
-  case 79:
-#line 433 "yacc.y"
+  case 82:
+#line 447 "yacc.y"
     { 
         (yyval.sv_orderby) = (yyvsp[0].sv_orderby); 
     }
-#line 2191 "yacc.tab.cpp"
+#line 2232 "yacc.tab.cpp"
     break;
 
-  case 80:
-#line 436 "yacc.y"
+  case 83:
+#line 450 "yacc.y"
                       { /* ignore*/ }
-#line 2197 "yacc.tab.cpp"
+#line 2238 "yacc.tab.cpp"
     break;
 
-  case 81:
-#line 441 "yacc.y"
+  case 84:
+#line 455 "yacc.y"
     { 
         (yyval.sv_orderby) = std::make_shared<OrderBy>((yyvsp[-1].sv_col), (yyvsp[0].sv_orderby_dir));
     }
-#line 2205 "yacc.tab.cpp"
+#line 2246 "yacc.tab.cpp"
     break;
 
-  case 82:
-#line 447 "yacc.y"
+  case 85:
+#line 461 "yacc.y"
                  { (yyval.sv_orderby_dir) = OrderBy_ASC;     }
-#line 2211 "yacc.tab.cpp"
+#line 2252 "yacc.tab.cpp"
     break;
 
-  case 83:
-#line 448 "yacc.y"
+  case 86:
+#line 462 "yacc.y"
                  { (yyval.sv_orderby_dir) = OrderBy_DESC;    }
-#line 2217 "yacc.tab.cpp"
+#line 2258 "yacc.tab.cpp"
     break;
 
-  case 84:
-#line 449 "yacc.y"
+  case 87:
+#line 463 "yacc.y"
             { (yyval.sv_orderby_dir) = OrderBy_DEFAULT; }
-#line 2223 "yacc.tab.cpp"
+#line 2264 "yacc.tab.cpp"
     break;
 
-  case 85:
-#line 454 "yacc.y"
+  case 88:
+#line 468 "yacc.y"
     {
         (yyval.sv_cols) = (yyvsp[0].sv_cols);
     }
-#line 2231 "yacc.tab.cpp"
+#line 2272 "yacc.tab.cpp"
     break;
 
-  case 86:
-#line 457 "yacc.y"
+  case 89:
+#line 471 "yacc.y"
                       { /* ignore*/ }
-#line 2237 "yacc.tab.cpp"
+#line 2278 "yacc.tab.cpp"
     break;
 
-  case 87:
-#line 462 "yacc.y"
+  case 90:
+#line 476 "yacc.y"
     {
         (yyval.sv_havings).emplace_back(std::make_shared<HavingExpr>((yyvsp[-2].sv_bound), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr)));
     }
-#line 2245 "yacc.tab.cpp"
+#line 2286 "yacc.tab.cpp"
     break;
 
-  case 88:
-#line 466 "yacc.y"
+  case 91:
+#line 480 "yacc.y"
     {
         (yyval.sv_havings).emplace_back(std::make_shared<HavingExpr>((yyvsp[-2].sv_bound), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr)));
     }
-#line 2253 "yacc.tab.cpp"
+#line 2294 "yacc.tab.cpp"
     break;
 
-  case 89:
-#line 469 "yacc.y"
+  case 92:
+#line 483 "yacc.y"
                       { /* ignore*/ }
-#line 2259 "yacc.tab.cpp"
+#line 2300 "yacc.tab.cpp"
     break;
 
-  case 90:
-#line 474 "yacc.y"
+  case 93:
+#line 488 "yacc.y"
     {
         (yyval.sv_havings) = (yyvsp[0].sv_havings);
     }
-#line 2267 "yacc.tab.cpp"
+#line 2308 "yacc.tab.cpp"
     break;
 
-  case 91:
-#line 477 "yacc.y"
+  case 94:
+#line 491 "yacc.y"
                       { /* ignore*/ }
-#line 2273 "yacc.tab.cpp"
+#line 2314 "yacc.tab.cpp"
     break;
 
-  case 92:
-#line 481 "yacc.y"
-                    { (yyval.sv_setKnobType) = EnableNestLoop; }
-#line 2279 "yacc.tab.cpp"
+  case 95:
+#line 495 "yacc.y"
+                        { (yyval.sv_setKnobType) = EnableNestLoop; }
+#line 2320 "yacc.tab.cpp"
     break;
 
-  case 93:
-#line 482 "yacc.y"
+  case 96:
+#line 496 "yacc.y"
                          { (yyval.sv_setKnobType) = EnableSortMerge; }
-#line 2285 "yacc.tab.cpp"
+#line 2326 "yacc.tab.cpp"
+    break;
+
+  case 97:
+#line 497 "yacc.y"
+                    { (yyval.sv_setKnobType) = EnableOutputFile; }
+#line 2332 "yacc.tab.cpp"
     break;
 
 
-#line 2289 "yacc.tab.cpp"
+#line 2336 "yacc.tab.cpp"
 
       default: break;
     }
@@ -2523,5 +2570,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 490 "yacc.y"
+#line 505 "yacc.y"
 
diff --git a/src/parser/yacc.tab.h b/src/parser/yacc.tab.h
index 3df0232a3c7cab7f8ea7381c64bdb286f0b99243..da391e269a6945b9f4b5d37904ed754b64b91bd2 100644
--- a/src/parser/yacc.tab.h
+++ b/src/parser/yacc.tab.h
@@ -91,15 +91,20 @@ extern int yydebug;
     HAVING = 297,
     IN = 298,
     STATIC_CHECKPOINT = 299,
-    LEQ = 300,
-    NEQ = 301,
-    GEQ = 302,
-    T_EOF = 303,
-    IDENTIFIER = 304,
-    VALUE_STRING = 305,
-    VALUE_INT = 306,
-    VALUE_FLOAT = 307,
-    VALUE_BOOL = 308
+    LOAD = 300,
+    OUTPUT_FILE = 301,
+    ON = 302,
+    OFF = 303,
+    LEQ = 304,
+    NEQ = 305,
+    GEQ = 306,
+    T_EOF = 307,
+    FILE_PATH = 308,
+    IDENTIFIER = 309,
+    VALUE_STRING = 310,
+    VALUE_INT = 311,
+    VALUE_FLOAT = 312,
+    VALUE_BOOL = 313
   };
 #endif
 
diff --git a/src/parser/yacc.tab.hpp b/src/parser/yacc.tab.hpp
index 0b490b26a2db49337e51f52dfe43d84cd6903c97..a4148a7e4c13204ba5702d87fe4b1313a7188a8a 100644
--- a/src/parser/yacc.tab.hpp
+++ b/src/parser/yacc.tab.hpp
@@ -91,15 +91,20 @@ extern int yydebug;
     HAVING = 297,
     IN = 298,
     STATIC_CHECKPOINT = 299,
-    LEQ = 300,
-    NEQ = 301,
-    GEQ = 302,
-    T_EOF = 303,
-    IDENTIFIER = 304,
-    VALUE_STRING = 305,
-    VALUE_INT = 306,
-    VALUE_FLOAT = 307,
-    VALUE_BOOL = 308
+    LOAD = 300,
+    OUTPUT_FILE = 301,
+    ON = 302,
+    OFF = 303,
+    LEQ = 304,
+    NEQ = 305,
+    GEQ = 306,
+    T_EOF = 307,
+    FILE_PATH = 308,
+    IDENTIFIER = 309,
+    VALUE_STRING = 310,
+    VALUE_INT = 311,
+    VALUE_FLOAT = 312,
+    VALUE_BOOL = 313
   };
 #endif
 
diff --git a/src/parser/yacc.y b/src/parser/yacc.y
index a4054e153b9dc3ef68d562a61175c67a17254daf..55f431f4ad1087bbd63a89f3f083eb34b9047400 100644
--- a/src/parser/yacc.y
+++ b/src/parser/yacc.y
@@ -23,13 +23,13 @@ using namespace ast;
 // keywords
 %token SHOW TABLES CREATE TABLE DROP DESC INSERT INTO VALUES DELETE FROM ASC ORDER BY
 WHERE UPDATE SET SELECT INT CHAR FLOAT INDEX AND JOIN EXIT HELP TXN_BEGIN TXN_COMMIT TXN_ABORT TXN_ROLLBACK ORDER_BY ENABLE_NESTLOOP ENABLE_SORTMERGE
-COUNT MAX MIN SUM AS GROUP HAVING IN STATIC_CHECKPOINT
+COUNT MAX MIN SUM AS GROUP HAVING IN STATIC_CHECKPOINT LOAD OUTPUT_FILE ON OFF
 
 // non-keywords
 %token LEQ NEQ GEQ T_EOF
 
 // type-specific tokens
-%token <sv_str> IDENTIFIER VALUE_STRING
+%token <sv_str> FILE_PATH IDENTIFIER VALUE_STRING
 %token <sv_int> VALUE_INT
 %token <sv_float> VALUE_FLOAT
 %token <sv_bool> VALUE_BOOL
@@ -65,6 +65,16 @@ start:
         parse_tree = $1;
         YYACCEPT;
     }
+    |   SET set_knob_type OFF
+    {
+        parse_tree = std::make_shared<SetStmt>($2, false);
+        YYACCEPT;
+    }
+    |   SET set_knob_type ON
+    {
+        parse_tree = std::make_shared<SetStmt>($2, true);
+        YYACCEPT;
+    }
     |   HELP
     {
         parse_tree = std::make_shared<Help>();
@@ -155,7 +165,11 @@ ddl:
     ;
 
 dml:
-        INSERT INTO tbName VALUES '(' valueList ')'
+        LOAD FILE_PATH INTO tbName
+    {
+        $$ = std::make_shared<LoadStmt>($2, $4);
+    }
+    |   INSERT INTO tbName VALUES '(' valueList ')'
     {
         $$ = std::make_shared<InsertStmt>($3, $6);
     }
@@ -478,8 +492,9 @@ having_clauses:
     ;
 
 set_knob_type:
-    ENABLE_NESTLOOP { $$ = EnableNestLoop; }
+        ENABLE_NESTLOOP { $$ = EnableNestLoop; }
     |   ENABLE_SORTMERGE { $$ = EnableSortMerge; }
+    |   OUTPUT_FILE { $$ = EnableOutputFile; }
     ;
 
 tbName: IDENTIFIER;