Skip to content

Commit f151c10

Browse files
authored
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 apache/arrow-rs#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
1 parent 8d680db commit f151c10

12 files changed

Lines changed: 31 additions & 18 deletions

File tree

datafusion-examples/examples/execution_monitoring/memory_pool_execution_plan.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
//! - Handle memory pressure by spilling to disk
2727
//! - Release memory when done
2828
29+
use arrow::array::record_batch;
2930
use arrow::record_batch::RecordBatch;
3031
use arrow_schema::SchemaRef;
31-
use datafusion::common::record_batch;
3232
use datafusion::common::{exec_datafusion_err, internal_err};
3333
use datafusion::datasource::{DefaultTableSource, memory::MemTable};
3434
use datafusion::error::Result;

datafusion-examples/examples/ffi/ffi_example_table_provider/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@
1717

1818
use std::sync::Arc;
1919

20-
use arrow::array::RecordBatch;
20+
use arrow::array::{RecordBatch, record_batch};
21+
use arrow::datatypes as arrow_schema;
2122
use arrow::datatypes::{DataType, Field, Schema};
22-
use datafusion::{common::record_batch, datasource::MemTable};
23+
use datafusion::datasource::MemTable;
2324
use datafusion_ffi::proto::logical_extension_codec::FFI_LogicalExtensionCodec;
2425
use datafusion_ffi::table_provider::FFI_TableProvider;
2526
use ffi_module_interface::TableProviderModule;

datafusion/common/src/test_util.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,15 +364,20 @@ macro_rules! create_array {
364364
/// Creates a record batch from literal slice of values, suitable for rapid
365365
/// testing and development.
366366
///
367+
/// **Deprecated**: prefer the upstream macro from `arrow`,
368+
/// [`arrow::array::record_batch`], which now supports both the literal slice
369+
/// form shown below and a variable/expression form.
370+
///
367371
/// Example:
368372
/// ```
369-
/// use datafusion_common::record_batch;
373+
/// use arrow::array::record_batch;
370374
/// let batch = record_batch!(
371375
/// ("a", Int32, vec![1, 2, 3]),
372376
/// ("b", Float64, vec![Some(4.0), None, Some(5.0)]),
373377
/// ("c", Utf8, vec!["alpha", "beta", "gamma"])
374378
/// );
375379
/// ```
380+
#[deprecated(since = "55.0.0", note = "Use `arrow::array::record_batch` instead")]
376381
#[macro_export]
377382
macro_rules! record_batch {
378383
($(($name: expr, $type: ident, $values: expr)),*) => {
@@ -776,6 +781,10 @@ mod tests {
776781
}
777782

778783
#[test]
784+
#[expect(
785+
deprecated,
786+
reason = "testing the deprecated record_batch! macro itself"
787+
)]
779788
fn test_create_record_batch() -> Result<()> {
780789
use arrow::array::Array;
781790

datafusion/core/tests/macro_hygiene/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ mod plan_datafusion_err {
4141
}
4242

4343
mod record_batch {
44+
#![expect(
45+
deprecated,
46+
reason = "exercising hygiene of the deprecated `datafusion_common::record_batch!` while it is still exported"
47+
)]
4448
// NO other imports!
4549
use datafusion_common::record_batch;
4650

datafusion/datasource-parquet/src/opener/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1696,12 +1696,12 @@ mod test {
16961696
CachedParquetFileReaderFactory, DefaultParquetFileReaderFactory,
16971697
ParquetFileReaderFactory, ParquetRowSelection, RowGroupAccess,
16981698
};
1699-
use arrow::array::RecordBatch;
1699+
use arrow::array::{RecordBatch, record_batch};
17001700
use arrow::datatypes::{DataType, Field, Schema, SchemaRef};
17011701
use bytes::{BufMut, BytesMut};
17021702
use datafusion_common::{
17031703
ColumnStatistics, ScalarValue, Statistics, assert_contains, internal_err,
1704-
record_batch, stats::Precision,
1704+
stats::Precision,
17051705
};
17061706
use datafusion_datasource::morsel::{Morsel, Morselizer};
17071707
use datafusion_datasource::{PartitionedFile, TableSchema, TableSchemaBuilder};

datafusion/datasource/src/projection.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,10 @@ impl SplitProjection {
294294
mod test {
295295
use std::sync::Arc;
296296

297-
use arrow::array::{AsArray, RecordBatch};
297+
use arrow::array::{AsArray, RecordBatch, record_batch};
298+
use arrow::datatypes as arrow_schema;
298299
use arrow::datatypes::{DataType, Field, SchemaRef};
299-
use datafusion_common::{DFSchema, ScalarValue, config::ConfigOptions, record_batch};
300+
use datafusion_common::{DFSchema, ScalarValue, config::ConfigOptions};
300301
use datafusion_expr::{Expr, ScalarUDF, col, execution_props::ExecutionProps};
301302
use datafusion_functions::core::input_file_name::InputFileNameFunc;
302303
use datafusion_physical_expr::{

datafusion/ffi/src/record_batch_stream.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,8 @@ impl Drop for FFI_RecordBatchStream {
218218
mod tests {
219219
use std::sync::Arc;
220220

221+
use arrow::array::record_batch;
221222
use arrow::datatypes::{DataType, Field, Schema};
222-
use datafusion::common::record_batch;
223223
use datafusion::error::Result;
224224
use datafusion::execution::SendableRecordBatchStream;
225225
use datafusion::test_util::bounded_stream;

datafusion/ffi/src/tests/catalog.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ pub struct FixedSchemaProvider {
4848
}
4949

5050
pub fn fruit_table() -> Arc<dyn TableProvider + 'static> {
51+
use arrow::array::record_batch;
5152
use arrow::datatypes::{DataType, Field};
52-
use datafusion_common::record_batch;
5353

5454
let schema = Arc::new(Schema::new(vec![
5555
Field::new("units", DataType::Int32, true),

datafusion/ffi/src/tests/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@
1717

1818
use std::sync::Arc;
1919

20-
use arrow::array::RecordBatch;
20+
use arrow::array::{RecordBatch, record_batch};
2121
use arrow_schema::{DataType, Field, Schema};
2222
use async_provider::create_async_table_provider;
2323
use async_trait::async_trait;
2424
use catalog::create_catalog_provider;
2525
use datafusion_catalog::MemTable;
2626
use datafusion_catalog::{Session, TableProvider};
27-
use datafusion_common::record_batch;
2827
use datafusion_common::stats::Precision;
2928
use datafusion_common::{ColumnStatistics, Statistics};
3029
use datafusion_common::{Result, ScalarValue};

datafusion/ffi/tests/ffi_udaf.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121
mod tests {
2222
use std::sync::Arc;
2323

24-
use arrow::array::Float64Array;
25-
use datafusion::common::record_batch;
24+
use arrow::array::{Float64Array, record_batch};
2625
use datafusion::error::Result;
2726
use datafusion::logical_expr::{AggregateUDF, AggregateUDFImpl};
2827
use datafusion::prelude::{SessionContext, col};

0 commit comments

Comments
 (0)