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