Skip to content

Commit ac20a64

Browse files
committed
Add unit test: custom_scalar_overrides_duckdb
1 parent e163f4a commit ac20a64

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

datafusion/sql/src/unparser/expr.rs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1636,7 +1636,7 @@ mod tests {
16361636

16371637
use crate::unparser::dialect::{
16381638
CharacterLengthStyle, CustomDialect, CustomDialectBuilder, DateFieldExtractStyle,
1639-
Dialect, PostgreSqlDialect,
1639+
Dialect, DuckDBDialect, PostgreSqlDialect, ScalarFnToSqlHandler,
16401640
};
16411641

16421642
use super::*;
@@ -2722,4 +2722,31 @@ mod tests {
27222722

27232723
Ok(())
27242724
}
2725+
2726+
#[test]
2727+
fn test_custom_scalar_overrides_duckdb() -> Result<()> {
2728+
let duckdb_default = DuckDBDialect::new();
2729+
let duckdb_extended = DuckDBDialect::new().with_custom_scalar_overrides(vec![(
2730+
"dummy_udf",
2731+
Box::new(|unparser: &Unparser, args: &[Expr]| {
2732+
unparser.scalar_function_to_sql("smart_udf", args).map(Some)
2733+
}) as ScalarFnToSqlHandler,
2734+
)]);
2735+
2736+
for (dialect, expected) in [
2737+
(duckdb_default, r#"dummy_udf("a", "b")"#),
2738+
(duckdb_extended, r#"smart_udf("a", "b")"#),
2739+
] {
2740+
let unparser = Unparser::new(&dialect);
2741+
let expr =
2742+
ScalarUDF::new_from_impl(DummyUDF::new()).call(vec![col("a"), col("b")]);
2743+
let ast = unparser.expr_to_sql(&expr)?;
2744+
2745+
let actual = format!("{}", ast);
2746+
2747+
assert_eq!(actual, expected);
2748+
}
2749+
2750+
Ok(())
2751+
}
27252752
}

0 commit comments

Comments
 (0)