@@ -16497,7 +16497,8 @@ fn parse_create_procedure_with_parameter_modes() {
1649716497 span: fake_span,
1649816498 },
1649916499 data_type: DataType::Integer(None),
16500- mode: Some(ArgMode::In)
16500+ mode: Some(ArgMode::In),
16501+ default: None,
1650116502 },
1650216503 ProcedureParam {
1650316504 name: Ident {
@@ -16506,7 +16507,8 @@ fn parse_create_procedure_with_parameter_modes() {
1650616507 span: fake_span,
1650716508 },
1650816509 data_type: DataType::Text,
16509- mode: Some(ArgMode::Out)
16510+ mode: Some(ArgMode::Out),
16511+ default: None,
1651016512 },
1651116513 ProcedureParam {
1651216514 name: Ident {
@@ -16515,7 +16517,8 @@ fn parse_create_procedure_with_parameter_modes() {
1651516517 span: fake_span,
1651616518 },
1651716519 data_type: DataType::Timestamp(None, TimezoneInfo::None),
16518- mode: Some(ArgMode::InOut)
16520+ mode: Some(ArgMode::InOut),
16521+ default: None,
1651916522 },
1652016523 ProcedureParam {
1652116524 name: Ident {
@@ -16524,7 +16527,8 @@ fn parse_create_procedure_with_parameter_modes() {
1652416527 span: fake_span,
1652516528 },
1652616529 data_type: DataType::Bool,
16527- mode: None
16530+ mode: None,
16531+ default: None,
1652816532 },
1652916533 ])
1653016534 );
@@ -16533,6 +16537,40 @@ fn parse_create_procedure_with_parameter_modes() {
1653316537 }
1653416538}
1653516539
16540+ #[test]
16541+ fn create_procedure_with_parameter_default_value() {
16542+ let sql = r#"CREATE PROCEDURE test_proc (a INT = 42) AS BEGIN SELECT 1; END"#;
16543+ match verified_stmt(sql) {
16544+ Statement::CreateProcedure {
16545+ or_alter,
16546+ name,
16547+ params,
16548+ ..
16549+ } => {
16550+ assert_eq!(or_alter, false);
16551+ assert_eq!(name.to_string(), "test_proc");
16552+ let fake_span = Span {
16553+ start: Location { line: 0, column: 0 },
16554+ end: Location { line: 0, column: 0 },
16555+ };
16556+ assert_eq!(
16557+ params,
16558+ Some(vec![ProcedureParam {
16559+ name: Ident {
16560+ value: "a".into(),
16561+ quote_style: None,
16562+ span: fake_span,
16563+ },
16564+ data_type: DataType::Int(None),
16565+ mode: None,
16566+ default: Some(Expr::Value((number("42")).with_empty_span())),
16567+ },])
16568+ );
16569+ }
16570+ _ => unreachable!(),
16571+ }
16572+ }
16573+
1653616574#[test]
1653716575fn parse_not_null() {
1653816576 let _ = all_dialects().expr_parses_to("x NOT NULL", "x IS NOT NULL");
0 commit comments