Skip to content

Commit ebc391e

Browse files
committed
removed confusing test_named_arguments_with_dialects test
reset to default dialect in named_arguments.slt after testing MsSQL dialect compacted pattern matching in sql_fn_arg_to_logical_expr_with_name
1 parent 61c57f3 commit ebc391e

File tree

3 files changed

+10
-98
lines changed

3 files changed

+10
-98
lines changed

datafusion/sql/src/expr/function.rs

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -707,23 +707,16 @@ impl<S: ContextProvider> SqlToRel<'_, S> {
707707
}
708708
// PostgreSQL dialect uses ExprNamed variant with expression for name
709709
FunctionArg::ExprNamed {
710-
name,
710+
name: SQLExpr::Identifier(name),
711711
arg: FunctionArgExpr::Expr(arg),
712712
operator: _,
713713
} => {
714714
let expr = self.sql_expr_to_logical_expr(arg, schema, planner_context)?;
715-
let arg_name = match name {
716-
SQLExpr::Identifier(ident) => crate::utils::normalize_ident(ident),
717-
_ => {
718-
return plan_err!(
719-
"Named argument must use a simple identifier, got: {name:?}"
720-
)
721-
}
722-
};
715+
let arg_name = crate::utils::normalize_ident(name);
723716
Ok((expr, Some(arg_name)))
724717
}
725718
FunctionArg::ExprNamed {
726-
name,
719+
name: SQLExpr::Identifier(name),
727720
arg: FunctionArgExpr::Wildcard,
728721
operator: _,
729722
} => {
@@ -732,14 +725,7 @@ impl<S: ContextProvider> SqlToRel<'_, S> {
732725
qualifier: None,
733726
options: Box::new(WildcardOptions::default()),
734727
};
735-
let arg_name = match name {
736-
SQLExpr::Identifier(ident) => crate::utils::normalize_ident(ident),
737-
_ => {
738-
return plan_err!(
739-
"Named argument must use a simple identifier, got: {name:?}"
740-
)
741-
}
742-
};
728+
let arg_name = crate::utils::normalize_ident(name);
743729
Ok((expr, Some(arg_name)))
744730
}
745731
_ => not_impl_err!("Unsupported qualified wildcard argument: {sql:?}"),

datafusion/sql/tests/sql_integration.rs

Lines changed: 2 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use datafusion_expr::{
3131
};
3232
use datafusion_functions::{string, unicode};
3333
use datafusion_sql::{
34-
parser::{DFParser, Statement as DFStatement},
34+
parser::DFParser,
3535
planner::{NullOrdering, ParserOptions, SqlToRel},
3636
};
3737

@@ -46,12 +46,7 @@ use datafusion_functions_nested::make_array::make_array_udf;
4646
use datafusion_functions_window::{rank::rank_udwf, row_number::row_number_udwf};
4747
use insta::{allow_duplicates, assert_snapshot};
4848
use rstest::rstest;
49-
use sqlparser::ast::{Expr as SQLExpr, FunctionArg, Statement};
50-
use sqlparser::dialect::{
51-
AnsiDialect, BigQueryDialect, ClickHouseDialect, DatabricksDialect, Dialect,
52-
DuckDbDialect, GenericDialect, HiveDialect, MsSqlDialect, MySqlDialect,
53-
PostgreSqlDialect, RedshiftSqlDialect, SQLiteDialect, SnowflakeDialect,
54-
};
49+
use sqlparser::dialect::{Dialect, GenericDialect, HiveDialect, MySqlDialect};
5550

5651
mod cases;
5752
mod common;
@@ -3954,79 +3949,6 @@ fn test_double_quoted_literal_string() {
39543949
assert!(logical_plan("SELECT \"1\"").is_err());
39553950
}
39563951

3957-
#[test]
3958-
fn test_named_arguments_with_dialects() {
3959-
let sql = "SELECT my_func(arg1 => 'value1')";
3960-
3961-
// Returns None if the dialect doesn't support the => operator
3962-
let extract_first_arg = |dialect: &dyn Dialect| -> Option<FunctionArg> {
3963-
let mut statements = DFParser::parse_sql_with_dialect(sql, dialect).ok()?;
3964-
3965-
let statement = statements.pop_front().unwrap();
3966-
if let DFStatement::Statement(stmt) = statement {
3967-
if let Statement::Query(query) = stmt.as_ref() {
3968-
if let sqlparser::ast::SetExpr::Select(select) = query.body.as_ref() {
3969-
let projection = &select.projection[0];
3970-
if let sqlparser::ast::SelectItem::UnnamedExpr(SQLExpr::Function(
3971-
func,
3972-
)) = projection
3973-
{
3974-
if let sqlparser::ast::FunctionArguments::List(arg_list) =
3975-
&func.args
3976-
{
3977-
return Some(arg_list.args[0].clone());
3978-
}
3979-
}
3980-
}
3981-
}
3982-
}
3983-
panic!("Failed to extract function argument");
3984-
};
3985-
3986-
let arg = extract_first_arg(&AnsiDialect {});
3987-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
3988-
3989-
let arg = extract_first_arg(&BigQueryDialect {});
3990-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
3991-
3992-
let arg = extract_first_arg(&ClickHouseDialect {});
3993-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
3994-
3995-
let arg = extract_first_arg(&DatabricksDialect {});
3996-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
3997-
3998-
let arg = extract_first_arg(&DuckDbDialect {});
3999-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
4000-
4001-
let arg = extract_first_arg(&GenericDialect {});
4002-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
4003-
4004-
let arg = extract_first_arg(&HiveDialect {});
4005-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
4006-
4007-
let arg = extract_first_arg(&MsSqlDialect {});
4008-
assert!(arg.is_none());
4009-
4010-
let arg = extract_first_arg(&MySqlDialect {});
4011-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
4012-
4013-
let arg = extract_first_arg(&PostgreSqlDialect {});
4014-
assert!(matches!(
4015-
arg.as_ref(),
4016-
Some(FunctionArg::ExprNamed { name, .. })
4017-
if matches!(name, SQLExpr::Identifier(ident) if ident.value == "arg1")
4018-
));
4019-
4020-
let arg = extract_first_arg(&RedshiftSqlDialect {});
4021-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
4022-
4023-
let arg = extract_first_arg(&SQLiteDialect {});
4024-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
4025-
4026-
let arg = extract_first_arg(&SnowflakeDialect {});
4027-
assert!(matches!(arg, Some(FunctionArg::Named { name, .. }) if name.value == "arg1"));
4028-
}
4029-
40303952
#[test]
40313953
fn test_constant_expr_eq_join() {
40323954
let sql = "SELECT id, order_id \

datafusion/sqllogictest/test_files/named_arguments.slt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,7 @@ set datafusion.sql_parser.dialect = 'MsSQL';
133133
# Error: MsSQL dialect does not support => operator
134134
query error DataFusion error: SQL error: ParserError\("Expected: \), found: => at Line: 1, Column: 19"\)
135135
SELECT substr(str => 'hello world', start_pos => 7, length => 5);
136+
137+
# Reset to default dialect
138+
statement ok
139+
set datafusion.sql_parser.dialect = 'Generic';

0 commit comments

Comments
 (0)