Skip to content

Commit 05af4e0

Browse files
authored
Cleanup CREATE FUNCTION tests (apache#1203)
1 parent 3bf4048 commit 05af4e0

1 file changed

Lines changed: 9 additions & 93 deletions

File tree

tests/sqlparser_postgres.rs

Lines changed: 9 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -804,9 +804,7 @@ Kwara & Kogi
804804
PHP ₱ USD $
805805
\N Some other value
806806
\\."#;
807-
let ast = pg_and_generic().one_statement_parses_to(sql, "");
808-
println!("{ast:#?}");
809-
//assert_eq!(sql, ast.to_string());
807+
pg_and_generic().one_statement_parses_to(sql, "");
810808
}
811809

812810
#[test]
@@ -3304,98 +3302,16 @@ fn parse_create_function() {
33043302
},
33053303
}
33063304
);
3307-
3308-
let sql = "CREATE OR REPLACE FUNCTION add(a INTEGER, IN b INTEGER = 1) RETURNS INTEGER LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT PARALLEL RESTRICTED RETURN a + b";
3309-
assert_eq!(
3310-
pg_and_generic().verified_stmt(sql),
3311-
Statement::CreateFunction {
3312-
or_replace: true,
3313-
temporary: false,
3314-
name: ObjectName(vec![Ident::new("add")]),
3315-
args: Some(vec![
3316-
OperateFunctionArg::with_name("a", DataType::Integer(None)),
3317-
OperateFunctionArg {
3318-
mode: Some(ArgMode::In),
3319-
name: Some("b".into()),
3320-
data_type: DataType::Integer(None),
3321-
default_expr: Some(Expr::Value(Value::Number("1".parse().unwrap(), false))),
3322-
}
3323-
]),
3324-
return_type: Some(DataType::Integer(None)),
3325-
params: CreateFunctionBody {
3326-
language: Some("SQL".into()),
3327-
behavior: Some(FunctionBehavior::Immutable),
3328-
called_on_null: Some(FunctionCalledOnNull::ReturnsNullOnNullInput),
3329-
parallel: Some(FunctionParallel::Restricted),
3330-
return_: Some(Expr::BinaryOp {
3331-
left: Box::new(Expr::Identifier("a".into())),
3332-
op: BinaryOperator::Plus,
3333-
right: Box::new(Expr::Identifier("b".into())),
3334-
}),
3335-
..Default::default()
3336-
},
3337-
}
3338-
);
3339-
3340-
let sql = "CREATE OR REPLACE FUNCTION add(a INTEGER, IN b INTEGER = 1) RETURNS INTEGER LANGUAGE SQL STABLE CALLED ON NULL INPUT PARALLEL UNSAFE RETURN a + b";
3341-
assert_eq!(
3342-
pg_and_generic().verified_stmt(sql),
3343-
Statement::CreateFunction {
3344-
or_replace: true,
3345-
temporary: false,
3346-
name: ObjectName(vec![Ident::new("add")]),
3347-
args: Some(vec![
3348-
OperateFunctionArg::with_name("a", DataType::Integer(None)),
3349-
OperateFunctionArg {
3350-
mode: Some(ArgMode::In),
3351-
name: Some("b".into()),
3352-
data_type: DataType::Integer(None),
3353-
default_expr: Some(Expr::Value(Value::Number("1".parse().unwrap(), false))),
3354-
}
3355-
]),
3356-
return_type: Some(DataType::Integer(None)),
3357-
params: CreateFunctionBody {
3358-
language: Some("SQL".into()),
3359-
behavior: Some(FunctionBehavior::Stable),
3360-
called_on_null: Some(FunctionCalledOnNull::CalledOnNullInput),
3361-
parallel: Some(FunctionParallel::Unsafe),
3362-
return_: Some(Expr::BinaryOp {
3363-
left: Box::new(Expr::Identifier("a".into())),
3364-
op: BinaryOperator::Plus,
3365-
right: Box::new(Expr::Identifier("b".into())),
3366-
}),
3367-
..Default::default()
3368-
},
3369-
}
3370-
);
3371-
3372-
let sql = r#"CREATE OR REPLACE FUNCTION increment(i INTEGER) RETURNS INTEGER LANGUAGE plpgsql AS $$ BEGIN RETURN i + 1; END; $$"#;
3373-
assert_eq!(
3374-
pg().verified_stmt(sql),
3375-
Statement::CreateFunction {
3376-
or_replace: true,
3377-
temporary: false,
3378-
name: ObjectName(vec![Ident::new("increment")]),
3379-
args: Some(vec![OperateFunctionArg::with_name(
3380-
"i",
3381-
DataType::Integer(None)
3382-
)]),
3383-
return_type: Some(DataType::Integer(None)),
3384-
params: CreateFunctionBody {
3385-
language: Some("plpgsql".into()),
3386-
behavior: None,
3387-
called_on_null: None,
3388-
parallel: None,
3389-
return_: None,
3390-
as_: Some(FunctionDefinition::DoubleDollarDef(
3391-
" BEGIN RETURN i + 1; END; ".into()
3392-
)),
3393-
using: None
3394-
},
3395-
}
3396-
);
33973305
}
33983306

3307+
#[test]
3308+
fn parse_create_function_detailed() {
3309+
pg_and_generic().verified_stmt("CREATE OR REPLACE FUNCTION add(a INTEGER, IN b INTEGER = 1) RETURNS INTEGER LANGUAGE SQL IMMUTABLE PARALLEL RESTRICTED RETURN a + b");
3310+
pg_and_generic().verified_stmt("CREATE OR REPLACE FUNCTION add(a INTEGER, IN b INTEGER = 1) RETURNS INTEGER LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT PARALLEL RESTRICTED RETURN a + b");
3311+
pg_and_generic().verified_stmt("CREATE OR REPLACE FUNCTION add(a INTEGER, IN b INTEGER = 1) RETURNS INTEGER LANGUAGE SQL STABLE PARALLEL UNSAFE RETURN a + b");
3312+
pg_and_generic().verified_stmt("CREATE OR REPLACE FUNCTION add(a INTEGER, IN b INTEGER = 1) RETURNS INTEGER LANGUAGE SQL STABLE CALLED ON NULL INPUT PARALLEL UNSAFE RETURN a + b");
3313+
pg_and_generic().verified_stmt(r#"CREATE OR REPLACE FUNCTION increment(i INTEGER) RETURNS INTEGER LANGUAGE plpgsql AS $$ BEGIN RETURN i + 1; END; $$"#);
3314+
}
33993315
#[test]
34003316
fn parse_incorrect_create_function_parallel() {
34013317
let sql = "CREATE FUNCTION add(INTEGER, INTEGER) RETURNS INTEGER LANGUAGE SQL PARALLEL BLAH AS 'select $1 + $2;'";

0 commit comments

Comments
 (0)