This is an automated email from the ASF dual-hosted git repository.

jayzhan 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 9c6c1e1b3a Deprecate adjust_output_array in favor of 
PrimitiveArray::with_data_type (#13585)
9c6c1e1b3a is described below

commit 9c6c1e1b3ac247a6a5b8e9eb8a0f56b4ddf2522f
Author: Andrew Lamb <[email protected]>
AuthorDate: Wed Nov 27 19:20:50 2024 -0500

    Deprecate adjust_output_array in favor of PrimitiveArray::with_data_type 
(#13585)
---
 datafusion/functions-aggregate-common/src/utils.rs   |  1 +
 datafusion/physical-expr/src/aggregate.rs            |  1 +
 datafusion/physical-plan/src/aggregates/topk/heap.rs | 11 ++++++-----
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/datafusion/functions-aggregate-common/src/utils.rs 
b/datafusion/functions-aggregate-common/src/utils.rs
index e440abe2de..083dac615b 100644
--- a/datafusion/functions-aggregate-common/src/utils.rs
+++ b/datafusion/functions-aggregate-common/src/utils.rs
@@ -48,6 +48,7 @@ pub fn get_accum_scalar_values_as_arrays(
 /// Since `Decimal128Arrays` created from `Vec<NativeType>` have
 /// default precision and scale, this function adjusts the output to
 /// match `data_type`, if necessary
+#[deprecated(since = "44.0.0", note = "use PrimitiveArray::with_datatype")]
 pub fn adjust_output_array(data_type: &DataType, array: ArrayRef) -> 
Result<ArrayRef> {
     let array = match data_type {
         DataType::Decimal128(p, s) => Arc::new(
diff --git a/datafusion/physical-expr/src/aggregate.rs 
b/datafusion/physical-expr/src/aggregate.rs
index 5dc1389334..4eaabace72 100644
--- a/datafusion/physical-expr/src/aggregate.rs
+++ b/datafusion/physical-expr/src/aggregate.rs
@@ -28,6 +28,7 @@ pub(crate) mod stats {
     pub use datafusion_functions_aggregate_common::stats::StatsType;
 }
 pub mod utils {
+    #[allow(deprecated)] // allow adjust_output_array
     pub use datafusion_functions_aggregate_common::utils::{
         adjust_output_array, get_accum_scalar_values_as_arrays, 
get_sort_options,
         ordering_fields, DecimalAverager, Hashable,
diff --git a/datafusion/physical-plan/src/aggregates/topk/heap.rs 
b/datafusion/physical-plan/src/aggregates/topk/heap.rs
index e694422e44..61569e511a 100644
--- a/datafusion/physical-plan/src/aggregates/topk/heap.rs
+++ b/datafusion/physical-plan/src/aggregates/topk/heap.rs
@@ -20,11 +20,11 @@
 use arrow::datatypes::i256;
 use arrow_array::cast::AsArray;
 use arrow_array::{downcast_primitive, ArrayRef, ArrowPrimitiveType, 
PrimitiveArray};
-use arrow_buffer::{IntervalDayTime, IntervalMonthDayNano};
+use arrow_buffer::{IntervalDayTime, IntervalMonthDayNano, ScalarBuffer};
 use arrow_schema::DataType;
 use datafusion_common::DataFusionError;
 use datafusion_common::Result;
-use datafusion_physical_expr::aggregate::utils::adjust_output_array;
+
 use half::f16;
 use std::cmp::Ordering;
 use std::fmt::{Debug, Display, Formatter};
@@ -151,10 +151,11 @@ where
     }
 
     fn drain(&mut self) -> (ArrayRef, Vec<usize>) {
+        let nulls = None;
         let (vals, map_idxs) = self.heap.drain();
-        let vals = Arc::new(PrimitiveArray::<VAL>::from_iter_values(vals));
-        let vals = adjust_output_array(&self.data_type, vals).expect("Type is 
incorrect");
-        (vals, map_idxs)
+        let arr = PrimitiveArray::<VAL>::new(ScalarBuffer::from(vals), nulls)
+            .with_data_type(self.data_type.clone());
+        (Arc::new(arr), map_idxs)
     }
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to