This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new 10436d57b6 Remove deprecated datafusion_physical_expr::functions
module (#12505)
10436d57b6 is described below
commit 10436d57b61df32c6ac9c314cd1406b5a5a64518
Author: Piotr Findeisen <[email protected]>
AuthorDate: Wed Sep 18 12:59:33 2024 +0200
Remove deprecated datafusion_physical_expr::functions module (#12505)
---
datafusion/physical-expr/src/functions.rs | 122 -------------------------
datafusion/physical-expr/src/lib.rs | 1 -
datafusion/physical-plan/src/execution_plan.rs | 2 +-
datafusion/physical-plan/src/lib.rs | 2 +-
4 files changed, 2 insertions(+), 125 deletions(-)
diff --git a/datafusion/physical-expr/src/functions.rs
b/datafusion/physical-expr/src/functions.rs
deleted file mode 100644
index e33c28df19..0000000000
--- a/datafusion/physical-expr/src/functions.rs
+++ /dev/null
@@ -1,122 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-//! Deprecated module. Add new feature in scalar_function.rs
-//!
-//! This module contains built-in functions' enumeration and metadata.
-//!
-//! Generally, a function has:
-//! * a signature
-//! * a return type, that is a function of the incoming argument's types
-//! * the computation, that must accept each valid signature
-//!
-//! * Signature: see `Signature`
-//! * Return type: a function `(arg_types) -> return_type`. E.g. for sqrt,
([f32]) -> f32, ([f64]) -> f64.
-//!
-//! This module also supports coercion to improve user experience: if
-//! an argument i32 is passed to a function that supports f64, the
-//! argument is automatically is coerced to f64.
-
-use std::sync::Arc;
-
-use arrow::array::{Array, ArrayRef};
-use datafusion_common::{Result, ScalarValue};
-use datafusion_expr::{ColumnarValue, ScalarFunctionImplementation};
-
-pub use crate::scalar_function::create_physical_expr;
-// For backward compatibility
-pub use datafusion_expr::function::Hint;
-
-#[deprecated(since = "36.0.0", note = "Use ColumarValue::values_to_arrays
instead")]
-pub fn columnar_values_to_array(args: &[ColumnarValue]) ->
Result<Vec<ArrayRef>> {
- ColumnarValue::values_to_arrays(args)
-}
-
-/// Decorates a function to handle [`ScalarValue`]s by converting them to
arrays before calling the function
-/// and vice-versa after evaluation.
-/// Note that this function makes a scalar function with no arguments or all
scalar inputs return a scalar.
-/// That's said its output will be same for all input rows in a batch.
-#[deprecated(
- since = "36.0.0",
- note = "Implement your function directly in terms of ColumnarValue or use
`ScalarUDF` instead"
-)]
-pub fn make_scalar_function<F>(inner: F) -> ScalarFunctionImplementation
-where
- F: Fn(&[ArrayRef]) -> Result<ArrayRef> + Sync + Send + 'static,
-{
- make_scalar_function_inner(inner)
-}
-
-/// Internal implementation, see comments on `make_scalar_function` for caveats
-pub(crate) fn make_scalar_function_inner<F>(inner: F) ->
ScalarFunctionImplementation
-where
- F: Fn(&[ArrayRef]) -> Result<ArrayRef> + Sync + Send + 'static,
-{
- make_scalar_function_with_hints(inner, vec![])
-}
-
-/// Just like [`make_scalar_function`], decorates the given function to handle
both [`ScalarValue`]s and arrays.
-/// Additionally can receive a `hints` vector which can be used to control the
output arrays when generating them
-/// from [`ScalarValue`]s.
-///
-/// Each element of the `hints` vector gets mapped to the corresponding
argument of the function. The number of hints
-/// can be less or greater than the number of arguments (for functions with
variable number of arguments). Each unmapped
-/// argument will assume the default hint (for padding, it is [`Hint::Pad`]).
-pub(crate) fn make_scalar_function_with_hints<F>(
- inner: F,
- hints: Vec<Hint>,
-) -> ScalarFunctionImplementation
-where
- F: Fn(&[ArrayRef]) -> Result<ArrayRef> + Sync + Send + 'static,
-{
- Arc::new(move |args: &[ColumnarValue]| {
- // first, identify if any of the arguments is an Array. If yes, store
its `len`,
- // as any scalar will need to be converted to an array of len `len`.
- let len = args
- .iter()
- .fold(Option::<usize>::None, |acc, arg| match arg {
- ColumnarValue::Scalar(_) => acc,
- ColumnarValue::Array(a) => Some(a.len()),
- });
-
- let is_scalar = len.is_none();
-
- let inferred_length = len.unwrap_or(1);
- let args = args
- .iter()
- .zip(hints.iter().chain(std::iter::repeat(&Hint::Pad)))
- .map(|(arg, hint)| {
- // Decide on the length to expand this scalar to depending
- // on the given hints.
- let expansion_len = match hint {
- Hint::AcceptsSingular => 1,
- Hint::Pad => inferred_length,
- };
- arg.clone().into_array(expansion_len)
- })
- .collect::<Result<Vec<_>>>()?;
-
- let result = (inner)(&args);
- if is_scalar {
- // If all inputs are scalar, keeps output as scalar
- let result = result.and_then(|arr|
ScalarValue::try_from_array(&arr, 0));
- result.map(ColumnarValue::Scalar)
- } else {
- result.map(ColumnarValue::Array)
- }
- })
-}
diff --git a/datafusion/physical-expr/src/lib.rs
b/datafusion/physical-expr/src/lib.rs
index 7db7188b85..4618571241 100644
--- a/datafusion/physical-expr/src/lib.rs
+++ b/datafusion/physical-expr/src/lib.rs
@@ -26,7 +26,6 @@ pub mod binary_map {
}
pub mod equivalence;
pub mod expressions;
-pub mod functions;
pub mod intervals;
pub mod math_expressions;
mod partitioning;
diff --git a/datafusion/physical-plan/src/execution_plan.rs
b/datafusion/physical-plan/src/execution_plan.rs
index f584542faf..40d18ebece 100644
--- a/datafusion/physical-plan/src/execution_plan.rs
+++ b/datafusion/physical-plan/src/execution_plan.rs
@@ -34,7 +34,7 @@ pub use datafusion_execution::{RecordBatchStream,
SendableRecordBatchStream};
pub use datafusion_expr::{Accumulator, ColumnarValue};
pub use datafusion_physical_expr::window::WindowExpr;
pub use datafusion_physical_expr::{
- expressions, functions, udf, Distribution, Partitioning, PhysicalExpr,
+ expressions, udf, Distribution, Partitioning, PhysicalExpr,
};
use datafusion_physical_expr::{EquivalenceProperties, LexOrdering,
PhysicalSortExpr};
use datafusion_physical_expr_common::sort_expr::LexRequirement;
diff --git a/datafusion/physical-plan/src/lib.rs
b/datafusion/physical-plan/src/lib.rs
index 026798c579..7cbfd49afb 100644
--- a/datafusion/physical-plan/src/lib.rs
+++ b/datafusion/physical-plan/src/lib.rs
@@ -31,7 +31,7 @@ pub use datafusion_expr::{Accumulator, ColumnarValue};
pub use datafusion_physical_expr::window::WindowExpr;
use datafusion_physical_expr::PhysicalSortExpr;
pub use datafusion_physical_expr::{
- expressions, functions, udf, Distribution, Partitioning, PhysicalExpr,
+ expressions, udf, Distribution, Partitioning, PhysicalExpr,
};
pub use crate::display::{DefaultDisplay, DisplayAs, DisplayFormatType,
VerboseDisplay};
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]