Skip to content

Commit e01f5a5

Browse files
committed
Support argmode in CREATE PROCEDURE
1 parent 204d3b4 commit e01f5a5

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/ast/ddl.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,7 @@ use sqlparser_derive::{Visit, VisitMut};
3030

3131
use crate::ast::value::escape_single_quote_string;
3232
use crate::ast::{
33-
display_comma_separated, display_separated, CommentDef, CreateFunctionBody,
34-
CreateFunctionUsing, DataType, Expr, FunctionBehavior, FunctionCalledOnNull,
35-
FunctionDeterminismSpecifier, FunctionParallel, Ident, MySQLColumnPosition, ObjectName,
36-
OperateFunctionArg, OrderByExpr, ProjectionSelect, SequenceOptions, SqlOption, Tag, Value,
37-
ValueWithSpan,
33+
display_comma_separated, display_separated, ArgMode, CommentDef, CreateFunctionBody, CreateFunctionUsing, DataType, Expr, FunctionBehavior, FunctionCalledOnNull, FunctionDeterminismSpecifier, FunctionParallel, Ident, MySQLColumnPosition, ObjectName, OperateFunctionArg, OrderByExpr, ProjectionSelect, SequenceOptions, SqlOption, Tag, Value, ValueWithSpan
3834
};
3935
use crate::keywords::Keyword;
4036
use crate::tokenizer::Token;
@@ -1367,6 +1363,7 @@ impl fmt::Display for NullsDistinctOption {
13671363
pub struct ProcedureParam {
13681364
pub name: Ident,
13691365
pub data_type: DataType,
1366+
pub mode: Option<ArgMode>,
13701367
}
13711368

13721369
impl fmt::Display for ProcedureParam {

src/parser/mod.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7626,9 +7626,18 @@ impl<'a> Parser<'a> {
76267626
}
76277627

76287628
pub fn parse_procedure_param(&mut self) -> Result<ProcedureParam, ParserError> {
7629+
let mode = if self.parse_keyword(Keyword::IN) {
7630+
Some(ArgMode::In)
7631+
} else if self.parse_keyword(Keyword::OUT) {
7632+
Some(ArgMode::Out)
7633+
} else if self.parse_keyword(Keyword::INOUT) {
7634+
Some(ArgMode::InOut)
7635+
} else {
7636+
None
7637+
};
76297638
let name = self.parse_identifier()?;
76307639
let data_type = self.parse_data_type()?;
7631-
Ok(ProcedureParam { name, data_type })
7640+
Ok(ProcedureParam { name, data_type, mode })
76327641
}
76337642

76347643
pub fn parse_column_def(&mut self) -> Result<ColumnDef, ParserError> {

0 commit comments

Comments
 (0)