alamb commented on code in PR #13717:
URL: https://github.com/apache/datafusion/pull/13717#discussion_r1893083600
##########
datafusion/core/src/catalog_common/information_schema.rs:
##########
@@ -406,6 +406,7 @@ fn get_udf_args_and_return_types(
.into_iter()
.map(|arg_types| {
// only handle the function which implemented
[`ScalarUDFImpl::return_type`] method
+ #[allow(deprecated)]
Review Comment:
> Let's turn the question around. What problems would return_type_with_args
be solving?
In my mind there are two usecases for `return_type`:
1. LogicalPlanning (aka the analyzer and type coercion, etc) when you have
`Exprs`
2. PhysicalPlanning (aka physical optimizers)
As I understood the problem is that some things in the LogicalPlanner do
things with the exprs (like determining the type of the arguments)
I agree with the "it is not clear when you get arguments in what contexts"
Maybe we could make this explicit with an enum like the following 🤔
```rust
/// Information about arguments when calling `return_type`
enum ArgumentInfo {
LogicalPlanning {
args: &[Expr],
schema: &dyn ExprSchema
},
PhysicalExecution,
...
}
struct ReturnTypeArgs {
// Argument information
arg_info: ArgumentInfo,
// argument DataTypes
arg_types: &[DataType],
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]