Make parameters for execute optional (#107)
This commit is contained in:
parent
bd56ba8f7a
commit
1b86e5e624
File diff suppressed because it is too large
Load Diff
|
@ -214,7 +214,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha
|
|||
%type <alias_t> opt_table_alias table_alias opt_alias alias
|
||||
|
||||
%type <str_vec> ident_commalist opt_column_list
|
||||
%type <expr_vec> expr_list select_list literal_list hint_list opt_hints
|
||||
%type <expr_vec> expr_list select_list opt_literal_list literal_list hint_list opt_hints
|
||||
%type <table_vec> table_ref_commalist
|
||||
%type <order_vec> opt_order order_list
|
||||
%type <update_vec> update_clause_commalist
|
||||
|
@ -360,7 +360,7 @@ execute_statement:
|
|||
$$ = new ExecuteStatement();
|
||||
$$->name = $2;
|
||||
}
|
||||
| EXECUTE IDENTIFIER '(' literal_list ')' {
|
||||
| EXECUTE IDENTIFIER '(' opt_literal_list ')' {
|
||||
$$ = new ExecuteStatement();
|
||||
$$->name = $2;
|
||||
$$->parameters = $4;
|
||||
|
@ -747,6 +747,11 @@ expr_list:
|
|||
| expr_list ',' expr_alias { $1->push_back($3); $$ = $1; }
|
||||
;
|
||||
|
||||
opt_literal_list:
|
||||
literal_list { $$ = $1; }
|
||||
| /* empty */ { $$ = nullptr; }
|
||||
;
|
||||
|
||||
literal_list:
|
||||
literal { $$ = new std::vector<Expr*>(); $$->push_back($1); }
|
||||
| literal_list ',' literal { $1->push_back($3); $$ = $1; }
|
||||
|
|
|
@ -96,3 +96,27 @@ TEST(ExecuteStatementTest) {
|
|||
ASSERT_STREQ(stmt->name, "test");
|
||||
ASSERT_EQ(stmt->parameters->size(), 2);
|
||||
}
|
||||
|
||||
TEST(ExecuteStatementTestNoParam) {
|
||||
TEST_PARSE_SINGLE_SQL(
|
||||
"EXECUTE test();",
|
||||
kStmtExecute,
|
||||
ExecuteStatement,
|
||||
result,
|
||||
stmt);
|
||||
|
||||
ASSERT_STREQ(stmt->name, "test");
|
||||
ASSERT_EQ(stmt->parameters, 0);
|
||||
}
|
||||
|
||||
TEST(ExecuteStatementTestNoParamList) {
|
||||
TEST_PARSE_SINGLE_SQL(
|
||||
"EXECUTE test;",
|
||||
kStmtExecute,
|
||||
ExecuteStatement,
|
||||
result,
|
||||
stmt);
|
||||
|
||||
ASSERT_STREQ(stmt->name, "test");
|
||||
ASSERT_EQ(stmt->parameters, 0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue