You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by gi...@apache.org on 2026/07/16 17:37:13 UTC

(datafusion) 01/01: chore: deprecate record_batch macro in favor of upstream one (#23295)

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

github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/main/pr-23295-95de3853415da6ab09fabfa927289755e97d175d
in repository https://gitbox.apache.org/repos/asf/datafusion.git

commit c75d12a00c4373deb92fec19964c9cea3587ddb2
Author: Burak Şen <bu...@gmail.com>
AuthorDate: Thu Jul 16 20:36:48 2026 +0300

    chore: deprecate record_batch macro in favor of upstream one (#23295)
    
    ## Which issue does this PR close?
    
    - Closes #13037.
    
    ## Rationale for this change
    This was a long standing thing in the backlog. record_batch! was added
    in arrow; however, it did not support vectors. Then I've created a PR in
    arrow a while ago https://github.com/apache/arrow-rs/pull/9522. Once
    that was released this macro can be deprecated
    
    ## What changes are included in this PR?
    Mark record_batch! macro deprecated and use arrow one in relevant
    places.
    
    ## Are these changes tested?
    Yes
    
    ## Are there any user-facing changes?
    Users will see a deprecation notice if they are using this macro
---
 .../execution_monitoring/memory_pool_execution_plan.rs        |  2 +-
 .../examples/ffi/ffi_example_table_provider/src/lib.rs        |  5 +++--
 datafusion/common/src/test_util.rs                            | 11 ++++++++++-
 datafusion/core/tests/macro_hygiene/mod.rs                    |  4 ++++
 datafusion/datasource-parquet/src/opener/mod.rs               |  4 ++--
 datafusion/datasource/src/projection.rs                       |  5 +++--
 datafusion/ffi/src/record_batch_stream.rs                     |  2 +-
 datafusion/ffi/src/tests/catalog.rs                           |  2 +-
 datafusion/ffi/src/tests/mod.rs                               |  3 +--
 datafusion/ffi/tests/ffi_udaf.rs                              |  3 +--
 datafusion/ffi/tests/ffi_udf.rs                               |  3 +--
 datafusion/physical-expr-adapter/src/schema_rewriter.rs       |  5 +++--
 12 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/datafusion-examples/examples/execution_monitoring/memory_pool_execution_plan.rs b/datafusion-examples/examples/execution_monitoring/memory_pool_execution_plan.rs
index eab813b7ee..ca765774d1 100644
--- a/datafusion-examples/examples/execution_monitoring/memory_pool_execution_plan.rs
+++ b/datafusion-examples/examples/execution_monitoring/memory_pool_execution_plan.rs
@@ -26,9 +26,9 @@
 //! - Handle memory pressure by spilling to disk
 //! - Release memory when done
 
+use arrow::array::record_batch;
 use arrow::record_batch::RecordBatch;
 use arrow_schema::SchemaRef;
-use datafusion::common::record_batch;
 use datafusion::common::{exec_datafusion_err, internal_err};
 use datafusion::datasource::{DefaultTableSource, memory::MemTable};
 use datafusion::error::Result;
diff --git a/datafusion-examples/examples/ffi/ffi_example_table_provider/src/lib.rs b/datafusion-examples/examples/ffi/ffi_example_table_provider/src/lib.rs
index 7894e97f37..29b04d0042 100644
--- a/datafusion-examples/examples/ffi/ffi_example_table_provider/src/lib.rs
+++ b/datafusion-examples/examples/ffi/ffi_example_table_provider/src/lib.rs
@@ -17,9 +17,10 @@
 
 use std::sync::Arc;
 
-use arrow::array::RecordBatch;
+use arrow::array::{RecordBatch, record_batch};
+use arrow::datatypes as arrow_schema;
 use arrow::datatypes::{DataType, Field, Schema};
-use datafusion::{common::record_batch, datasource::MemTable};
+use datafusion::datasource::MemTable;
 use datafusion_ffi::proto::logical_extension_codec::FFI_LogicalExtensionCodec;
 use datafusion_ffi::table_provider::FFI_TableProvider;
 use ffi_module_interface::TableProviderModule;
diff --git a/datafusion/common/src/test_util.rs b/datafusion/common/src/test_util.rs
index f060704944..8ad1e086bc 100644
--- a/datafusion/common/src/test_util.rs
+++ b/datafusion/common/src/test_util.rs
@@ -364,15 +364,20 @@ macro_rules! create_array {
 /// Creates a record batch from literal slice of values, suitable for rapid
 /// testing and development.
 ///
+/// **Deprecated**: prefer the upstream macro from `arrow`,
+/// [`arrow::array::record_batch`], which now supports both the literal slice
+/// form shown below and a variable/expression form.
+///
 /// Example:
 /// ```
-/// use datafusion_common::record_batch;
+/// use arrow::array::record_batch;
 /// let batch = record_batch!(
 ///     ("a", Int32, vec![1, 2, 3]),
 ///     ("b", Float64, vec![Some(4.0), None, Some(5.0)]),
 ///     ("c", Utf8, vec!["alpha", "beta", "gamma"])
 /// );
 /// ```
+#[deprecated(since = "55.0.0", note = "Use `arrow::array::record_batch` instead")]
 #[macro_export]
 macro_rules! record_batch {
     ($(($name: expr, $type: ident, $values: expr)),*) => {
@@ -776,6 +781,10 @@ mod tests {
     }
 
     #[test]
+    #[expect(
+        deprecated,
+        reason = "testing the deprecated record_batch! macro itself"
+    )]
     fn test_create_record_batch() -> Result<()> {
         use arrow::array::Array;
 
diff --git a/datafusion/core/tests/macro_hygiene/mod.rs b/datafusion/core/tests/macro_hygiene/mod.rs
index 9fd60cd1f0..144062278c 100644
--- a/datafusion/core/tests/macro_hygiene/mod.rs
+++ b/datafusion/core/tests/macro_hygiene/mod.rs
@@ -41,6 +41,10 @@ mod plan_datafusion_err {
 }
 
 mod record_batch {
+    #![expect(
+        deprecated,
+        reason = "exercising hygiene of the deprecated `datafusion_common::record_batch!` while it is still exported"
+    )]
     // NO other imports!
     use datafusion_common::record_batch;
 
diff --git a/datafusion/datasource-parquet/src/opener/mod.rs b/datafusion/datasource-parquet/src/opener/mod.rs
index 87ec341f59..af97a192fa 100644
--- a/datafusion/datasource-parquet/src/opener/mod.rs
+++ b/datafusion/datasource-parquet/src/opener/mod.rs
@@ -1696,12 +1696,12 @@ mod test {
         CachedParquetFileReaderFactory, DefaultParquetFileReaderFactory,
         ParquetFileReaderFactory, ParquetRowSelection, RowGroupAccess,
     };
-    use arrow::array::RecordBatch;
+    use arrow::array::{RecordBatch, record_batch};
     use arrow::datatypes::{DataType, Field, Schema, SchemaRef};
     use bytes::{BufMut, BytesMut};
     use datafusion_common::{
         ColumnStatistics, ScalarValue, Statistics, assert_contains, internal_err,
-        record_batch, stats::Precision,
+        stats::Precision,
     };
     use datafusion_datasource::morsel::{Morsel, Morselizer};
     use datafusion_datasource::{PartitionedFile, TableSchema, TableSchemaBuilder};
diff --git a/datafusion/datasource/src/projection.rs b/datafusion/datasource/src/projection.rs
index 16207c086f..de822ae602 100644
--- a/datafusion/datasource/src/projection.rs
+++ b/datafusion/datasource/src/projection.rs
@@ -294,9 +294,10 @@ impl SplitProjection {
 mod test {
     use std::sync::Arc;
 
-    use arrow::array::{AsArray, RecordBatch};
+    use arrow::array::{AsArray, RecordBatch, record_batch};
+    use arrow::datatypes as arrow_schema;
     use arrow::datatypes::{DataType, Field, SchemaRef};
-    use datafusion_common::{DFSchema, ScalarValue, config::ConfigOptions, record_batch};
+    use datafusion_common::{DFSchema, ScalarValue, config::ConfigOptions};
     use datafusion_expr::{Expr, ScalarUDF, col, execution_props::ExecutionProps};
     use datafusion_functions::core::input_file_name::InputFileNameFunc;
     use datafusion_physical_expr::{
diff --git a/datafusion/ffi/src/record_batch_stream.rs b/datafusion/ffi/src/record_batch_stream.rs
index 74709848cb..5a92cbfe5f 100644
--- a/datafusion/ffi/src/record_batch_stream.rs
+++ b/datafusion/ffi/src/record_batch_stream.rs
@@ -218,8 +218,8 @@ impl Drop for FFI_RecordBatchStream {
 mod tests {
     use std::sync::Arc;
 
+    use arrow::array::record_batch;
     use arrow::datatypes::{DataType, Field, Schema};
-    use datafusion::common::record_batch;
     use datafusion::error::Result;
     use datafusion::execution::SendableRecordBatchStream;
     use datafusion::test_util::bounded_stream;
diff --git a/datafusion/ffi/src/tests/catalog.rs b/datafusion/ffi/src/tests/catalog.rs
index 0c02de5d04..b0b0858a8a 100644
--- a/datafusion/ffi/src/tests/catalog.rs
+++ b/datafusion/ffi/src/tests/catalog.rs
@@ -48,8 +48,8 @@ pub struct FixedSchemaProvider {
 }
 
 pub fn fruit_table() -> Arc<dyn TableProvider + 'static> {
+    use arrow::array::record_batch;
     use arrow::datatypes::{DataType, Field};
-    use datafusion_common::record_batch;
 
     let schema = Arc::new(Schema::new(vec![
         Field::new("units", DataType::Int32, true),
diff --git a/datafusion/ffi/src/tests/mod.rs b/datafusion/ffi/src/tests/mod.rs
index dcd0910ecb..d372dcf917 100644
--- a/datafusion/ffi/src/tests/mod.rs
+++ b/datafusion/ffi/src/tests/mod.rs
@@ -17,14 +17,13 @@
 
 use std::sync::Arc;
 
-use arrow::array::RecordBatch;
+use arrow::array::{RecordBatch, record_batch};
 use arrow_schema::{DataType, Field, Schema};
 use async_provider::create_async_table_provider;
 use async_trait::async_trait;
 use catalog::create_catalog_provider;
 use datafusion_catalog::MemTable;
 use datafusion_catalog::{Session, TableProvider};
-use datafusion_common::record_batch;
 use datafusion_common::stats::Precision;
 use datafusion_common::{ColumnStatistics, Statistics};
 use datafusion_common::{Result, ScalarValue};
diff --git a/datafusion/ffi/tests/ffi_udaf.rs b/datafusion/ffi/tests/ffi_udaf.rs
index 7df3404d74..3234f6533d 100644
--- a/datafusion/ffi/tests/ffi_udaf.rs
+++ b/datafusion/ffi/tests/ffi_udaf.rs
@@ -21,8 +21,7 @@
 mod tests {
     use std::sync::Arc;
 
-    use arrow::array::Float64Array;
-    use datafusion::common::record_batch;
+    use arrow::array::{Float64Array, record_batch};
     use datafusion::error::Result;
     use datafusion::logical_expr::{AggregateUDF, AggregateUDFImpl};
     use datafusion::prelude::{SessionContext, col};
diff --git a/datafusion/ffi/tests/ffi_udf.rs b/datafusion/ffi/tests/ffi_udf.rs
index dffaf83c47..617cbc196b 100644
--- a/datafusion/ffi/tests/ffi_udf.rs
+++ b/datafusion/ffi/tests/ffi_udf.rs
@@ -19,9 +19,8 @@
 /// when the feature integration-tests is built
 #[cfg(feature = "integration-tests")]
 mod tests {
-    use arrow::array::{Array, AsArray};
+    use arrow::array::{Array, AsArray, record_batch};
     use arrow::datatypes::DataType;
-    use datafusion::common::record_batch;
     use datafusion::error::Result;
     use datafusion::logical_expr::{ExpressionPlacement, ScalarUDF, ScalarUDFImpl};
     use datafusion::prelude::{SessionContext, col};
diff --git a/datafusion/physical-expr-adapter/src/schema_rewriter.rs b/datafusion/physical-expr-adapter/src/schema_rewriter.rs
index d9eed669ba..ef25af7d92 100644
--- a/datafusion/physical-expr-adapter/src/schema_rewriter.rs
+++ b/datafusion/physical-expr-adapter/src/schema_rewriter.rs
@@ -627,10 +627,11 @@ mod tests {
     use super::*;
     use arrow::array::{
         Array, BooleanArray, GenericListArray, Int32Array, Int64Array, RecordBatch,
-        RecordBatchOptions, StringArray, StringViewArray, StructArray,
+        RecordBatchOptions, StringArray, StringViewArray, StructArray, record_batch,
     };
+    use arrow::datatypes as arrow_schema;
     use arrow::datatypes::{Field, Fields, Schema};
-    use datafusion_common::{assert_contains, record_batch};
+    use datafusion_common::assert_contains;
     use datafusion_expr::Operator;
     use datafusion_physical_expr::expressions::{Column, Literal, col};
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org