diff --git a/datafusion/optimizer/src/analyzer/type_coercion.rs b/datafusion/optimizer/src/analyzer/type_coercion.rs index a98678f7c..ed04aa428 100644 --- a/datafusion/optimizer/src/analyzer/type_coercion.rs +++ b/datafusion/optimizer/src/analyzer/type_coercion.rs @@ -954,10 +954,6 @@ fn coerce_arguments_for_signature( schema: &DFSchema, func: &F, ) -> Result> { - if expressions.is_empty() { - return Ok(expressions); - } - let current_fields = expressions .iter() .map(|e| e.to_field(schema).map(|(_, f)| f)) diff --git a/datafusion/sqllogictest/test_files/type_coercion.slt b/datafusion/sqllogictest/test_files/type_coercion.slt index 8ab5b63e6..7039e66b3 100644 --- a/datafusion/sqllogictest/test_files/type_coercion.slt +++ b/datafusion/sqllogictest/test_files/type_coercion.slt @@ -281,3 +281,24 @@ SELECT true FROM t0 WHERE (REGEXP_MATCH(t0.v1, t0.v1)) NOT ILIKE []; statement ok DROP TABLE t0; + +############################################################# +## Test validation for functions with empty argument lists ## +############################################################# + +# https://github.com/apache/datafusion/issues/20201 + +query error does not support zero arguments +SELECT * FROM (SELECT 1) WHERE (STARTS_WITH() IS NULL); + +query error does not support zero arguments +SELECT * FROM (SELECT 1) WHERE (STARTS_WITH() IS NOT NULL); + +query error does not support zero arguments +SELECT * FROM (SELECT 'a') WHERE (STARTS_WITH() SIMILAR TO 'abc%'); + +query error does not support zero arguments +SELECT * FROM (SELECT 1) WHERE CAST(STARTS_WITH() AS STRING) = 'x'; + +query error does not support zero arguments +SELECT * FROM (SELECT 1) WHERE TRY_CAST(STARTS_WITH() AS INT) = 1; \ No newline at end of file