diff --git a/sbroad-core/src/frontend/sql.rs b/sbroad-core/src/frontend/sql.rs index 1ee55053262d0b5f7a31ea5146e6bcde4dc48355..bb5cd6f798ac549cd1b2c2536520711c50cc7fab 100644 --- a/sbroad-core/src/frontend/sql.rs +++ b/sbroad-core/src/frontend/sql.rs @@ -270,15 +270,15 @@ fn parse_create_proc(ast: &AbstractSyntaxTree, node: &ParseNode) -> Result<Ddl, fn parse_proc_with_optional_params( ast: &AbstractSyntaxTree, node: &ParseNode, -) -> Result<(String, Vec<ParamDef>), SbroadError> { +) -> Result<(String, Option<Vec<ParamDef>>), SbroadError> { let proc_name_id = node.children.first().expect("Expected to get Proc name"); let proc_name = parse_identifier(ast, *proc_name_id)?; let params = if let Some(params_node_id) = node.children.get(1) { let params_node = ast.nodes.get_node(*params_node_id)?; - parse_proc_params(ast, params_node)? + Some(parse_proc_params(ast, params_node)?) } else { - Vec::new() + None }; Ok((proc_name, params)) diff --git a/sbroad-core/src/frontend/sql/query.pest b/sbroad-core/src/frontend/sql/query.pest index 33cd277485c0eb9a0141ae5bbebbf8f9ef897e3b..ba399ce5e3d05e8d7cbe5094ff57d979d5a9e0ee 100644 --- a/sbroad-core/src/frontend/sql/query.pest +++ b/sbroad-core/src/frontend/sql/query.pest @@ -78,7 +78,7 @@ DDL = _{ CreateTable | DropTable | CreateProc | DropProc | RenameProc } ~ ((^"as" ~ "$$" ~ ProcBody ~ "$$") | (^"begin" ~ "atomic" ~ ProcBody ~ "end")) ~ TimeoutOption? } - ProcParams = { "(" ~ ColumnDefType ~ ("," ~ ColumnDefType)* ~ ")" } + ProcParams = { "(" ~ (ColumnDefType ~ ("," ~ ColumnDefType)*)? ~ ")" } ProcLanguage = { SQL } SQL = { ^"sql" } ProcBody = { (Insert | Update | Delete) } diff --git a/sbroad-core/src/ir/ddl.rs b/sbroad-core/src/ir/ddl.rs index c16d76378c85c04e1f17a0ac5d69be3c64e512b8..06c34717a0d735fee90d2a32fef5bc943f492022 100644 --- a/sbroad-core/src/ir/ddl.rs +++ b/sbroad-core/src/ir/ddl.rs @@ -59,7 +59,7 @@ pub enum Ddl { }, DropProc { name: String, - params: Vec<ParamDef>, + params: Option<Vec<ParamDef>>, timeout: Decimal, }, RenameRoutine {