You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by al...@apache.org on 2023/06/09 13:29:28 UTC

[arrow-datafusion] branch main updated: Remove `from_slice` and use upstream (#6587)

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/arrow-datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 3d36dfe210 Remove `from_slice` and use upstream (#6587)
3d36dfe210 is described below

commit 3d36dfe210a7cafd056e07fd7f6de0cd54adf8dd
Author: Andrew Lamb <an...@nerdnetworks.org>
AuthorDate: Fri Jun 9 09:29:22 2023 -0400

    Remove `from_slice` and use upstream (#6587)
---
 .../examples/dataframe_in_memory.rs                |   5 +-
 datafusion-examples/examples/simple_udaf.rs        |   5 +-
 datafusion-examples/examples/simple_udf.rs         |   5 +-
 datafusion/common/src/from_slice.rs                | 116 ---------------------
 datafusion/common/src/lib.rs                       |   1 -
 datafusion/common/src/scalar.rs                    |  25 ++---
 datafusion/common/src/utils.rs                     |  44 ++++----
 datafusion/core/benches/data_utils/mod.rs          |   3 +-
 datafusion/core/benches/filter_query_sql.rs        |   5 +-
 datafusion/core/benches/math_query_sql.rs          |   5 +-
 datafusion/core/src/dataframe.rs                   |   7 +-
 datafusion/core/src/datasource/listing/table.rs    |   3 +-
 datafusion/core/src/datasource/memory.rs           |  49 +++++----
 datafusion/core/src/lib.rs                         |   2 -
 datafusion/core/src/physical_optimizer/pruning.rs  |   3 +-
 .../core/src/physical_plan/aggregates/mod.rs       |   9 +-
 datafusion/core/src/physical_plan/common.rs        |   5 +-
 datafusion/core/src/physical_plan/insert.rs        |   2 +-
 .../core/src/physical_plan/repartition/mod.rs      |  19 ++--
 .../physical_plan/sorts/sort_preserving_merge.rs   |  27 +++--
 datafusion/core/src/test/mod.rs                    |   7 +-
 datafusion/core/tests/custom_sources.rs            |  11 +-
 datafusion/core/tests/dataframe.rs                 |  41 ++++----
 datafusion/core/tests/dataframe_functions.rs       |   5 +-
 datafusion/core/tests/parquet/mod.rs               |   2 +-
 datafusion/core/tests/repartition.rs               |   3 +-
 datafusion/core/tests/sql/aggregates.rs            |   8 +-
 datafusion/core/tests/sql/functions.rs             |  20 ++--
 datafusion/core/tests/sql/information_schema.rs    |   8 +-
 datafusion/core/tests/sql/joins.rs                 |  21 ++--
 datafusion/core/tests/sql/mod.rs                   |  55 +++++-----
 datafusion/core/tests/sql/order.rs                 |   2 +-
 datafusion/core/tests/sql/parquet.rs               |   6 +-
 datafusion/core/tests/sql/parquet_schema.rs        |   4 +-
 datafusion/core/tests/sql/projection.rs            |   6 +-
 datafusion/core/tests/sql/timestamp.rs             |   3 +-
 datafusion/core/tests/sql/udf.rs                   |  10 +-
 datafusion/physical-expr/src/functions.rs          |   7 +-
 datafusion/physical-expr/src/hash_utils.rs         |   5 +-
 datafusion/physical-expr/src/lib.rs                |   1 -
 datafusion/physical-expr/src/window/nth_value.rs   |   4 +-
 datafusion/physical-expr/src/window/ntile.rs       |   2 +-
 .../physical-expr/src/window/window_frame_state.rs |   3 +-
 43 files changed, 211 insertions(+), 363 deletions(-)

diff --git a/datafusion-examples/examples/dataframe_in_memory.rs b/datafusion-examples/examples/dataframe_in_memory.rs
index be622d469f..c57c38870a 100644
--- a/datafusion-examples/examples/dataframe_in_memory.rs
+++ b/datafusion-examples/examples/dataframe_in_memory.rs
@@ -21,7 +21,6 @@ use datafusion::arrow::array::{Int32Array, StringArray};
 use datafusion::arrow::datatypes::{DataType, Field, Schema};
 use datafusion::arrow::record_batch::RecordBatch;
 use datafusion::error::Result;
-use datafusion::from_slice::FromSlice;
 use datafusion::prelude::*;
 
 /// This example demonstrates how to use the DataFrame API against in-memory data.
@@ -37,8 +36,8 @@ async fn main() -> Result<()> {
     let batch = RecordBatch::try_new(
         schema,
         vec![
-            Arc::new(StringArray::from_slice(["a", "b", "c", "d"])),
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
+            Arc::new(StringArray::from(vec!["a", "b", "c", "d"])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
         ],
     )?;
 
diff --git a/datafusion-examples/examples/simple_udaf.rs b/datafusion-examples/examples/simple_udaf.rs
index b858ce7ebf..e3b290cc54 100644
--- a/datafusion-examples/examples/simple_udaf.rs
+++ b/datafusion-examples/examples/simple_udaf.rs
@@ -20,7 +20,6 @@
 use datafusion::arrow::{
     array::ArrayRef, array::Float32Array, datatypes::DataType, record_batch::RecordBatch,
 };
-use datafusion::from_slice::FromSlice;
 use datafusion::{error::Result, physical_plan::Accumulator};
 use datafusion::{logical_expr::Volatility, prelude::*, scalar::ScalarValue};
 use datafusion_common::cast::as_float64_array;
@@ -37,11 +36,11 @@ fn create_context() -> Result<SessionContext> {
     // define data in two partitions
     let batch1 = RecordBatch::try_new(
         schema.clone(),
-        vec![Arc::new(Float32Array::from_slice([2.0, 4.0, 8.0]))],
+        vec![Arc::new(Float32Array::from(vec![2.0, 4.0, 8.0]))],
     )?;
     let batch2 = RecordBatch::try_new(
         schema.clone(),
-        vec![Arc::new(Float32Array::from_slice([64.0]))],
+        vec![Arc::new(Float32Array::from(vec![64.0]))],
     )?;
 
     // declare a new context. In spark API, this corresponds to a new spark SQLsession
diff --git a/datafusion-examples/examples/simple_udf.rs b/datafusion-examples/examples/simple_udf.rs
index f735f9938f..dba4385b8e 100644
--- a/datafusion-examples/examples/simple_udf.rs
+++ b/datafusion-examples/examples/simple_udf.rs
@@ -24,7 +24,6 @@ use datafusion::{
     logical_expr::Volatility,
 };
 
-use datafusion::from_slice::FromSlice;
 use datafusion::prelude::*;
 use datafusion::{error::Result, physical_plan::functions::make_scalar_function};
 use datafusion_common::cast::as_float64_array;
@@ -43,8 +42,8 @@ fn create_context() -> Result<SessionContext> {
     let batch = RecordBatch::try_new(
         schema,
         vec![
-            Arc::new(Float32Array::from_slice([2.1, 3.1, 4.1, 5.1])),
-            Arc::new(Float64Array::from_slice([1.0, 2.0, 3.0, 4.0])),
+            Arc::new(Float32Array::from(vec![2.1, 3.1, 4.1, 5.1])),
+            Arc::new(Float64Array::from(vec![1.0, 2.0, 3.0, 4.0])),
         ],
     )?;
 
diff --git a/datafusion/common/src/from_slice.rs b/datafusion/common/src/from_slice.rs
deleted file mode 100644
index 385848f934..0000000000
--- a/datafusion/common/src/from_slice.rs
+++ /dev/null
@@ -1,116 +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.
-
-//! A trait to define from_slice functions for arrow types
-//!
-//! This file essentially exists to ease the transition onto arrow2
-
-use arrow::array::{
-    ArrayData, BooleanArray, GenericBinaryArray, GenericStringArray, OffsetSizeTrait,
-    PrimitiveArray,
-};
-use arrow::buffer::{Buffer, MutableBuffer};
-use arrow::datatypes::{ArrowPrimitiveType, DataType};
-use arrow::util::bit_util;
-
-/// A trait to define from_slice functions for arrow primitive array types
-pub trait FromSlice<S, E>
-where
-    S: AsRef<[E]>,
-{
-    /// convert a slice of native types into a primitive array (without nulls)
-    fn from_slice(slice: S) -> Self;
-}
-
-/// default implementation for primitive array types, adapted from `From<Vec<_>>`
-impl<S, T> FromSlice<S, T::Native> for PrimitiveArray<T>
-where
-    T: ArrowPrimitiveType,
-    S: AsRef<[T::Native]>,
-{
-    fn from_slice(slice: S) -> Self {
-        Self::from_iter_values(slice.as_ref().iter().cloned())
-    }
-}
-
-/// default implementation for binary array types, adapted from `From<Vec<_>>`
-impl<S, I, OffsetSize> FromSlice<S, I> for GenericBinaryArray<OffsetSize>
-where
-    OffsetSize: OffsetSizeTrait,
-    S: AsRef<[I]>,
-    I: AsRef<[u8]>,
-{
-    /// convert a slice of byte slices into a binary array (without nulls)
-    ///
-    /// implementation details: here the Self::from_vec can be called but not without another copy
-    fn from_slice(slice: S) -> Self {
-        let slice = slice.as_ref();
-        let mut offsets = Vec::with_capacity(slice.len() + 1);
-        let mut values = Vec::new();
-        let mut length_so_far: OffsetSize = OffsetSize::zero();
-        offsets.push(length_so_far);
-        for s in slice {
-            let s = s.as_ref();
-            length_so_far += OffsetSize::from_usize(s.len()).unwrap();
-            offsets.push(length_so_far);
-            values.extend_from_slice(s);
-        }
-        let array_data = ArrayData::builder(Self::DATA_TYPE)
-            .len(slice.len())
-            .add_buffer(Buffer::from_slice_ref(&offsets))
-            .add_buffer(Buffer::from_slice_ref(&values));
-        let array_data = unsafe { array_data.build_unchecked() };
-        Self::from(array_data)
-    }
-}
-
-/// default implementation for utf8 array types, adapted from `From<Vec<_>>`
-impl<S, I, OffsetSize> FromSlice<S, I> for GenericStringArray<OffsetSize>
-where
-    OffsetSize: OffsetSizeTrait,
-    S: AsRef<[I]>,
-    I: AsRef<str>,
-{
-    fn from_slice(slice: S) -> Self {
-        Self::from_iter_values(slice.as_ref().iter())
-    }
-}
-
-/// default implementation for boolean array type, adapted from `From<Vec<bool>>`
-impl<S> FromSlice<S, bool> for BooleanArray
-where
-    S: AsRef<[bool]>,
-{
-    fn from_slice(slice: S) -> Self {
-        let slice = slice.as_ref();
-        let mut mut_buf = MutableBuffer::new_null(slice.len());
-        {
-            let mut_slice = mut_buf.as_slice_mut();
-            for (i, b) in slice.iter().enumerate() {
-                if *b {
-                    bit_util::set_bit(mut_slice, i);
-                }
-            }
-        }
-        let array_data = ArrayData::builder(DataType::Boolean)
-            .len(slice.len())
-            .add_buffer(mut_buf.into());
-
-        let array_data = unsafe { array_data.build_unchecked() };
-        Self::from(array_data)
-    }
-}
diff --git a/datafusion/common/src/lib.rs b/datafusion/common/src/lib.rs
index f58964bc22..ef7e094700 100644
--- a/datafusion/common/src/lib.rs
+++ b/datafusion/common/src/lib.rs
@@ -21,7 +21,6 @@ pub mod config;
 pub mod delta;
 mod dfschema;
 mod error;
-pub mod from_slice;
 mod join_type;
 pub mod parsers;
 #[cfg(feature = "pyarrow")]
diff --git a/datafusion/common/src/scalar.rs b/datafusion/common/src/scalar.rs
index 724b21787f..e84ef54519 100644
--- a/datafusion/common/src/scalar.rs
+++ b/datafusion/common/src/scalar.rs
@@ -3851,7 +3851,6 @@ mod tests {
     use rand::Rng;
 
     use crate::cast::{as_string_array, as_uint32_array, as_uint64_array};
-    use crate::from_slice::FromSlice;
 
     use super::*;
 
@@ -4827,26 +4826,26 @@ mod tests {
         let expected = Arc::new(StructArray::from(vec![
             (
                 field_a.clone(),
-                Arc::new(Int32Array::from_slice([23, 23])) as ArrayRef,
+                Arc::new(Int32Array::from(vec![23, 23])) as ArrayRef,
             ),
             (
                 field_b.clone(),
-                Arc::new(BooleanArray::from_slice([false, false])) as ArrayRef,
+                Arc::new(BooleanArray::from(vec![false, false])) as ArrayRef,
             ),
             (
                 field_c.clone(),
-                Arc::new(StringArray::from_slice(["Hello", "Hello"])) as ArrayRef,
+                Arc::new(StringArray::from(vec!["Hello", "Hello"])) as ArrayRef,
             ),
             (
                 field_d.clone(),
                 Arc::new(StructArray::from(vec![
                     (
                         field_e.clone(),
-                        Arc::new(Int16Array::from_slice([2, 2])) as ArrayRef,
+                        Arc::new(Int16Array::from(vec![2, 2])) as ArrayRef,
                     ),
                     (
                         field_f.clone(),
-                        Arc::new(Int64Array::from_slice([3, 3])) as ArrayRef,
+                        Arc::new(Int64Array::from(vec![3, 3])) as ArrayRef,
                     ),
                 ])) as ArrayRef,
             ),
@@ -4922,27 +4921,26 @@ mod tests {
         let expected = Arc::new(StructArray::from(vec![
             (
                 field_a,
-                Arc::new(Int32Array::from_slice([23, 7, -1000])) as ArrayRef,
+                Arc::new(Int32Array::from(vec![23, 7, -1000])) as ArrayRef,
             ),
             (
                 field_b,
-                Arc::new(BooleanArray::from_slice([false, true, true])) as ArrayRef,
+                Arc::new(BooleanArray::from(vec![false, true, true])) as ArrayRef,
             ),
             (
                 field_c,
-                Arc::new(StringArray::from_slice(["Hello", "World", "!!!!!"]))
-                    as ArrayRef,
+                Arc::new(StringArray::from(vec!["Hello", "World", "!!!!!"])) as ArrayRef,
             ),
             (
                 field_d,
                 Arc::new(StructArray::from(vec![
                     (
                         field_e,
-                        Arc::new(Int16Array::from_slice([2, 4, 6])) as ArrayRef,
+                        Arc::new(Int16Array::from(vec![2, 4, 6])) as ArrayRef,
                     ),
                     (
                         field_f,
-                        Arc::new(Int64Array::from_slice([3, 5, 7])) as ArrayRef,
+                        Arc::new(Int64Array::from(vec![3, 5, 7])) as ArrayRef,
                     ),
                 ])) as ArrayRef,
             ),
@@ -5003,8 +5001,7 @@ mod tests {
         let expected = StructArray::from(vec![
             (
                 field_a.clone(),
-                Arc::new(StringArray::from_slice(["First", "Second", "Third"]))
-                    as ArrayRef,
+                Arc::new(StringArray::from(vec!["First", "Second", "Third"])) as ArrayRef,
             ),
             (
                 field_primitive_list.clone(),
diff --git a/datafusion/common/src/utils.rs b/datafusion/common/src/utils.rs
index b565feafb5..2edcd07846 100644
--- a/datafusion/common/src/utils.rs
+++ b/datafusion/common/src/utils.rs
@@ -388,24 +388,22 @@ pub mod datafusion_strsim {
 
 #[cfg(test)]
 mod tests {
+    use crate::ScalarValue;
+    use crate::ScalarValue::Null;
     use arrow::array::Float64Array;
     use arrow_array::Array;
     use std::ops::Range;
     use std::sync::Arc;
 
-    use crate::from_slice::FromSlice;
-    use crate::ScalarValue;
-    use crate::ScalarValue::Null;
-
     use super::*;
 
     #[test]
     fn test_bisect_linear_left_and_right() -> Result<()> {
         let arrays: Vec<ArrayRef> = vec![
-            Arc::new(Float64Array::from_slice([5.0, 7.0, 8.0, 9., 10.])),
-            Arc::new(Float64Array::from_slice([2.0, 3.0, 3.0, 4.0, 5.0])),
-            Arc::new(Float64Array::from_slice([5.0, 7.0, 8.0, 10., 11.0])),
-            Arc::new(Float64Array::from_slice([15.0, 13.0, 8.0, 5., 0.0])),
+            Arc::new(Float64Array::from(vec![5.0, 7.0, 8.0, 9., 10.])),
+            Arc::new(Float64Array::from(vec![2.0, 3.0, 3.0, 4.0, 5.0])),
+            Arc::new(Float64Array::from(vec![5.0, 7.0, 8.0, 10., 11.0])),
+            Arc::new(Float64Array::from(vec![15.0, 13.0, 8.0, 5., 0.0])),
         ];
         let search_tuple: Vec<ScalarValue> = vec![
             ScalarValue::Float64(Some(8.0)),
@@ -478,9 +476,8 @@ mod tests {
     #[test]
     fn test_bisect_linear_left_and_right_diff_sort() -> Result<()> {
         // Descending, left
-        let arrays: Vec<ArrayRef> = vec![Arc::new(Float64Array::from_slice([
-            4.0, 3.0, 2.0, 1.0, 0.0,
-        ]))];
+        let arrays: Vec<ArrayRef> =
+            vec![Arc::new(Float64Array::from(vec![4.0, 3.0, 2.0, 1.0, 0.0]))];
         let search_tuple: Vec<ScalarValue> = vec![ScalarValue::Float64(Some(4.0))];
         let ords = [SortOptions {
             descending: true,
@@ -492,9 +489,8 @@ mod tests {
         assert_eq!(res, 0);
 
         // Descending, right
-        let arrays: Vec<ArrayRef> = vec![Arc::new(Float64Array::from_slice([
-            4.0, 3.0, 2.0, 1.0, 0.0,
-        ]))];
+        let arrays: Vec<ArrayRef> =
+            vec![Arc::new(Float64Array::from(vec![4.0, 3.0, 2.0, 1.0, 0.0]))];
         let search_tuple: Vec<ScalarValue> = vec![ScalarValue::Float64(Some(4.0))];
         let ords = [SortOptions {
             descending: true,
@@ -507,7 +503,7 @@ mod tests {
 
         // Ascending, left
         let arrays: Vec<ArrayRef> =
-            vec![Arc::new(Float64Array::from_slice([5.0, 7.0, 8.0, 9., 10.]))];
+            vec![Arc::new(Float64Array::from(vec![5.0, 7.0, 8.0, 9., 10.]))];
         let search_tuple: Vec<ScalarValue> = vec![ScalarValue::Float64(Some(7.0))];
         let ords = [SortOptions {
             descending: false,
@@ -520,7 +516,7 @@ mod tests {
 
         // Ascending, right
         let arrays: Vec<ArrayRef> =
-            vec![Arc::new(Float64Array::from_slice([5.0, 7.0, 8.0, 9., 10.]))];
+            vec![Arc::new(Float64Array::from(vec![5.0, 7.0, 8.0, 9., 10.]))];
         let search_tuple: Vec<ScalarValue> = vec![ScalarValue::Float64(Some(7.0))];
         let ords = [SortOptions {
             descending: false,
@@ -532,8 +528,8 @@ mod tests {
         assert_eq!(res, 2);
 
         let arrays: Vec<ArrayRef> = vec![
-            Arc::new(Float64Array::from_slice([5.0, 7.0, 8.0, 8.0, 9., 10.])),
-            Arc::new(Float64Array::from_slice([10.0, 9.0, 8.0, 7.5, 7., 6.])),
+            Arc::new(Float64Array::from(vec![5.0, 7.0, 8.0, 8.0, 9., 10.])),
+            Arc::new(Float64Array::from(vec![10.0, 9.0, 8.0, 7.5, 7., 6.])),
         ];
         let search_tuple: Vec<ScalarValue> = vec![
             ScalarValue::Float64(Some(8.0)),
@@ -564,8 +560,8 @@ mod tests {
     #[test]
     fn test_evaluate_partition_ranges() -> Result<()> {
         let arrays: Vec<ArrayRef> = vec![
-            Arc::new(Float64Array::from_slice([1.0, 1.0, 1.0, 2.0, 2.0, 2.0])),
-            Arc::new(Float64Array::from_slice([4.0, 4.0, 3.0, 2.0, 1.0, 1.0])),
+            Arc::new(Float64Array::from(vec![1.0, 1.0, 1.0, 2.0, 2.0, 2.0])),
+            Arc::new(Float64Array::from(vec![4.0, 4.0, 3.0, 2.0, 1.0, 1.0])),
         ];
         let n_row = arrays[0].len();
         let options: Vec<SortOptions> = vec![
@@ -641,10 +637,10 @@ mod tests {
     #[test]
     fn test_get_arrayref_at_indices() -> Result<()> {
         let arrays: Vec<ArrayRef> = vec![
-            Arc::new(Float64Array::from_slice([5.0, 7.0, 8.0, 9., 10.])),
-            Arc::new(Float64Array::from_slice([2.0, 3.0, 3.0, 4.0, 5.0])),
-            Arc::new(Float64Array::from_slice([5.0, 7.0, 8.0, 10., 11.0])),
-            Arc::new(Float64Array::from_slice([15.0, 13.0, 8.0, 5., 0.0])),
+            Arc::new(Float64Array::from(vec![5.0, 7.0, 8.0, 9., 10.])),
+            Arc::new(Float64Array::from(vec![2.0, 3.0, 3.0, 4.0, 5.0])),
+            Arc::new(Float64Array::from(vec![5.0, 7.0, 8.0, 10., 11.0])),
+            Arc::new(Float64Array::from(vec![15.0, 13.0, 8.0, 5., 0.0])),
         ];
 
         let row_indices_vec: Vec<Vec<u32>> = vec![
diff --git a/datafusion/core/benches/data_utils/mod.rs b/datafusion/core/benches/data_utils/mod.rs
index 575e1831c8..9169c3dda4 100644
--- a/datafusion/core/benches/data_utils/mod.rs
+++ b/datafusion/core/benches/data_utils/mod.rs
@@ -27,7 +27,6 @@ use arrow::{
 };
 use datafusion::datasource::MemTable;
 use datafusion::error::Result;
-use datafusion::from_slice::FromSlice;
 use rand::rngs::StdRng;
 use rand::seq::SliceRandom;
 use rand::{Rng, SeedableRng};
@@ -131,7 +130,7 @@ fn create_record_batch(
         schema,
         vec![
             Arc::new(StringArray::from(keys)),
-            Arc::new(Float32Array::from_slice(vec![i as f32; batch_size])),
+            Arc::new(Float32Array::from(vec![i as f32; batch_size])),
             Arc::new(Float64Array::from(values)),
             Arc::new(UInt64Array::from(integer_values_wide)),
             Arc::new(UInt64Array::from(integer_values_narrow)),
diff --git a/datafusion/core/benches/filter_query_sql.rs b/datafusion/core/benches/filter_query_sql.rs
index 8b0142078d..01adc357b3 100644
--- a/datafusion/core/benches/filter_query_sql.rs
+++ b/datafusion/core/benches/filter_query_sql.rs
@@ -21,7 +21,6 @@ use arrow::{
     record_batch::RecordBatch,
 };
 use criterion::{criterion_group, criterion_main, Criterion};
-use datafusion::from_slice::FromSlice;
 use datafusion::prelude::SessionContext;
 use datafusion::{datasource::MemTable, error::Result};
 use futures::executor::block_on;
@@ -49,8 +48,8 @@ fn create_context(array_len: usize, batch_size: usize) -> Result<SessionContext>
             RecordBatch::try_new(
                 schema.clone(),
                 vec![
-                    Arc::new(Float32Array::from_slice(vec![i as f32; batch_size])),
-                    Arc::new(Float64Array::from_slice(vec![i as f64; batch_size])),
+                    Arc::new(Float32Array::from(vec![i as f32; batch_size])),
+                    Arc::new(Float64Array::from(vec![i as f64; batch_size])),
                 ],
             )
             .unwrap()
diff --git a/datafusion/core/benches/math_query_sql.rs b/datafusion/core/benches/math_query_sql.rs
index 87c7a363ef..92c59d5066 100644
--- a/datafusion/core/benches/math_query_sql.rs
+++ b/datafusion/core/benches/math_query_sql.rs
@@ -35,7 +35,6 @@ use arrow::{
 use datafusion::datasource::MemTable;
 use datafusion::error::Result;
 use datafusion::execution::context::SessionContext;
-use datafusion::from_slice::FromSlice;
 
 fn query(ctx: Arc<Mutex<SessionContext>>, sql: &str) {
     let rt = Runtime::new().unwrap();
@@ -61,8 +60,8 @@ fn create_context(
             RecordBatch::try_new(
                 schema.clone(),
                 vec![
-                    Arc::new(Float32Array::from_slice(vec![i as f32; batch_size])),
-                    Arc::new(Float64Array::from_slice(vec![i as f64; batch_size])),
+                    Arc::new(Float32Array::from(vec![i as f32; batch_size])),
+                    Arc::new(Float64Array::from(vec![i as f64; batch_size])),
                 ],
             )
             .unwrap()
diff --git a/datafusion/core/src/dataframe.rs b/datafusion/core/src/dataframe.rs
index 1b285107b3..7d0fddcf82 100644
--- a/datafusion/core/src/dataframe.rs
+++ b/datafusion/core/src/dataframe.rs
@@ -27,7 +27,6 @@ use async_trait::async_trait;
 use datafusion_common::{DataFusionError, SchemaError};
 use parquet::file::properties::WriterProperties;
 
-use datafusion_common::from_slice::FromSlice;
 use datafusion_common::{Column, DFSchema, ScalarValue};
 use datafusion_expr::{
     avg, count, is_null, max, median, min, stddev, utils::COUNT_STAR_EXPANSION,
@@ -411,7 +410,7 @@ impl DataFrame {
         ];
 
         // first column with function names
-        let mut array_ref_vec: Vec<ArrayRef> = vec![Arc::new(StringArray::from_slice(
+        let mut array_ref_vec: Vec<ArrayRef> = vec![Arc::new(StringArray::from(
             supported_describe_functions.clone(),
         ))];
         for field in original_schema_fields {
@@ -435,7 +434,7 @@ impl DataFrame {
                                     cast(column, &DataType::Utf8)?
                                 }
                             }
-                            _ => Arc::new(StringArray::from_slice(["null"])),
+                            _ => Arc::new(StringArray::from(vec!["null"])),
                         }
                     }
                     //Handling error when only boolean/binary column, and in other cases
@@ -446,7 +445,7 @@ impl DataFrame {
                                             or aggregate expression",
                         ) =>
                     {
-                        Arc::new(StringArray::from_slice(["null"]))
+                        Arc::new(StringArray::from(vec!["null"]))
                     }
                     Err(other_err) => {
                         panic!("{other_err}")
diff --git a/datafusion/core/src/datasource/listing/table.rs b/datafusion/core/src/datasource/listing/table.rs
index b0bdc05244..0252e99ab8 100644
--- a/datafusion/core/src/datasource/listing/table.rs
+++ b/datafusion/core/src/datasource/listing/table.rs
@@ -905,7 +905,6 @@ mod tests {
     use arrow::record_batch::RecordBatch;
     use chrono::DateTime;
     use datafusion_common::assert_contains;
-    use datafusion_common::from_slice::FromSlice;
     use datafusion_expr::LogicalPlanBuilder;
     use rstest::*;
     use std::fs::File;
@@ -1529,7 +1528,7 @@ mod tests {
         // Create a new batch of data to insert into the table
         let batch = RecordBatch::try_new(
             schema.clone(),
-            vec![Arc::new(arrow_array::Int32Array::from_slice([1, 2, 3]))],
+            vec![Arc::new(arrow_array::Int32Array::from(vec![1, 2, 3]))],
         )?;
 
         // Filename with extension
diff --git a/datafusion/core/src/datasource/memory.rs b/datafusion/core/src/datasource/memory.rs
index 9775803185..f66b44e9d1 100644
--- a/datafusion/core/src/datasource/memory.rs
+++ b/datafusion/core/src/datasource/memory.rs
@@ -256,7 +256,6 @@ impl DataSink for MemSink {
 mod tests {
     use super::*;
     use crate::datasource::provider_as_source;
-    use crate::from_slice::FromSlice;
     use crate::physical_plan::collect;
     use crate::prelude::SessionContext;
     use arrow::array::{AsArray, Int32Array};
@@ -280,9 +279,9 @@ mod tests {
         let batch = RecordBatch::try_new(
             schema.clone(),
             vec![
-                Arc::new(Int32Array::from_slice([1, 2, 3])),
-                Arc::new(Int32Array::from_slice([4, 5, 6])),
-                Arc::new(Int32Array::from_slice([7, 8, 9])),
+                Arc::new(Int32Array::from(vec![1, 2, 3])),
+                Arc::new(Int32Array::from(vec![4, 5, 6])),
+                Arc::new(Int32Array::from(vec![7, 8, 9])),
                 Arc::new(Int32Array::from(vec![None, None, Some(9)])),
             ],
         )?;
@@ -317,9 +316,9 @@ mod tests {
         let batch = RecordBatch::try_new(
             schema.clone(),
             vec![
-                Arc::new(Int32Array::from_slice([1, 2, 3])),
-                Arc::new(Int32Array::from_slice([4, 5, 6])),
-                Arc::new(Int32Array::from_slice([7, 8, 9])),
+                Arc::new(Int32Array::from(vec![1, 2, 3])),
+                Arc::new(Int32Array::from(vec![4, 5, 6])),
+                Arc::new(Int32Array::from(vec![7, 8, 9])),
             ],
         )?;
 
@@ -347,9 +346,9 @@ mod tests {
         let batch = RecordBatch::try_new(
             schema.clone(),
             vec![
-                Arc::new(Int32Array::from_slice([1, 2, 3])),
-                Arc::new(Int32Array::from_slice([4, 5, 6])),
-                Arc::new(Int32Array::from_slice([7, 8, 9])),
+                Arc::new(Int32Array::from(vec![1, 2, 3])),
+                Arc::new(Int32Array::from(vec![4, 5, 6])),
+                Arc::new(Int32Array::from(vec![7, 8, 9])),
             ],
         )?;
 
@@ -390,9 +389,9 @@ mod tests {
         let batch = RecordBatch::try_new(
             schema1,
             vec![
-                Arc::new(Int32Array::from_slice([1, 2, 3])),
-                Arc::new(Int32Array::from_slice([4, 5, 6])),
-                Arc::new(Int32Array::from_slice([7, 8, 9])),
+                Arc::new(Int32Array::from(vec![1, 2, 3])),
+                Arc::new(Int32Array::from(vec![4, 5, 6])),
+                Arc::new(Int32Array::from(vec![7, 8, 9])),
             ],
         )?;
 
@@ -422,8 +421,8 @@ mod tests {
         let batch = RecordBatch::try_new(
             schema1,
             vec![
-                Arc::new(Int32Array::from_slice([1, 2, 3])),
-                Arc::new(Int32Array::from_slice([7, 5, 9])),
+                Arc::new(Int32Array::from(vec![1, 2, 3])),
+                Arc::new(Int32Array::from(vec![7, 5, 9])),
             ],
         )?;
 
@@ -466,18 +465,18 @@ mod tests {
         let batch1 = RecordBatch::try_new(
             Arc::new(schema1),
             vec![
-                Arc::new(Int32Array::from_slice([1, 2, 3])),
-                Arc::new(Int32Array::from_slice([4, 5, 6])),
-                Arc::new(Int32Array::from_slice([7, 8, 9])),
+                Arc::new(Int32Array::from(vec![1, 2, 3])),
+                Arc::new(Int32Array::from(vec![4, 5, 6])),
+                Arc::new(Int32Array::from(vec![7, 8, 9])),
             ],
         )?;
 
         let batch2 = RecordBatch::try_new(
             Arc::new(schema2),
             vec![
-                Arc::new(Int32Array::from_slice([1, 2, 3])),
-                Arc::new(Int32Array::from_slice([4, 5, 6])),
-                Arc::new(Int32Array::from_slice([7, 8, 9])),
+                Arc::new(Int32Array::from(vec![1, 2, 3])),
+                Arc::new(Int32Array::from(vec![4, 5, 6])),
+                Arc::new(Int32Array::from(vec![7, 8, 9])),
             ],
         )?;
 
@@ -574,7 +573,7 @@ mod tests {
         // Create a new batch of data to insert into the table
         let batch = RecordBatch::try_new(
             schema.clone(),
-            vec![Arc::new(Int32Array::from_slice([1, 2, 3]))],
+            vec![Arc::new(Int32Array::from(vec![1, 2, 3]))],
         )?;
         // Run the experiment and obtain the resulting data in the table
         let resulting_data_in_table =
@@ -594,7 +593,7 @@ mod tests {
         // Create a new batch of data to insert into the table
         let batch = RecordBatch::try_new(
             schema.clone(),
-            vec![Arc::new(Int32Array::from_slice([1, 2, 3]))],
+            vec![Arc::new(Int32Array::from(vec![1, 2, 3]))],
         )?;
         // Run the experiment and obtain the resulting data in the table
         let resulting_data_in_table = experiment(
@@ -617,7 +616,7 @@ mod tests {
         // Create a new batch of data to insert into the table
         let batch = RecordBatch::try_new(
             schema.clone(),
-            vec![Arc::new(Int32Array::from_slice([1, 2, 3]))],
+            vec![Arc::new(Int32Array::from(vec![1, 2, 3]))],
         )?;
         // Run the experiment and obtain the resulting data in the table
         let resulting_data_in_table = experiment(
@@ -643,7 +642,7 @@ mod tests {
         // Create a new batch of data to insert into the table
         let batch = RecordBatch::try_new(
             schema.clone(),
-            vec![Arc::new(Int32Array::from_slice([1, 2, 3]))],
+            vec![Arc::new(Int32Array::from(vec![1, 2, 3]))],
         )?;
         // Run the experiment and obtain the resulting data in the table
         let resulting_data_in_table = experiment(
diff --git a/datafusion/core/src/lib.rs b/datafusion/core/src/lib.rs
index 43bdd959c2..3e58923c3a 100644
--- a/datafusion/core/src/lib.rs
+++ b/datafusion/core/src/lib.rs
@@ -437,8 +437,6 @@ pub use datafusion_physical_expr as physical_expr;
 pub use datafusion_row as row;
 pub use datafusion_sql as sql;
 
-pub use common::from_slice;
-
 #[cfg(test)]
 pub mod test;
 pub mod test_util;
diff --git a/datafusion/core/src/physical_optimizer/pruning.rs b/datafusion/core/src/physical_optimizer/pruning.rs
index bab9c24720..8fb3058308 100644
--- a/datafusion/core/src/physical_optimizer/pruning.rs
+++ b/datafusion/core/src/physical_optimizer/pruning.rs
@@ -933,7 +933,6 @@ pub(crate) enum StatisticsType {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use crate::from_slice::FromSlice;
     use crate::logical_expr::{col, lit};
     use crate::{assert_batches_eq, physical_optimizer::pruning::StatisticsType};
     use arrow::array::Decimal128Array;
@@ -1298,7 +1297,7 @@ mod tests {
 
         // Note the statistics return an invalid UTF-8 sequence which will be converted to null
         let statistics = OneContainerStats {
-            min_values: Some(Arc::new(BinaryArray::from_slice([&[255u8] as &[u8]]))),
+            min_values: Some(Arc::new(BinaryArray::from(vec![&[255u8] as &[u8]]))),
             max_values: None,
             num_containers: 1,
         };
diff --git a/datafusion/core/src/physical_plan/aggregates/mod.rs b/datafusion/core/src/physical_plan/aggregates/mod.rs
index f96a09c8e9..a2ae41de1f 100644
--- a/datafusion/core/src/physical_plan/aggregates/mod.rs
+++ b/datafusion/core/src/physical_plan/aggregates/mod.rs
@@ -1182,7 +1182,6 @@ fn evaluate_group_by(
 mod tests {
     use super::*;
     use crate::execution::context::SessionConfig;
-    use crate::from_slice::FromSlice;
     use crate::physical_plan::aggregates::{
         get_finest_requirement, get_working_mode, AggregateExec, AggregateMode,
         PhysicalGroupBy,
@@ -1320,16 +1319,16 @@ mod tests {
                 RecordBatch::try_new(
                     schema.clone(),
                     vec![
-                        Arc::new(UInt32Array::from_slice([2, 3, 4, 4])),
-                        Arc::new(Float64Array::from_slice([1.0, 2.0, 3.0, 4.0])),
+                        Arc::new(UInt32Array::from(vec![2, 3, 4, 4])),
+                        Arc::new(Float64Array::from(vec![1.0, 2.0, 3.0, 4.0])),
                     ],
                 )
                 .unwrap(),
                 RecordBatch::try_new(
                     schema,
                     vec![
-                        Arc::new(UInt32Array::from_slice([2, 3, 3, 4])),
-                        Arc::new(Float64Array::from_slice([1.0, 2.0, 3.0, 4.0])),
+                        Arc::new(UInt32Array::from(vec![2, 3, 3, 4])),
+                        Arc::new(Float64Array::from(vec![1.0, 2.0, 3.0, 4.0])),
                     ],
                 )
                 .unwrap(),
diff --git a/datafusion/core/src/physical_plan/common.rs b/datafusion/core/src/physical_plan/common.rs
index 031c2dd0f3..982bb4f2e6 100644
--- a/datafusion/core/src/physical_plan/common.rs
+++ b/datafusion/core/src/physical_plan/common.rs
@@ -289,7 +289,6 @@ mod tests {
     use std::ops::Not;
 
     use super::*;
-    use crate::from_slice::FromSlice;
     use crate::physical_plan::memory::MemoryExec;
     use crate::physical_plan::sorts::sort::SortExec;
     use crate::physical_plan::union::UnionExec;
@@ -601,8 +600,8 @@ mod tests {
         let batch = RecordBatch::try_new(
             Arc::clone(&schema),
             vec![
-                Arc::new(Float32Array::from_slice([1., 2., 3.])),
-                Arc::new(Float64Array::from_slice([9., 8., 7.])),
+                Arc::new(Float32Array::from(vec![1., 2., 3.])),
+                Arc::new(Float64Array::from(vec![9., 8., 7.])),
             ],
         )?;
         let actual =
diff --git a/datafusion/core/src/physical_plan/insert.rs b/datafusion/core/src/physical_plan/insert.rs
index 6e02a54da2..f3bd701a56 100644
--- a/datafusion/core/src/physical_plan/insert.rs
+++ b/datafusion/core/src/physical_plan/insert.rs
@@ -206,7 +206,7 @@ impl ExecutionPlan for InsertExec {
 /// +-------+,
 /// ```
 fn make_count_batch(count: u64) -> RecordBatch {
-    let array = Arc::new(UInt64Array::from_iter_values(vec![count])) as ArrayRef;
+    let array = Arc::new(UInt64Array::from(vec![count])) as ArrayRef;
 
     RecordBatch::try_from_iter_with_nullable(vec![("count", array, false)]).unwrap()
 }
diff --git a/datafusion/core/src/physical_plan/repartition/mod.rs b/datafusion/core/src/physical_plan/repartition/mod.rs
index 47814a27de..d7dc54afd6 100644
--- a/datafusion/core/src/physical_plan/repartition/mod.rs
+++ b/datafusion/core/src/physical_plan/repartition/mod.rs
@@ -685,7 +685,6 @@ impl RecordBatchStream for RepartitionStream {
 mod tests {
     use super::*;
     use crate::execution::context::SessionConfig;
-    use crate::from_slice::FromSlice;
     use crate::prelude::SessionContext;
     use crate::test::create_vec_batches;
     use crate::{
@@ -852,7 +851,7 @@ mod tests {
         // have to send at least one batch through to provoke error
         let batch = RecordBatch::try_from_iter(vec![(
             "my_awesome_field",
-            Arc::new(StringArray::from_slice(["foo", "bar"])) as ArrayRef,
+            Arc::new(StringArray::from(vec!["foo", "bar"])) as ArrayRef,
         )])
         .unwrap();
 
@@ -909,7 +908,7 @@ mod tests {
         let task_ctx = session_ctx.task_ctx();
         let batch = RecordBatch::try_from_iter(vec![(
             "my_awesome_field",
-            Arc::new(StringArray::from_slice(["foo", "bar"])) as ArrayRef,
+            Arc::new(StringArray::from(vec!["foo", "bar"])) as ArrayRef,
         )])
         .unwrap();
 
@@ -943,13 +942,13 @@ mod tests {
         let task_ctx = session_ctx.task_ctx();
         let batch1 = RecordBatch::try_from_iter(vec![(
             "my_awesome_field",
-            Arc::new(StringArray::from_slice(["foo", "bar"])) as ArrayRef,
+            Arc::new(StringArray::from(vec!["foo", "bar"])) as ArrayRef,
         )])
         .unwrap();
 
         let batch2 = RecordBatch::try_from_iter(vec![(
             "my_awesome_field",
-            Arc::new(StringArray::from_slice(["frob", "baz"])) as ArrayRef,
+            Arc::new(StringArray::from(vec!["frob", "baz"])) as ArrayRef,
         )])
         .unwrap();
 
@@ -1095,25 +1094,25 @@ mod tests {
     fn make_barrier_exec() -> BarrierExec {
         let batch1 = RecordBatch::try_from_iter(vec![(
             "my_awesome_field",
-            Arc::new(StringArray::from_slice(["foo", "bar"])) as ArrayRef,
+            Arc::new(StringArray::from(vec!["foo", "bar"])) as ArrayRef,
         )])
         .unwrap();
 
         let batch2 = RecordBatch::try_from_iter(vec![(
             "my_awesome_field",
-            Arc::new(StringArray::from_slice(["frob", "baz"])) as ArrayRef,
+            Arc::new(StringArray::from(vec!["frob", "baz"])) as ArrayRef,
         )])
         .unwrap();
 
         let batch3 = RecordBatch::try_from_iter(vec![(
             "my_awesome_field",
-            Arc::new(StringArray::from_slice(["goo", "gar"])) as ArrayRef,
+            Arc::new(StringArray::from(vec!["goo", "gar"])) as ArrayRef,
         )])
         .unwrap();
 
         let batch4 = RecordBatch::try_from_iter(vec![(
             "my_awesome_field",
-            Arc::new(StringArray::from_slice(["grob", "gaz"])) as ArrayRef,
+            Arc::new(StringArray::from(vec!["grob", "gaz"])) as ArrayRef,
         )])
         .unwrap();
 
@@ -1153,7 +1152,7 @@ mod tests {
         let task_ctx = session_ctx.task_ctx();
         let batch = RecordBatch::try_from_iter(vec![(
             "a",
-            Arc::new(StringArray::from_slice(["foo"])) as ArrayRef,
+            Arc::new(StringArray::from(vec!["foo"])) as ArrayRef,
         )])
         .unwrap();
         let partitioning = Partitioning::Hash(
diff --git a/datafusion/core/src/physical_plan/sorts/sort_preserving_merge.rs b/datafusion/core/src/physical_plan/sorts/sort_preserving_merge.rs
index 9d93a5055e..1195959a89 100644
--- a/datafusion/core/src/physical_plan/sorts/sort_preserving_merge.rs
+++ b/datafusion/core/src/physical_plan/sorts/sort_preserving_merge.rs
@@ -233,7 +233,6 @@ mod tests {
     use arrow::record_batch::RecordBatch;
     use futures::{FutureExt, StreamExt};
 
-    use crate::from_slice::FromSlice;
     use crate::physical_plan::coalesce_partitions::CoalescePartitionsExec;
     use crate::physical_plan::expressions::col;
     use crate::physical_plan::memory::MemoryExec;
@@ -253,7 +252,7 @@ mod tests {
     async fn test_merge_interleave() {
         let session_ctx = SessionContext::new();
         let task_ctx = session_ctx.task_ctx();
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([1, 2, 7, 9, 3]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2, 7, 9, 3]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             Some("a"),
             Some("c"),
@@ -264,7 +263,7 @@ mod tests {
         let c: ArrayRef = Arc::new(TimestampNanosecondArray::from(vec![8, 7, 6, 5, 8]));
         let b1 = RecordBatch::try_from_iter(vec![("a", a), ("b", b), ("c", c)]).unwrap();
 
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([10, 20, 70, 90, 30]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![10, 20, 70, 90, 30]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             Some("b"),
             Some("d"),
@@ -302,7 +301,7 @@ mod tests {
     async fn test_merge_some_overlap() {
         let session_ctx = SessionContext::new();
         let task_ctx = session_ctx.task_ctx();
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([1, 2, 7, 9, 3]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2, 7, 9, 3]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             Some("a"),
             Some("b"),
@@ -313,7 +312,7 @@ mod tests {
         let c: ArrayRef = Arc::new(TimestampNanosecondArray::from(vec![8, 7, 6, 5, 8]));
         let b1 = RecordBatch::try_from_iter(vec![("a", a), ("b", b), ("c", c)]).unwrap();
 
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([70, 90, 30, 100, 110]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![70, 90, 30, 100, 110]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             Some("c"),
             Some("d"),
@@ -351,7 +350,7 @@ mod tests {
     async fn test_merge_no_overlap() {
         let session_ctx = SessionContext::new();
         let task_ctx = session_ctx.task_ctx();
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([1, 2, 7, 9, 3]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2, 7, 9, 3]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             Some("a"),
             Some("b"),
@@ -362,7 +361,7 @@ mod tests {
         let c: ArrayRef = Arc::new(TimestampNanosecondArray::from(vec![8, 7, 6, 5, 8]));
         let b1 = RecordBatch::try_from_iter(vec![("a", a), ("b", b), ("c", c)]).unwrap();
 
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([10, 20, 70, 90, 30]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![10, 20, 70, 90, 30]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             Some("f"),
             Some("g"),
@@ -400,7 +399,7 @@ mod tests {
     async fn test_merge_three_partitions() {
         let session_ctx = SessionContext::new();
         let task_ctx = session_ctx.task_ctx();
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([1, 2, 7, 9, 3]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2, 7, 9, 3]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             Some("a"),
             Some("b"),
@@ -411,7 +410,7 @@ mod tests {
         let c: ArrayRef = Arc::new(TimestampNanosecondArray::from(vec![8, 7, 6, 5, 8]));
         let b1 = RecordBatch::try_from_iter(vec![("a", a), ("b", b), ("c", c)]).unwrap();
 
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([10, 20, 70, 90, 30]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![10, 20, 70, 90, 30]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             Some("e"),
             Some("g"),
@@ -423,7 +422,7 @@ mod tests {
             Arc::new(TimestampNanosecondArray::from(vec![40, 60, 20, 20, 60]));
         let b2 = RecordBatch::try_from_iter(vec![("a", a), ("b", b), ("c", c)]).unwrap();
 
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([100, 200, 700, 900, 300]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![100, 200, 700, 900, 300]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             Some("f"),
             Some("g"),
@@ -696,7 +695,7 @@ mod tests {
     async fn test_nulls() {
         let session_ctx = SessionContext::new();
         let task_ctx = session_ctx.task_ctx();
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([1, 2, 7, 9, 3]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2, 7, 9, 3]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             None,
             Some("a"),
@@ -713,7 +712,7 @@ mod tests {
         ]));
         let b1 = RecordBatch::try_from_iter(vec![("a", a), ("b", b), ("c", c)]).unwrap();
 
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([1, 2, 3, 4, 5]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![
             None,
             Some("b"),
@@ -841,11 +840,11 @@ mod tests {
     async fn test_merge_metrics() {
         let session_ctx = SessionContext::new();
         let task_ctx = session_ctx.task_ctx();
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([1, 2]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![Some("a"), Some("c")]));
         let b1 = RecordBatch::try_from_iter(vec![("a", a), ("b", b)]).unwrap();
 
-        let a: ArrayRef = Arc::new(Int32Array::from_slice([10, 20]));
+        let a: ArrayRef = Arc::new(Int32Array::from(vec![10, 20]));
         let b: ArrayRef = Arc::new(StringArray::from_iter(vec![Some("b"), Some("d")]));
         let b2 = RecordBatch::try_from_iter(vec![("a", a), ("b", b)]).unwrap();
 
diff --git a/datafusion/core/src/test/mod.rs b/datafusion/core/src/test/mod.rs
index 82b55063dc..838c13f968 100644
--- a/datafusion/core/src/test/mod.rs
+++ b/datafusion/core/src/test/mod.rs
@@ -24,7 +24,6 @@ use crate::datasource::object_store::ObjectStoreUrl;
 use crate::datasource::physical_plan::{CsvExec, FileScanConfig};
 use crate::datasource::{MemTable, TableProvider};
 use crate::error::Result;
-use crate::from_slice::FromSlice;
 use crate::logical_expr::LogicalPlan;
 use crate::physical_plan::memory::MemoryExec;
 use crate::physical_plan::ExecutionPlan;
@@ -64,8 +63,8 @@ pub fn create_table_dual() -> Arc<dyn TableProvider> {
     let batch = RecordBatch::try_new(
         dual_schema.clone(),
         vec![
-            Arc::new(array::Int32Array::from_slice([1])),
-            Arc::new(array::StringArray::from_slice(["a"])),
+            Arc::new(array::Int32Array::from(vec![1])),
+            Arc::new(array::StringArray::from(vec!["a"])),
         ],
     )
     .unwrap();
@@ -357,7 +356,7 @@ pub fn csv_exec_sorted(
 fn create_batch(schema: &Schema) -> RecordBatch {
     RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(UInt32Array::from_slice([1, 2, 3, 4, 5, 6, 7, 8]))],
+        vec![Arc::new(UInt32Array::from(vec![1, 2, 3, 4, 5, 6, 7, 8]))],
     )
     .unwrap()
 }
diff --git a/datafusion/core/tests/custom_sources.rs b/datafusion/core/tests/custom_sources.rs
index 57314f2e1e..b060480d64 100644
--- a/datafusion/core/tests/custom_sources.rs
+++ b/datafusion/core/tests/custom_sources.rs
@@ -20,7 +20,6 @@ use arrow::compute::kernels::aggregate;
 use arrow::datatypes::{DataType, Field, Int32Type, Schema, SchemaRef};
 use arrow::record_batch::RecordBatch;
 use datafusion::execution::context::{SessionContext, SessionState, TaskContext};
-use datafusion::from_slice::FromSlice;
 use datafusion::logical_expr::{
     col, Expr, LogicalPlan, LogicalPlanBuilder, TableScan, UNNAMED_TABLE,
 };
@@ -70,8 +69,8 @@ macro_rules! TEST_CUSTOM_RECORD_BATCH {
         RecordBatch::try_new(
             TEST_CUSTOM_SCHEMA_REF!(),
             vec![
-                Arc::new(Int32Array::from_slice(&[1, 10, 10, 100])),
-                Arc::new(Int32Array::from_slice(&[2, 12, 12, 120])),
+                Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
+                Arc::new(Int32Array::from(vec![2, 12, 12, 120])),
             ],
         )
     };
@@ -268,9 +267,9 @@ async fn optimizers_catch_all_statistics() {
             Field::new("MAX(test.c1)", DataType::Int32, false),
         ])),
         vec![
-            Arc::new(Int64Array::from_slice([4])),
-            Arc::new(Int32Array::from_slice([1])),
-            Arc::new(Int32Array::from_slice([100])),
+            Arc::new(Int64Array::from(vec![4])),
+            Arc::new(Int32Array::from(vec![1])),
+            Arc::new(Int32Array::from(vec![100])),
         ],
     )
     .unwrap();
diff --git a/datafusion/core/tests/dataframe.rs b/datafusion/core/tests/dataframe.rs
index 7c1a31b6cc..f19f6d3c59 100644
--- a/datafusion/core/tests/dataframe.rs
+++ b/datafusion/core/tests/dataframe.rs
@@ -24,7 +24,6 @@ use arrow::{
     },
     record_batch::RecordBatch,
 };
-use datafusion::from_slice::FromSlice;
 use std::sync::Arc;
 
 use datafusion::dataframe::DataFrame;
@@ -342,16 +341,16 @@ async fn join() -> Result<()> {
     let batch1 = RecordBatch::try_new(
         schema1.clone(),
         vec![
-            Arc::new(StringArray::from_slice(["a", "b", "c", "d"])),
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
+            Arc::new(StringArray::from(vec!["a", "b", "c", "d"])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
         ],
     )?;
     // define data.
     let batch2 = RecordBatch::try_new(
         schema2.clone(),
         vec![
-            Arc::new(StringArray::from_slice(["a", "b", "c", "d"])),
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
+            Arc::new(StringArray::from(vec!["a", "b", "c", "d"])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
         ],
     )?;
 
@@ -384,8 +383,8 @@ async fn sort_on_unprojected_columns() -> Result<()> {
     let batch = RecordBatch::try_new(
         Arc::new(schema.clone()),
         vec![
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
-            Arc::new(Int32Array::from_slice([2, 12, 12, 120])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
+            Arc::new(Int32Array::from(vec![2, 12, 12, 120])),
         ],
     )
     .unwrap();
@@ -429,8 +428,8 @@ async fn sort_on_distinct_columns() -> Result<()> {
     let batch = RecordBatch::try_new(
         Arc::new(schema.clone()),
         vec![
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
-            Arc::new(Int32Array::from_slice([2, 3, 4, 5])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
+            Arc::new(Int32Array::from(vec![2, 3, 4, 5])),
         ],
     )
     .unwrap();
@@ -473,8 +472,8 @@ async fn sort_on_distinct_unprojected_columns() -> Result<()> {
     let batch = RecordBatch::try_new(
         Arc::new(schema.clone()),
         vec![
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
-            Arc::new(Int32Array::from_slice([2, 3, 4, 5])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
+            Arc::new(Int32Array::from(vec![2, 3, 4, 5])),
         ],
     )?;
 
@@ -574,7 +573,7 @@ async fn filter_with_alias_overwrite() -> Result<()> {
 
     let batch = RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(Int32Array::from_slice([1, 10, 10, 100]))],
+        vec![Arc::new(Int32Array::from(vec![1, 10, 10, 100]))],
     )
     .unwrap();
 
@@ -611,7 +610,7 @@ async fn select_with_alias_overwrite() -> Result<()> {
 
     let batch = RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(Int32Array::from_slice([1, 10, 10, 100]))],
+        vec![Arc::new(Int32Array::from(vec![1, 10, 10, 100]))],
     )?;
 
     let ctx = SessionContext::new();
@@ -1090,13 +1089,13 @@ async fn create_test_table(name: &str) -> Result<DataFrame> {
     let batch = RecordBatch::try_new(
         schema,
         vec![
-            Arc::new(StringArray::from_slice([
+            Arc::new(StringArray::from(vec![
                 "abcDEF",
                 "abc123",
                 "CBAdef",
                 "123AbcDef",
             ])),
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
         ],
     )?;
 
@@ -1133,18 +1132,18 @@ fn create_join_context() -> Result<SessionContext> {
     let batch1 = RecordBatch::try_new(
         t1,
         vec![
-            Arc::new(UInt32Array::from_slice([1, 10, 11, 100])),
-            Arc::new(StringArray::from_slice(["a", "b", "c", "d"])),
-            Arc::new(Int32Array::from_slice([10, 20, 30, 40])),
+            Arc::new(UInt32Array::from(vec![1, 10, 11, 100])),
+            Arc::new(StringArray::from(vec!["a", "b", "c", "d"])),
+            Arc::new(Int32Array::from(vec![10, 20, 30, 40])),
         ],
     )?;
     // define data.
     let batch2 = RecordBatch::try_new(
         t2,
         vec![
-            Arc::new(UInt32Array::from_slice([3, 10, 13, 100])),
-            Arc::new(StringArray::from_slice(["a", "b", "c", "d"])),
-            Arc::new(Int32Array::from_slice([1, 2, 3, 4])),
+            Arc::new(UInt32Array::from(vec![3, 10, 13, 100])),
+            Arc::new(StringArray::from(vec!["a", "b", "c", "d"])),
+            Arc::new(Int32Array::from(vec![1, 2, 3, 4])),
         ],
     )?;
 
diff --git a/datafusion/core/tests/dataframe_functions.rs b/datafusion/core/tests/dataframe_functions.rs
index 88b6114309..fb10caf1b0 100644
--- a/datafusion/core/tests/dataframe_functions.rs
+++ b/datafusion/core/tests/dataframe_functions.rs
@@ -20,7 +20,6 @@ use arrow::{
     array::{Int32Array, StringArray},
     record_batch::RecordBatch,
 };
-use datafusion::from_slice::FromSlice;
 use std::sync::Arc;
 
 use datafusion::dataframe::DataFrame;
@@ -44,13 +43,13 @@ async fn create_test_table() -> Result<DataFrame> {
     let batch = RecordBatch::try_new(
         schema,
         vec![
-            Arc::new(StringArray::from_slice([
+            Arc::new(StringArray::from(vec![
                 "abcDEF",
                 "abc123",
                 "CBAdef",
                 "123AbcDef",
             ])),
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
         ],
     )?;
 
diff --git a/datafusion/core/tests/parquet/mod.rs b/datafusion/core/tests/parquet/mod.rs
index 031aab9f45..6f289e0c06 100644
--- a/datafusion/core/tests/parquet/mod.rs
+++ b/datafusion/core/tests/parquet/mod.rs
@@ -378,7 +378,7 @@ fn make_decimal_batch(v: Vec<i128>, precision: u8, scale: i8) -> RecordBatch {
         true,
     )]));
     let array = Arc::new(
-        Decimal128Array::from_iter_values(v)
+        Decimal128Array::from(v)
             .with_precision_and_scale(precision, scale)
             .unwrap(),
     ) as ArrayRef;
diff --git a/datafusion/core/tests/repartition.rs b/datafusion/core/tests/repartition.rs
index 4fd3a91255..20e64b2eee 100644
--- a/datafusion/core/tests/repartition.rs
+++ b/datafusion/core/tests/repartition.rs
@@ -23,7 +23,6 @@ use datafusion::physical_plan::repartition::RepartitionExec;
 use datafusion::physical_plan::{ExecutionPlan, Partitioning};
 use datafusion::prelude::{SessionConfig, SessionContext};
 use datafusion::test_util::UnboundedExec;
-use datafusion_common::from_slice::FromSlice;
 use datafusion_common::Result;
 use datafusion_physical_expr::expressions::Column;
 use datafusion_physical_expr::PhysicalExpr;
@@ -39,7 +38,7 @@ async fn unbounded_repartition() -> Result<()> {
     let schema = Arc::new(Schema::new(vec![Field::new("a2", DataType::UInt32, false)]));
     let batch = RecordBatch::try_new(
         Arc::clone(&schema),
-        vec![Arc::new(UInt32Array::from_slice([1]))],
+        vec![Arc::new(UInt32Array::from(vec![1]))],
     )?;
     let input = Arc::new(UnboundedExec::new(None, batch.clone(), 1));
     let on: Vec<Arc<dyn PhysicalExpr>> = vec![Arc::new(Column::new("a2", 0))];
diff --git a/datafusion/core/tests/sql/aggregates.rs b/datafusion/core/tests/sql/aggregates.rs
index 81a0122b80..251063e396 100644
--- a/datafusion/core/tests/sql/aggregates.rs
+++ b/datafusion/core/tests/sql/aggregates.rs
@@ -599,11 +599,11 @@ async fn simple_avg() -> Result<()> {
 
     let batch1 = RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(Int32Array::from_slice([1, 2, 3]))],
+        vec![Arc::new(Int32Array::from(vec![1, 2, 3]))],
     )?;
     let batch2 = RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(Int32Array::from_slice([4, 5]))],
+        vec![Arc::new(Int32Array::from(vec![4, 5]))],
     )?;
 
     let ctx = SessionContext::new();
@@ -630,11 +630,11 @@ async fn simple_mean() -> Result<()> {
 
     let batch1 = RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(Int32Array::from_slice([1, 2, 3]))],
+        vec![Arc::new(Int32Array::from(vec![1, 2, 3]))],
     )?;
     let batch2 = RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(Int32Array::from_slice([4, 5]))],
+        vec![Arc::new(Int32Array::from(vec![4, 5]))],
     )?;
 
     let ctx = SessionContext::new();
diff --git a/datafusion/core/tests/sql/functions.rs b/datafusion/core/tests/sql/functions.rs
index cb9827cb74..b7531cc687 100644
--- a/datafusion/core/tests/sql/functions.rs
+++ b/datafusion/core/tests/sql/functions.rs
@@ -81,43 +81,43 @@ async fn case_builtin_math_expression() {
     let type_values = vec![
         (
             DataType::Int8,
-            Arc::new(Int8Array::from_slice([1])) as ArrayRef,
+            Arc::new(Int8Array::from(vec![1])) as ArrayRef,
         ),
         (
             DataType::Int16,
-            Arc::new(Int16Array::from_slice([1])) as ArrayRef,
+            Arc::new(Int16Array::from(vec![1])) as ArrayRef,
         ),
         (
             DataType::Int32,
-            Arc::new(Int32Array::from_slice([1])) as ArrayRef,
+            Arc::new(Int32Array::from(vec![1])) as ArrayRef,
         ),
         (
             DataType::Int64,
-            Arc::new(Int64Array::from_slice([1])) as ArrayRef,
+            Arc::new(Int64Array::from(vec![1])) as ArrayRef,
         ),
         (
             DataType::UInt8,
-            Arc::new(UInt8Array::from_slice([1])) as ArrayRef,
+            Arc::new(UInt8Array::from(vec![1])) as ArrayRef,
         ),
         (
             DataType::UInt16,
-            Arc::new(UInt16Array::from_slice([1])) as ArrayRef,
+            Arc::new(UInt16Array::from(vec![1])) as ArrayRef,
         ),
         (
             DataType::UInt32,
-            Arc::new(UInt32Array::from_slice([1])) as ArrayRef,
+            Arc::new(UInt32Array::from(vec![1])) as ArrayRef,
         ),
         (
             DataType::UInt64,
-            Arc::new(UInt64Array::from_slice([1])) as ArrayRef,
+            Arc::new(UInt64Array::from(vec![1])) as ArrayRef,
         ),
         (
             DataType::Float32,
-            Arc::new(Float32Array::from_slice([1.0_f32])) as ArrayRef,
+            Arc::new(Float32Array::from(vec![1.0_f32])) as ArrayRef,
         ),
         (
             DataType::Float64,
-            Arc::new(Float64Array::from_slice([1.0_f64])) as ArrayRef,
+            Arc::new(Float64Array::from(vec![1.0_f64])) as ArrayRef,
         ),
     ];
 
diff --git a/datafusion/core/tests/sql/information_schema.rs b/datafusion/core/tests/sql/information_schema.rs
index 5927f36e18..68ac6c5d62 100644
--- a/datafusion/core/tests/sql/information_schema.rs
+++ b/datafusion/core/tests/sql/information_schema.rs
@@ -160,12 +160,12 @@ fn table_with_many_types() -> Arc<dyn TableProvider> {
     let batch = RecordBatch::try_new(
         Arc::new(schema.clone()),
         vec![
-            Arc::new(Int32Array::from_slice([1])),
-            Arc::new(Float64Array::from_slice([1.0])),
+            Arc::new(Int32Array::from(vec![1])),
+            Arc::new(Float64Array::from(vec![1.0])),
             Arc::new(StringArray::from(vec![Some("foo")])),
             Arc::new(LargeStringArray::from(vec![Some("bar")])),
-            Arc::new(BinaryArray::from_slice([b"foo" as &[u8]])),
-            Arc::new(LargeBinaryArray::from_slice([b"foo" as &[u8]])),
+            Arc::new(BinaryArray::from(vec![b"foo" as &[u8]])),
+            Arc::new(LargeBinaryArray::from(vec![b"foo" as &[u8]])),
             Arc::new(TimestampNanosecondArray::from(vec![Some(123)])),
         ],
     )
diff --git a/datafusion/core/tests/sql/joins.rs b/datafusion/core/tests/sql/joins.rs
index 32e3de7483..118aeb043e 100644
--- a/datafusion/core/tests/sql/joins.rs
+++ b/datafusion/core/tests/sql/joins.rs
@@ -16,7 +16,6 @@
 // under the License.
 
 use super::*;
-use datafusion::from_slice::FromSlice;
 
 #[tokio::test]
 async fn test_join_timestamp() -> Result<()> {
@@ -72,7 +71,7 @@ async fn test_join_float32() -> Result<()> {
         population_schema.clone(),
         vec![
             Arc::new(StringArray::from(vec![Some("a"), Some("b"), Some("c")])),
-            Arc::new(Float32Array::from_slice([838.698, 1778.934, 626.443])),
+            Arc::new(Float32Array::from(vec![838.698, 1778.934, 626.443])),
         ],
     )?;
     ctx.register_batch("population", population_data)?;
@@ -111,7 +110,7 @@ async fn test_join_float64() -> Result<()> {
         population_schema.clone(),
         vec![
             Arc::new(StringArray::from(vec![Some("a"), Some("b"), Some("c")])),
-            Arc::new(Float64Array::from_slice([838.698, 1778.934, 626.443])),
+            Arc::new(Float64Array::from(vec![838.698, 1778.934, 626.443])),
         ],
     )?;
     ctx.register_batch("population", population_data)?;
@@ -213,10 +212,10 @@ async fn nestedjoin_without_alias() -> Result<()> {
 async fn join_tables_with_duplicated_column_name_not_in_on_constraint() -> Result<()> {
     let ctx = SessionContext::new();
     let batch = RecordBatch::try_from_iter(vec![
-        ("id", Arc::new(Int32Array::from_slice([1, 2, 3])) as _),
+        ("id", Arc::new(Int32Array::from(vec![1, 2, 3])) as _),
         (
             "country",
-            Arc::new(StringArray::from_slice(["Germany", "Sweden", "Japan"])) as _,
+            Arc::new(StringArray::from(vec!["Germany", "Sweden", "Japan"])) as _,
         ),
     ])
     .unwrap();
@@ -225,11 +224,11 @@ async fn join_tables_with_duplicated_column_name_not_in_on_constraint() -> Resul
     let batch = RecordBatch::try_from_iter(vec![
         (
             "id",
-            Arc::new(Int32Array::from_slice([1, 2, 3, 4, 5, 6, 7])) as _,
+            Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5, 6, 7])) as _,
         ),
         (
             "city",
-            Arc::new(StringArray::from_slice([
+            Arc::new(StringArray::from(vec![
                 "Hamburg",
                 "Stockholm",
                 "Osaka",
@@ -241,7 +240,7 @@ async fn join_tables_with_duplicated_column_name_not_in_on_constraint() -> Resul
         ),
         (
             "country_id",
-            Arc::new(Int32Array::from_slice([1, 2, 3, 1, 2, 3, 3])) as _,
+            Arc::new(Int32Array::from(vec![1, 2, 3, 1, 2, 3, 3])) as _,
         ),
     ])
     .unwrap();
@@ -329,8 +328,8 @@ async fn left_join_should_not_panic_with_empty_side() -> Result<()> {
     let t1_data = RecordBatch::try_new(
         Arc::new(t1_schema),
         vec![
-            Arc::new(Int64Array::from_slice([5247, 3821, 6321, 8821, 7748])),
-            Arc::new(StringArray::from_slice(["a", "b", "c", "d", "e"])),
+            Arc::new(Int64Array::from(vec![5247, 3821, 6321, 8821, 7748])),
+            Arc::new(StringArray::from(vec!["a", "b", "c", "d", "e"])),
         ],
     )?;
     ctx.register_batch("t1", t1_data)?;
@@ -342,7 +341,7 @@ async fn left_join_should_not_panic_with_empty_side() -> Result<()> {
     let t2_data = RecordBatch::try_new(
         Arc::new(t2_schema),
         vec![
-            Arc::new(Int64Array::from_slice([358, 2820, 3804, 7748])),
+            Arc::new(Int64Array::from(vec![358, 2820, 3804, 7748])),
             Arc::new(BooleanArray::from(vec![
                 Some(true),
                 Some(false),
diff --git a/datafusion/core/tests/sql/mod.rs b/datafusion/core/tests/sql/mod.rs
index af79a10104..10660f7873 100644
--- a/datafusion/core/tests/sql/mod.rs
+++ b/datafusion/core/tests/sql/mod.rs
@@ -27,7 +27,6 @@ use chrono::Duration;
 
 use datafusion::config::ConfigOptions;
 use datafusion::datasource::TableProvider;
-use datafusion::from_slice::FromSlice;
 use datafusion::logical_expr::{Aggregate, LogicalPlan, TableScan};
 use datafusion::physical_plan::metrics::MetricValue;
 use datafusion::physical_plan::ExecutionPlan;
@@ -169,14 +168,14 @@ fn create_join_context(
     let t1_data = RecordBatch::try_new(
         t1_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([11, 22, 33, 44])),
+            Arc::new(UInt32Array::from(vec![11, 22, 33, 44])),
             Arc::new(StringArray::from(vec![
                 Some("a"),
                 Some("b"),
                 Some("c"),
                 Some("d"),
             ])),
-            Arc::new(UInt32Array::from_slice([1, 2, 3, 4])),
+            Arc::new(UInt32Array::from(vec![1, 2, 3, 4])),
         ],
     )?;
     ctx.register_batch("t1", t1_data)?;
@@ -189,14 +188,14 @@ fn create_join_context(
     let t2_data = RecordBatch::try_new(
         t2_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([11, 22, 44, 55])),
+            Arc::new(UInt32Array::from(vec![11, 22, 44, 55])),
             Arc::new(StringArray::from(vec![
                 Some("z"),
                 Some("y"),
                 Some("x"),
                 Some("w"),
             ])),
-            Arc::new(UInt32Array::from_slice([3, 1, 3, 3])),
+            Arc::new(UInt32Array::from(vec![3, 1, 3, 3])),
         ],
     )?;
     ctx.register_batch("t2", t2_data)?;
@@ -225,14 +224,14 @@ fn create_sub_query_join_context(
     let t0_data = RecordBatch::try_new(
         t0_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([11, 22, 33, 44])),
+            Arc::new(UInt32Array::from(vec![11, 22, 33, 44])),
             Arc::new(StringArray::from(vec![
                 Some("a"),
                 Some("b"),
                 Some("c"),
                 Some("d"),
             ])),
-            Arc::new(UInt32Array::from_slice([1, 2, 3, 4])),
+            Arc::new(UInt32Array::from(vec![1, 2, 3, 4])),
         ],
     )?;
     ctx.register_batch("t0", t0_data)?;
@@ -245,14 +244,14 @@ fn create_sub_query_join_context(
     let t1_data = RecordBatch::try_new(
         t1_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([11, 22, 33, 44])),
+            Arc::new(UInt32Array::from(vec![11, 22, 33, 44])),
             Arc::new(StringArray::from(vec![
                 Some("a"),
                 Some("b"),
                 Some("c"),
                 Some("d"),
             ])),
-            Arc::new(UInt32Array::from_slice([1, 2, 3, 4])),
+            Arc::new(UInt32Array::from(vec![1, 2, 3, 4])),
         ],
     )?;
     ctx.register_batch("t1", t1_data)?;
@@ -265,14 +264,14 @@ fn create_sub_query_join_context(
     let t2_data = RecordBatch::try_new(
         t2_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([11, 22, 44, 55])),
+            Arc::new(UInt32Array::from(vec![11, 22, 44, 55])),
             Arc::new(StringArray::from(vec![
                 Some("z"),
                 Some("y"),
                 Some("x"),
                 Some("w"),
             ])),
-            Arc::new(UInt32Array::from_slice([3, 1, 3, 3])),
+            Arc::new(UInt32Array::from(vec![3, 1, 3, 3])),
         ],
     )?;
     ctx.register_batch("t2", t2_data)?;
@@ -316,7 +315,7 @@ fn create_left_semi_anti_join_context_with_null_ids(
                 Some("d"),
                 Some("e"),
             ])),
-            Arc::new(UInt32Array::from_slice([1, 1, 2, 3, 4, 0])),
+            Arc::new(UInt32Array::from(vec![1, 1, 2, 3, 4, 0])),
         ],
     )?;
     ctx.register_batch("t1", t1_data)?;
@@ -345,7 +344,7 @@ fn create_left_semi_anti_join_context_with_null_ids(
                 Some("w"),
                 Some("v"),
             ])),
-            Arc::new(UInt32Array::from_slice([3, 3, 1, 3, 3, 0])),
+            Arc::new(UInt32Array::from(vec![3, 3, 1, 3, 3, 0])),
         ],
     )?;
     ctx.register_batch("t2", t2_data)?;
@@ -387,7 +386,7 @@ fn create_right_semi_anti_join_context_with_null_ids(
                 Some("d"),
                 Some("e"),
             ])),
-            Arc::new(UInt32Array::from_slice([1, 2, 3, 4, 0])),
+            Arc::new(UInt32Array::from(vec![1, 2, 3, 4, 0])),
         ],
     )?;
     ctx.register_batch("t1", t1_data)?;
@@ -423,9 +422,9 @@ fn create_join_context_qualified(
     let t1_data = RecordBatch::try_new(
         t1_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([1, 2, 3, 4])),
-            Arc::new(UInt32Array::from_slice([10, 20, 30, 40])),
-            Arc::new(UInt32Array::from_slice([50, 60, 70, 80])),
+            Arc::new(UInt32Array::from(vec![1, 2, 3, 4])),
+            Arc::new(UInt32Array::from(vec![10, 20, 30, 40])),
+            Arc::new(UInt32Array::from(vec![50, 60, 70, 80])),
         ],
     )?;
     ctx.register_batch(left_name, t1_data)?;
@@ -438,9 +437,9 @@ fn create_join_context_qualified(
     let t2_data = RecordBatch::try_new(
         t2_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([1, 2, 9, 4])),
-            Arc::new(UInt32Array::from_slice([100, 200, 300, 400])),
-            Arc::new(UInt32Array::from_slice([500, 600, 700, 800])),
+            Arc::new(UInt32Array::from(vec![1, 2, 9, 4])),
+            Arc::new(UInt32Array::from(vec![100, 200, 300, 400])),
+            Arc::new(UInt32Array::from(vec![500, 600, 700, 800])),
         ],
     )?;
     ctx.register_batch(right_name, t2_data)?;
@@ -535,14 +534,14 @@ fn create_sort_merge_join_context(
     let t1_data = RecordBatch::try_new(
         t1_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([11, 22, 33, 44])),
+            Arc::new(UInt32Array::from(vec![11, 22, 33, 44])),
             Arc::new(StringArray::from(vec![
                 Some("a"),
                 Some("b"),
                 Some("c"),
                 Some("d"),
             ])),
-            Arc::new(UInt32Array::from_slice([1, 2, 3, 4])),
+            Arc::new(UInt32Array::from(vec![1, 2, 3, 4])),
         ],
     )?;
     ctx.register_batch("t1", t1_data)?;
@@ -555,14 +554,14 @@ fn create_sort_merge_join_context(
     let t2_data = RecordBatch::try_new(
         t2_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([11, 22, 44, 55])),
+            Arc::new(UInt32Array::from(vec![11, 22, 44, 55])),
             Arc::new(StringArray::from(vec![
                 Some("z"),
                 Some("y"),
                 Some("x"),
                 Some("w"),
             ])),
-            Arc::new(UInt32Array::from_slice([3, 1, 3, 3])),
+            Arc::new(UInt32Array::from(vec![3, 1, 3, 3])),
         ],
     )?;
     ctx.register_batch("t2", t2_data)?;
@@ -660,14 +659,14 @@ fn create_nested_loop_join_context() -> Result<SessionContext> {
     let t1_data = RecordBatch::try_new(
         t1_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([11, 22, 33, 44])),
+            Arc::new(UInt32Array::from(vec![11, 22, 33, 44])),
             Arc::new(StringArray::from(vec![
                 Some("a"),
                 Some("b"),
                 Some("c"),
                 Some("d"),
             ])),
-            Arc::new(UInt32Array::from_slice([1, 2, 3, 4])),
+            Arc::new(UInt32Array::from(vec![1, 2, 3, 4])),
         ],
     )?;
     ctx.register_batch("t1", t1_data)?;
@@ -680,14 +679,14 @@ fn create_nested_loop_join_context() -> Result<SessionContext> {
     let t2_data = RecordBatch::try_new(
         t2_schema,
         vec![
-            Arc::new(UInt32Array::from_slice([11, 22, 44, 55])),
+            Arc::new(UInt32Array::from(vec![11, 22, 44, 55])),
             Arc::new(StringArray::from(vec![
                 Some("z"),
                 Some("y"),
                 Some("x"),
                 Some("w"),
             ])),
-            Arc::new(UInt32Array::from_slice([3, 1, 3, 3])),
+            Arc::new(UInt32Array::from(vec![3, 1, 3, 3])),
         ],
     )?;
     ctx.register_batch("t2", t2_data)?;
diff --git a/datafusion/core/tests/sql/order.rs b/datafusion/core/tests/sql/order.rs
index 07254c8044..100e5b8c44 100644
--- a/datafusion/core/tests/sql/order.rs
+++ b/datafusion/core/tests/sql/order.rs
@@ -102,7 +102,7 @@ async fn sort_with_duplicate_sort_exprs() -> Result<()> {
         t1_schema.clone(),
         vec![
             Arc::new(Int32Array::from(vec![2, 4, 9, 3, 4])),
-            Arc::new(StringArray::from_slice(["a", "b", "c", "d", "e"])),
+            Arc::new(StringArray::from(vec!["a", "b", "c", "d", "e"])),
         ],
     )?;
     ctx.register_batch("t1", t1_data)?;
diff --git a/datafusion/core/tests/sql/parquet.rs b/datafusion/core/tests/sql/parquet.rs
index 0d780c6694..907a2c9506 100644
--- a/datafusion/core/tests/sql/parquet.rs
+++ b/datafusion/core/tests/sql/parquet.rs
@@ -311,9 +311,9 @@ async fn parquet_query_with_max_min() {
                 .unwrap();
 
         // create mock record batch
-        let c1s = Arc::new(Int32Array::from_slice([1, 2, 3]));
-        let c2s = Arc::new(StringArray::from_slice(["aaa", "bbb", "ccc"]));
-        let c3s = Arc::new(Int64Array::from_slice([100, 200, 300]));
+        let c1s = Arc::new(Int32Array::from(vec![1, 2, 3]));
+        let c2s = Arc::new(StringArray::from(vec!["aaa", "bbb", "ccc"]));
+        let c3s = Arc::new(Int64Array::from(vec![100, 200, 300]));
         let c4s = Arc::new(Date32Array::from(vec![Some(1), Some(2), Some(3)]));
         let rec_batch =
             RecordBatch::try_new(schema.clone(), vec![c1s, c2s, c3s, c4s]).unwrap();
diff --git a/datafusion/core/tests/sql/parquet_schema.rs b/datafusion/core/tests/sql/parquet_schema.rs
index 7de83046af..1d96f2b1ff 100644
--- a/datafusion/core/tests/sql/parquet_schema.rs
+++ b/datafusion/core/tests/sql/parquet_schema.rs
@@ -176,8 +176,8 @@ fn write_files(table_path: &Path, schemas: Vec<Schema>) {
         let mut writer = ArrowWriter::try_new(file, schema.clone(), None).unwrap();
 
         // create mock record batch
-        let ids = Arc::new(Int32Array::from_slice([i as i32]));
-        let names = Arc::new(StringArray::from_slice(["test"]));
+        let ids = Arc::new(Int32Array::from(vec![i as i32]));
+        let names = Arc::new(StringArray::from(vec!["test"]));
         let rec_batch = RecordBatch::try_new(schema.clone(), vec![ids, names]).unwrap();
 
         writer.write(&rec_batch).unwrap();
diff --git a/datafusion/core/tests/sql/projection.rs b/datafusion/core/tests/sql/projection.rs
index ac697b1176..a90cf1a2c2 100644
--- a/datafusion/core/tests/sql/projection.rs
+++ b/datafusion/core/tests/sql/projection.rs
@@ -270,9 +270,9 @@ async fn projection_on_memory_scan() -> Result<()> {
     let partitions = vec![vec![RecordBatch::try_new(
         schema.clone(),
         vec![
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
-            Arc::new(Int32Array::from_slice([2, 12, 12, 120])),
-            Arc::new(Int32Array::from_slice([3, 12, 12, 120])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
+            Arc::new(Int32Array::from(vec![2, 12, 12, 120])),
+            Arc::new(Int32Array::from(vec![3, 12, 12, 120])),
         ],
     )?]];
 
diff --git a/datafusion/core/tests/sql/timestamp.rs b/datafusion/core/tests/sql/timestamp.rs
index 68a3a7008e..2058d8ed1f 100644
--- a/datafusion/core/tests/sql/timestamp.rs
+++ b/datafusion/core/tests/sql/timestamp.rs
@@ -16,7 +16,6 @@
 // under the License.
 
 use super::*;
-use datafusion::from_slice::FromSlice;
 use std::ops::Add;
 
 #[tokio::test]
@@ -509,7 +508,7 @@ async fn group_by_timestamp_millis() -> Result<()> {
         schema.clone(),
         vec![
             Arc::new(TimestampMillisecondArray::from(timestamps)),
-            Arc::new(Int32Array::from_slice([10, 20, 30, 40, 50, 60])),
+            Arc::new(Int32Array::from(vec![10, 20, 30, 40, 50, 60])),
         ],
     )?;
     ctx.register_batch("t1", data).unwrap();
diff --git a/datafusion/core/tests/sql/udf.rs b/datafusion/core/tests/sql/udf.rs
index 3f4402ec41..a31028fd71 100644
--- a/datafusion/core/tests/sql/udf.rs
+++ b/datafusion/core/tests/sql/udf.rs
@@ -48,8 +48,8 @@ async fn scalar_udf() -> Result<()> {
     let batch = RecordBatch::try_new(
         Arc::new(schema.clone()),
         vec![
-            Arc::new(Int32Array::from_slice([1, 10, 10, 100])),
-            Arc::new(Int32Array::from_slice([2, 12, 12, 120])),
+            Arc::new(Int32Array::from(vec![1, 10, 10, 100])),
+            Arc::new(Int32Array::from(vec![2, 12, 12, 120])),
         ],
     )?;
 
@@ -127,7 +127,7 @@ async fn scalar_udf_zero_params() -> Result<()> {
 
     let batch = RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(Int32Array::from_slice([1, 10, 10, 100]))],
+        vec![Arc::new(Int32Array::from(vec![1, 10, 10, 100]))],
     )?;
     let ctx = SessionContext::new();
 
@@ -186,11 +186,11 @@ async fn simple_udaf() -> Result<()> {
 
     let batch1 = RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(Int32Array::from_slice([1, 2, 3]))],
+        vec![Arc::new(Int32Array::from(vec![1, 2, 3]))],
     )?;
     let batch2 = RecordBatch::try_new(
         Arc::new(schema.clone()),
-        vec![Arc::new(Int32Array::from_slice([4, 5]))],
+        vec![Arc::new(Int32Array::from(vec![4, 5]))],
     )?;
 
     let ctx = SessionContext::new();
diff --git a/datafusion/physical-expr/src/functions.rs b/datafusion/physical-expr/src/functions.rs
index e8b262c761..648dd4a144 100644
--- a/datafusion/physical-expr/src/functions.rs
+++ b/datafusion/physical-expr/src/functions.rs
@@ -811,7 +811,6 @@ mod tests {
     use super::*;
     use crate::expressions::try_cast;
     use crate::expressions::{col, lit};
-    use crate::from_slice::FromSlice;
     use arrow::{
         array::{
             Array, ArrayRef, BinaryArray, BooleanArray, Float32Array, Float64Array,
@@ -839,7 +838,7 @@ mod tests {
 
             // any type works here: we evaluate against a literal of `value`
             let schema = Schema::new(vec![Field::new("a", DataType::Int32, false)]);
-            let columns: Vec<ArrayRef> = vec![Arc::new(Int32Array::from_slice(&[1]))];
+            let columns: Vec<ArrayRef> = vec![Arc::new(Int32Array::from(vec![1]))];
 
             let expr =
                 create_physical_expr_with_type_coercion(&BuiltinScalarFunction::$FUNC, $ARGS, &schema, &execution_props)?;
@@ -2816,7 +2815,7 @@ mod tests {
         let schema = Schema::new(vec![Field::new("a", DataType::Utf8, false)]);
         let execution_props = ExecutionProps::new();
 
-        let col_value: ArrayRef = Arc::new(StringArray::from_slice(["aaa-555"]));
+        let col_value: ArrayRef = Arc::new(StringArray::from(vec!["aaa-555"]));
         let pattern = lit(r".*-(\d*)");
         let columns: Vec<ArrayRef> = vec![col_value];
         let expr = create_physical_expr_with_type_coercion(
@@ -2857,7 +2856,7 @@ mod tests {
 
         let col_value = lit("aaa-555");
         let pattern = lit(r".*-(\d*)");
-        let columns: Vec<ArrayRef> = vec![Arc::new(Int32Array::from_slice([1]))];
+        let columns: Vec<ArrayRef> = vec![Arc::new(Int32Array::from(vec![1]))];
         let expr = create_physical_expr_with_type_coercion(
             &BuiltinScalarFunction::RegexpMatch,
             &[col_value, pattern],
diff --git a/datafusion/physical-expr/src/hash_utils.rs b/datafusion/physical-expr/src/hash_utils.rs
index ab2377da94..b751df928d 100644
--- a/datafusion/physical-expr/src/hash_utils.rs
+++ b/datafusion/physical-expr/src/hash_utils.rs
@@ -284,7 +284,6 @@ pub fn create_row_hashes_v2<'a>(
 
 #[cfg(test)]
 mod tests {
-    use crate::from_slice::FromSlice;
     use arrow::{array::*, datatypes::*};
     use std::sync::Arc;
 
@@ -308,8 +307,8 @@ mod tests {
 
     #[test]
     fn create_hashes_for_float_arrays() -> Result<()> {
-        let f32_arr = Arc::new(Float32Array::from_slice([0.12, 0.5, 1f32, 444.7]));
-        let f64_arr = Arc::new(Float64Array::from_slice([0.12, 0.5, 1f64, 444.7]));
+        let f32_arr = Arc::new(Float32Array::from(vec![0.12, 0.5, 1f32, 444.7]));
+        let f64_arr = Arc::new(Float64Array::from(vec![0.12, 0.5, 1f64, 444.7]));
 
         let random_state = RandomState::with_seeds(0, 0, 0, 0);
         let hashes_buff = &mut vec![0; f32_arr.len()];
diff --git a/datafusion/physical-expr/src/lib.rs b/datafusion/physical-expr/src/lib.rs
index 21a88b5d89..0a2e0e58df 100644
--- a/datafusion/physical-expr/src/lib.rs
+++ b/datafusion/physical-expr/src/lib.rs
@@ -46,7 +46,6 @@ pub mod window;
 
 // reexport this to maintain compatibility with anything that used from_slice previously
 pub use aggregate::AggregateExpr;
-pub use datafusion_common::from_slice;
 pub use equivalence::{
     project_equivalence_properties, project_ordering_equivalence_properties,
     EquivalenceProperties, EquivalentClass, OrderingEquivalenceProperties,
diff --git a/datafusion/physical-expr/src/window/nth_value.rs b/datafusion/physical-expr/src/window/nth_value.rs
index 4da91e75ef..4bfe514c38 100644
--- a/datafusion/physical-expr/src/window/nth_value.rs
+++ b/datafusion/physical-expr/src/window/nth_value.rs
@@ -252,7 +252,7 @@ mod tests {
             Arc::new(Column::new("arr", 0)),
             DataType::Int32,
         );
-        test_i32_result(first_value, Int32Array::from_iter_values(vec![1; 8]))?;
+        test_i32_result(first_value, Int32Array::from(vec![1; 8]))?;
         Ok(())
     }
 
@@ -287,7 +287,7 @@ mod tests {
             DataType::Int32,
             1,
         )?;
-        test_i32_result(nth_value, Int32Array::from_iter_values(vec![1; 8]))?;
+        test_i32_result(nth_value, Int32Array::from(vec![1; 8]))?;
         Ok(())
     }
 
diff --git a/datafusion/physical-expr/src/window/ntile.rs b/datafusion/physical-expr/src/window/ntile.rs
index b8365dba19..479fa26333 100644
--- a/datafusion/physical-expr/src/window/ntile.rs
+++ b/datafusion/physical-expr/src/window/ntile.rs
@@ -77,6 +77,6 @@ impl PartitionEvaluator for NtileEvaluator {
             let res = i * self.n / num_rows;
             vec.push(res + 1)
         }
-        Ok(Arc::new(UInt64Array::from_iter_values(vec)))
+        Ok(Arc::new(UInt64Array::from(vec)))
     }
 }
diff --git a/datafusion/physical-expr/src/window/window_frame_state.rs b/datafusion/physical-expr/src/window/window_frame_state.rs
index 01a4f9ad71..e23a58a09b 100644
--- a/datafusion/physical-expr/src/window/window_frame_state.rs
+++ b/datafusion/physical-expr/src/window/window_frame_state.rs
@@ -550,14 +550,13 @@ mod tests {
     use crate::window::window_frame_state::WindowFrameStateGroups;
     use arrow::array::{ArrayRef, Float64Array};
     use arrow_schema::SortOptions;
-    use datafusion_common::from_slice::FromSlice;
     use datafusion_common::{Result, ScalarValue};
     use datafusion_expr::{WindowFrame, WindowFrameBound, WindowFrameUnits};
     use std::ops::Range;
     use std::sync::Arc;
 
     fn get_test_data() -> (Vec<ArrayRef>, Vec<SortOptions>) {
-        let range_columns: Vec<ArrayRef> = vec![Arc::new(Float64Array::from_slice([
+        let range_columns: Vec<ArrayRef> = vec![Arc::new(Float64Array::from(vec![
             5.0, 7.0, 8.0, 8.0, 9., 10., 10., 10., 11.,
         ]))];
         let sort_options = vec![SortOptions {