From 8e7dddaf89aa00ea311553d2a5422ed567caa875 Mon Sep 17 00:00:00 2001 From: Akash Kumar <116457960+akashchamp@users.noreply.github.com> Date: Sat, 12 Sep 2026 05:58:27 +0530 Subject: [PATCH 1/2] refactor(schema): use REE field name constants Replace default run-end encoded field-name literals with the shared constants. --- arrow-schema/src/datatype_parse.rs | 60 +++++++++++++++---- .../canonical/timestamp_with_offset.rs | 36 +++++++++-- arrow-schema/src/ffi.rs | 12 +++- arrow-schema/src/fields.rs | 24 ++++++-- 4 files changed, 108 insertions(+), 24 deletions(-) diff --git a/arrow-schema/src/datatype_parse.rs b/arrow-schema/src/datatype_parse.rs index 84f24e7bacbb..67e142e6bcde 100644 --- a/arrow-schema/src/datatype_parse.rs +++ b/arrow-schema/src/datatype_parse.rs @@ -1249,27 +1249,55 @@ mod test { true, ), DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::UInt32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::UInt32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ), DataType::RunEndEncoded( Arc::new(Field::new( - "run_ends", + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::UInt32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::UInt32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ), false, )), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ), // non-default field names trigger verbose display form DataType::RunEndEncoded( Arc::new(Field::new( - "run_ends", + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::UInt32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::UInt32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ), false, )), @@ -1278,10 +1306,18 @@ mod test { // verbose form with non-null inner values DataType::RunEndEncoded( Arc::new(Field::new( - "run_ends", + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::UInt32, false)), - Arc::new(Field::new("values", DataType::Int32, false)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::UInt32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), ), false, )), diff --git a/arrow-schema/src/extension/canonical/timestamp_with_offset.rs b/arrow-schema/src/extension/canonical/timestamp_with_offset.rs index e40a21ad6336..7b4cc1704ecf 100644 --- a/arrow-schema/src/extension/canonical/timestamp_with_offset.rs +++ b/arrow-schema/src/extension/canonical/timestamp_with_offset.rs @@ -207,8 +207,16 @@ mod tests { Field::new( OFFSET_FIELD_NAME, DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", run_ends_type, false)), - Arc::new(Field::new("values", DataType::Int16, false)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + run_ends_type, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), ), false, ), @@ -411,8 +419,16 @@ mod tests { Field::new( OFFSET_FIELD_NAME, DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Boolean, false)), - Arc::new(Field::new("values", DataType::Int16, false)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Boolean, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), ), false, ), @@ -434,8 +450,16 @@ mod tests { Field::new( OFFSET_FIELD_NAME, DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::UInt16, false)), - Arc::new(Field::new("values", DataType::Int32, false)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::UInt16, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), ), false, ), diff --git a/arrow-schema/src/ffi.rs b/arrow-schema/src/ffi.rs index ea3bf6adf9a0..85fb32728593 100644 --- a/arrow-schema/src/ffi.rs +++ b/arrow-schema/src/ffi.rs @@ -1003,8 +1003,16 @@ mod tests { true, )]))); round_trip_type(DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Binary, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Binary, + true, + )), )); } diff --git a/arrow-schema/src/fields.rs b/arrow-schema/src/fields.rs index d637515b1bad..e9362a014878 100644 --- a/arrow-schema/src/fields.rs +++ b/arrow-schema/src/fields.rs @@ -695,8 +695,16 @@ mod tests { Field::new( "i", DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Struct(floats.clone()), true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Struct(floats.clone()), + true, + )), ), false, ), @@ -726,8 +734,16 @@ mod tests { &Field::new( "i", DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", floats_a.clone(), true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + floats_a.clone(), + true + )), ), false, ) From 018f1bd14b2e3c041060df550c93f93c0bc2e889 Mon Sep 17 00:00:00 2001 From: Akash Kumar <116457960+akashchamp@users.noreply.github.com> Date: Sun, 20 Sep 2026 16:50:04 +0530 Subject: [PATCH 2/2] refactor: use REE field name constants across crates Rewire the default run-end encoded child field names in the other workspace crates to Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME and Field::REE_VALUES_FIELD_DEFAULT_NAME, following the approach used for the map field names in #10517: arrow-array (RunArray::try_new), arrow-data, arrow-cast, arrow-ord, arrow-row, arrow-ipc, arrow-json, arrow-avro, arrow-integration-test, arrow, parquet and parquet-variant-compute. Custom-name cases and unrelated "values" field names (dictionary values in arrow-flight, map value fallback in arrow-avro, plain column names in arrow-ipc tests) are intentionally left as literals. No behaviour change. --- arrow-array/src/array/mod.rs | 8 +- arrow-array/src/array/run_array.rs | 12 +- arrow-avro/src/codec.rs | 12 +- arrow-avro/src/schema.rs | 12 +- arrow-avro/src/writer/mod.rs | 7 +- arrow-cast/src/cast/mod.rs | 144 ++++++++++++++--- arrow-data/src/data.rs | 12 +- arrow-data/src/transform/run.rs | 36 ++++- arrow-integration-test/src/datatype.rs | 6 +- arrow-integration-test/src/lib.rs | 24 ++- arrow-ipc/src/reader.rs | 12 +- arrow-ipc/src/reader/stream.rs | 8 +- arrow-json/benches/json_reader.rs | 12 +- arrow-json/src/reader/mod.rs | 84 ++++++++-- arrow-ord/src/cmp.rs | 12 +- arrow-row/src/run.rs | 146 +++++++++++++++--- arrow/benches/cast_kernels.rs | 48 +++++- arrow/src/util/data_gen.rs | 12 +- parquet-variant-compute/src/shred_variant.rs | 12 +- parquet-variant-compute/src/variant_get.rs | 24 ++- .../src/variant_to_arrow.rs | 12 +- parquet/benches/arrow_writer.rs | 12 +- 22 files changed, 553 insertions(+), 114 deletions(-) diff --git a/arrow-array/src/array/mod.rs b/arrow-array/src/array/mod.rs index 6379b1f34175..f0f51657af7b 100644 --- a/arrow-array/src/array/mod.rs +++ b/arrow-array/src/array/mod.rs @@ -1271,8 +1271,12 @@ mod tests { fn test_null_runs() { for r in [DataType::Int16, DataType::Int32, DataType::Int64] { let data_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", r, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new(Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, r, false)), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let array = new_null_array(&data_type, 4); diff --git a/arrow-array/src/array/run_array.rs b/arrow-array/src/array/run_array.rs index 7255eb50d373..22c2df4444b6 100644 --- a/arrow-array/src/array/run_array.rs +++ b/arrow-array/src/array/run_array.rs @@ -153,8 +153,16 @@ impl RunArray { } let data_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", run_ends.data_type().clone(), false)), - Arc::new(Field::new("values", values.data_type().clone(), true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + run_ends.data_type().clone(), + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + values.data_type().clone(), + true, + )), ); let logical_len = RunArray::logical_len(run_ends); diff --git a/arrow-avro/src/codec.rs b/arrow-avro/src/codec.rs index f466b53323ca..34d5ea94376a 100644 --- a/arrow-avro/src/codec.rs +++ b/arrow-avro/src/codec.rs @@ -960,8 +960,16 @@ impl Codec { _ => unreachable!(), }; DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", run_ends_dt, false)), - Arc::new(Field::new("values", values.codec().data_type(), true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + run_ends_dt, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + values.codec().data_type(), + true, + )), ) } #[cfg(feature = "avro_custom_types")] diff --git a/arrow-avro/src/schema.rs b/arrow-avro/src/schema.rs index f9784a093090..8643707d5bf9 100644 --- a/arrow-avro/src/schema.rs +++ b/arrow-avro/src/schema.rs @@ -3036,8 +3036,16 @@ mod tests { #[test] fn test_run_end_encoded() { let ree_dt = DataType::RunEndEncoded( - Arc::new(ArrowField::new("run_ends", DataType::Int32, false)), - Arc::new(ArrowField::new("values", DataType::Utf8, false)), + Arc::new(ArrowField::new( + ArrowField::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(ArrowField::new( + ArrowField::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + false, + )), ); let s = single_field_schema(ArrowField::new("text", ree_dt, false)); let avro = AvroSchema::try_from(&s).unwrap(); diff --git a/arrow-avro/src/writer/mod.rs b/arrow-avro/src/writer/mod.rs index 75c0b9a1dbad..93835ecb0180 100644 --- a/arrow-avro/src/writer/mod.rs +++ b/arrow-avro/src/writer/mod.rs @@ -2107,9 +2107,12 @@ mod tests { assert_eq!(out.num_rows(), 8); match out.schema().field(0).data_type() { DataType::RunEndEncoded(run_ends_field, values_field) => { - assert_eq!(run_ends_field.name(), "run_ends"); + assert_eq!( + run_ends_field.name(), + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME + ); assert_eq!(run_ends_field.data_type(), &DataType::Int32); - assert_eq!(values_field.name(), "values"); + assert_eq!(values_field.name(), Field::REE_VALUES_FIELD_DEFAULT_NAME); assert_eq!(values_field.data_type(), &DataType::Int32); assert!(values_field.is_nullable()); let got_ree = out diff --git a/arrow-cast/src/cast/mod.rs b/arrow-cast/src/cast/mod.rs index 7ba864336e2c..5a9d967ec3d5 100644 --- a/arrow-cast/src/cast/mod.rs +++ b/arrow-cast/src/cast/mod.rs @@ -13424,8 +13424,16 @@ mod tests { // Cast to RunEndEncoded let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); let cast_result = cast(&array_ref, &target_type).unwrap(); @@ -13465,8 +13473,16 @@ mod tests { ]); let array_ref = Arc::new(source_array) as ArrayRef; let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); let cast_result = cast(&array_ref, &target_type).unwrap(); let result_run_array = cast_result @@ -13509,8 +13525,16 @@ mod tests { ]); let array_ref = Arc::new(source_array) as ArrayRef; let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int16, false)), - Arc::new(Field::new("values", DataType::Int64, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int64, + true, + )), ); let cast_result = cast(&array_ref, &target_type).unwrap(); let result_run_array = cast_result @@ -13539,8 +13563,16 @@ mod tests { // Cast to RunEndEncoded let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let cast_result = cast(&array_ref, &target_type).unwrap(); @@ -13568,8 +13600,16 @@ mod tests { // Cast to RunEndEncoded let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); let cast_result = cast(&array_ref, &target_type).unwrap(); @@ -13609,8 +13649,16 @@ mod tests { let array_ref = Arc::new(source_array) as ArrayRef; let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int16, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); let cast_result = cast(&array_ref, &target_type).unwrap(); assert_eq!(cast_result.data_type(), &target_type); @@ -13628,8 +13676,16 @@ mod tests { // Test again with Int64 index type let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int64, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int64, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); let cast_result = cast(&array_ref, &target_type).unwrap(); assert_eq!(cast_result.data_type(), &target_type); @@ -13677,8 +13733,16 @@ mod tests { // Attempt to cast to RunEndEncoded let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int16, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let cast_options = CastOptions { safe: false, // This should make it fail instead of returning nulls @@ -13707,8 +13771,16 @@ mod tests { // Attempt to cast to RunEndEncoded let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int16, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let cast_options = CastOptions { safe: true, @@ -13737,8 +13809,16 @@ mod tests { // Attempt to cast to RunEndEncoded (upcast should succeed) let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int64, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int64, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let cast_options = CastOptions { safe: false, @@ -13773,8 +13853,16 @@ mod tests { // Attempt to cast to RunEndEncoded let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int64, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int64, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let cast_options = CastOptions { safe: false, @@ -14293,8 +14381,16 @@ mod tests { let array_ref = Arc::new(ree_array) as ArrayRef; let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int64, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int64, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let cast_options = CastOptions { safe: false, diff --git a/arrow-data/src/data.rs b/arrow-data/src/data.rs index 5f68e6548f8e..42af34750aab 100644 --- a/arrow-data/src/data.rs +++ b/arrow-data/src/data.rs @@ -3124,8 +3124,16 @@ mod tests { #[cfg(not(feature = "force_validate"))] fn test_validate_values_rejects_a_non_integer_run_end() { let data_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Utf8, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Utf8, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); let run_end_encoded = unsafe { ArrayData::builder(data_type) diff --git a/arrow-data/src/transform/run.rs b/arrow-data/src/transform/run.rs index 4a2bacba6db2..cb239b9a2cda 100644 --- a/arrow-data/src/transform/run.rs +++ b/arrow-data/src/transform/run.rs @@ -269,8 +269,16 @@ mod tests { use std::sync::Arc; fn create_run_array_data(run_ends: Vec, values: ArrayData) -> ArrayData { - let run_ends_field = Arc::new(Field::new("run_ends", DataType::Int32, false)); - let values_field = Arc::new(Field::new("values", values.data_type().clone(), true)); + let run_ends_field = Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )); + let values_field = Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + values.data_type().clone(), + true, + )); let data_type = DataType::RunEndEncoded(run_ends_field, values_field); let last_run_end = if run_ends.is_empty() { @@ -295,8 +303,16 @@ mod tests { } fn create_run_array_data_int16(run_ends: Vec, values: ArrayData) -> ArrayData { - let run_ends_field = Arc::new(Field::new("run_ends", DataType::Int16, false)); - let values_field = Arc::new(Field::new("values", values.data_type().clone(), true)); + let run_ends_field = Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )); + let values_field = Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + values.data_type().clone(), + true, + )); let data_type = DataType::RunEndEncoded(run_ends_field, values_field); let last_run_end = if run_ends.is_empty() { @@ -321,8 +337,16 @@ mod tests { } fn create_run_array_data_int64(run_ends: Vec, values: ArrayData) -> ArrayData { - let run_ends_field = Arc::new(Field::new("run_ends", DataType::Int64, false)); - let values_field = Arc::new(Field::new("values", values.data_type().clone(), true)); + let run_ends_field = Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int64, + false, + )); + let values_field = Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + values.data_type().clone(), + true, + )); let data_type = DataType::RunEndEncoded(run_ends_field, values_field); let last_run_end = if run_ends.is_empty() { diff --git a/arrow-integration-test/src/datatype.rs b/arrow-integration-test/src/datatype.rs index 9ff007763989..63198b9858c7 100644 --- a/arrow-integration-test/src/datatype.rs +++ b/arrow-integration-test/src/datatype.rs @@ -224,7 +224,11 @@ pub fn data_type_from_json(json: &serde_json::Value) -> Result { Some(s) if s == "runendencoded" => { // return a run end encoded with placeholder types as children aren't defined in the map Ok(DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), default_field, )) } diff --git a/arrow-integration-test/src/lib.rs b/arrow-integration-test/src/lib.rs index 4636aafd5999..23a507045a72 100644 --- a/arrow-integration-test/src/lib.rs +++ b/arrow-integration-test/src/lib.rs @@ -1452,8 +1452,16 @@ mod tests { Field::new( "runendencoded", DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int16, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ), true, ), @@ -1569,8 +1577,16 @@ mod tests { let ree_run_ends = Int16Array::from(vec![2, 3]); let ree_values = Int32Array::from(vec![Some(100), None]); let ree_data_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int16, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); let ree_data = ArrayData::builder(ree_data_type) .len(3) diff --git a/arrow-ipc/src/reader.rs b/arrow-ipc/src/reader.rs index 52a026863b87..2e15eb428477 100644 --- a/arrow-ipc/src/reader.rs +++ b/arrow-ipc/src/reader.rs @@ -2050,8 +2050,16 @@ mod tests { let struct_data_type = DataType::Struct(struct_fields); let run_encoded_data_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int16, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); // define schema diff --git a/arrow-ipc/src/reader/stream.rs b/arrow-ipc/src/reader/stream.rs index 7efb202ed739..cb863eb9aeb9 100644 --- a/arrow-ipc/src/reader/stream.rs +++ b/arrow-ipc/src/reader/stream.rs @@ -385,10 +385,14 @@ mod tests { let schema = Schema::new(vec![Field::new( "test1", DataType::RunEndEncoded( - Arc::new(Field::new("run_ends".to_string(), DataType::Int32, false)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), #[expect(deprecated)] Arc::new(Field::new_dict( - "values".to_string(), + Field::REE_VALUES_FIELD_DEFAULT_NAME, DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)), true, 0, diff --git a/arrow-json/benches/json_reader.rs b/arrow-json/benches/json_reader.rs index 6b0aa7c4c06d..07d7a203ff2c 100644 --- a/arrow-json/benches/json_reader.rs +++ b/arrow-json/benches/json_reader.rs @@ -451,8 +451,16 @@ fn build_ree_values(rows: usize, run_length: usize) -> Vec { fn build_ree_schema() -> Arc { let ree_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Int64, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int64, + true, + )), ); Arc::new(Schema::new(vec![Field::new("val", ree_type, false)])) } diff --git a/arrow-json/src/reader/mod.rs b/arrow-json/src/reader/mod.rs index d0ca52301a4c..b1c110dd7a29 100644 --- a/arrow-json/src/reader/mod.rs +++ b/arrow-json/src/reader/mod.rs @@ -3995,8 +3995,16 @@ mod tests { "#; let ree_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let schema = Arc::new(Schema::new(vec![Field::new("a", ree_type, true)])); let batches = do_read(buf, 1024, false, false, schema); @@ -4026,8 +4034,16 @@ mod tests { "#; let ree_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let schema = Arc::new(Schema::new(vec![Field::new("a", ree_type, true)])); let batches = do_read(buf, 1024, false, false, schema); @@ -4052,8 +4068,16 @@ mod tests { for field_nullable in [false, true] { for values_nullable in [false, true] { let ree_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Utf8, values_nullable)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + values_nullable, + )), ); let schema = Arc::new(Schema::new(vec![Field::new("a", ree_type, field_nullable)])); @@ -4095,8 +4119,16 @@ mod tests { "#; let ree_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); let schema = Arc::new(Schema::new(vec![Field::new("a", ree_type, true)])); let batches = do_read(buf, 1024, false, false, schema); @@ -4119,8 +4151,16 @@ mod tests { "#; let ree_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int16, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int16, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let schema = Arc::new(Schema::new(vec![Field::new("a", ree_type, true)])); let batches = do_read(buf, 1024, false, false, schema); @@ -4144,12 +4184,28 @@ mod tests { // The outer REE compresses whole rows, while the inner REE compresses the // repeated string values produced by decoding those rows. let inner_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int64, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int64, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); let outer_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int64, false)), - Arc::new(Field::new("values", inner_type, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int64, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + inner_type, + true, + )), ); let schema = Arc::new(Schema::new(vec![Field::new("a", outer_type, true)])); let batches = do_read(buf, 1024, false, false, schema); diff --git a/arrow-ord/src/cmp.rs b/arrow-ord/src/cmp.rs index 6c9d6115c645..08f3b178c1ac 100644 --- a/arrow-ord/src/cmp.rs +++ b/arrow-ord/src/cmp.rs @@ -1132,8 +1132,16 @@ mod tests { // REE, nested dictionary, and complex types are not supported. assert!(!supports_distinct(&RunEndEncoded( - Arc::new(Field::new("run_ends", Int32, false)), - Arc::new(Field::new("values", Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + Int32, + false + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + Int32, + true + )), ))); assert!(!supports_distinct(&Dictionary( Box::new(Int16), diff --git a/arrow-row/src/run.rs b/arrow-row/src/run.rs index 3cb158924e07..3053c924f0c3 100644 --- a/arrow-row/src/run.rs +++ b/arrow-row/src/run.rs @@ -159,7 +159,7 @@ mod tests { use arrow_array::cast::AsArray; use arrow_array::types::{Int16Type, Int32Type, Int64Type, RunEndIndexType}; use arrow_array::{Array, Int64Array, PrimitiveArray, RunArray, StringArray}; - use arrow_schema::{DataType, SortOptions}; + use arrow_schema::{DataType, Field, SortOptions}; use std::sync::Arc; fn assert_roundtrip( @@ -171,15 +171,31 @@ mod tests { let sort_field = if let Some(options) = sort_options { SortField::new_with_options( DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", run_end_type, false)), - Arc::new(arrow_schema::Field::new("values", values_type, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + run_end_type, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + values_type, + true, + )), ), options, ) } else { SortField::new(DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", run_end_type, false)), - Arc::new(arrow_schema::Field::new("values", values_type, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + run_end_type, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + values_type, + true, + )), )) }; @@ -199,8 +215,16 @@ mod tests { fn test_run_end_encoded_supports_datatype() { // Test that the RowConverter correctly supports run-end encoded arrays assert!(RowConverter::supports_datatype(&DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true + )), ))); } @@ -336,8 +360,16 @@ mod tests { let converter_nulls_first = RowConverter::new(vec![SortField::new_with_options( DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ), SortOptions { descending: false, @@ -348,8 +380,16 @@ mod tests { let converter_nulls_last = RowConverter::new(vec![SortField::new_with_options( DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ), SortOptions { descending: false, @@ -396,8 +436,16 @@ mod tests { let multi_converter = RowConverter::new(vec![ SortField::new(DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), )), SortField::new(DataType::Utf8), ]) @@ -435,8 +483,16 @@ mod tests { // Test ascending sort let converter_asc = RowConverter::new(vec![SortField::new(DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ))]) .unwrap(); @@ -468,8 +524,16 @@ mod tests { // Test descending sort let converter_desc = RowConverter::new(vec![SortField::new_with_options( DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ), arrow_schema::SortOptions { descending: true, @@ -514,8 +578,16 @@ mod tests { // Test nulls_first = true let converter_nulls_first = RowConverter::new(vec![SortField::new_with_options( DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ), arrow_schema::SortOptions { descending: false, @@ -540,8 +612,16 @@ mod tests { // Test nulls_first = false let converter_nulls_last = RowConverter::new(vec![SortField::new_with_options( DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ), arrow_schema::SortOptions { descending: false, @@ -575,8 +655,16 @@ mod tests { let converter = RowConverter::new(vec![SortField::new_with_options( DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ), arrow_schema::SortOptions { descending: false, @@ -618,8 +706,16 @@ mod tests { let array: RunArray = values.into_iter().collect(); let converter = RowConverter::new(vec![SortField::new(DataType::RunEndEncoded( - Arc::new(arrow_schema::Field::new("run_ends", DataType::Int32, false)), - Arc::new(arrow_schema::Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ))]) .unwrap(); diff --git a/arrow/benches/cast_kernels.rs b/arrow/benches/cast_kernels.rs index a5f79010af3c..5956bdb89ef1 100644 --- a/arrow/benches/cast_kernels.rs +++ b/arrow/benches/cast_kernels.rs @@ -581,8 +581,16 @@ fn add_benchmark(c: &mut Criterion) { let source_array = StringArray::from(vec!["a"; 8192]); let array_ref = Arc::new(source_array) as ArrayRef; let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ); b.iter(|| cast(&array_ref, &target_type).unwrap()); }); @@ -591,8 +599,16 @@ fn add_benchmark(c: &mut Criterion) { let source_array: Int32Array = (0..8192).map(|i| i / 10).collect(); let array_ref = Arc::new(source_array) as ArrayRef; let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); b.iter(|| cast(&array_ref, &target_type).unwrap()); }); @@ -601,8 +617,16 @@ fn add_benchmark(c: &mut Criterion) { let source_array: Int32Array = (0..8192).map(|i| i / 1000).collect(); let array_ref = Arc::new(source_array) as ArrayRef; let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); b.iter(|| cast(&array_ref, &target_type).unwrap()); }); @@ -611,8 +635,16 @@ fn add_benchmark(c: &mut Criterion) { let source_array: Int32Array = (0..8192).collect(); let array_ref = Arc::new(source_array) as ArrayRef; let target_type = DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Int32, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Int32, + true, + )), ); b.iter(|| cast(&array_ref, &target_type).unwrap()); }); diff --git a/arrow/src/util/data_gen.rs b/arrow/src/util/data_gen.rs index f1ef4f528c9b..6d3c23e7caab 100644 --- a/arrow/src/util/data_gen.rs +++ b/arrow/src/util/data_gen.rs @@ -742,8 +742,16 @@ mod tests { let ree_field = Field::new( "ree", DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ), false, ); diff --git a/parquet-variant-compute/src/shred_variant.rs b/parquet-variant-compute/src/shred_variant.rs index 6c4af06d5107..9e05978370ac 100644 --- a/parquet-variant-compute/src/shred_variant.rs +++ b/parquet-variant-compute/src/shred_variant.rs @@ -1506,8 +1506,16 @@ mod tests { ), DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)), DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ), ]; diff --git a/parquet-variant-compute/src/variant_get.rs b/parquet-variant-compute/src/variant_get.rs index d8f09f0f1baa..740f086e9825 100644 --- a/parquet-variant-compute/src/variant_get.rs +++ b/parquet-variant-compute/src/variant_get.rs @@ -4482,8 +4482,16 @@ mod test { Some(Variant::from("banana")), Some(Variant::from("banana")), ])); - let run_ends = Arc::new(Field::new("run_ends", DataType::Int32, false)); - let values = Arc::new(Field::new("values", DataType::Utf8, true)); + let run_ends = Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )); + let values = Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )); let data_type = DataType::RunEndEncoded(run_ends, values); let options = GetOptions::new().with_as_type(Some(FieldRef::from(Field::new( "ree", @@ -5409,8 +5417,16 @@ mod test { let encoded_types = [ DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)), DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", DataType::Utf8, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )), ), ]; diff --git a/parquet-variant-compute/src/variant_to_arrow.rs b/parquet-variant-compute/src/variant_to_arrow.rs index 274543db858b..2c811b8b7ba1 100644 --- a/parquet-variant-compute/src/variant_to_arrow.rs +++ b/parquet-variant-compute/src/variant_to_arrow.rs @@ -1786,8 +1786,16 @@ mod tests { let union_fields = UnionFields::try_new(vec![1], vec![Field::new("child", DataType::Int32, true)]) .unwrap(); - let run_ends_field = Arc::new(Field::new("run_ends", DataType::Int32, false)); - let ree_values_field = Arc::new(Field::new("values", DataType::Utf8, true)); + let run_ends_field = Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )); + let ree_values_field = Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + DataType::Utf8, + true, + )); let non_primitive_types = vec![ DataType::List(item_field.clone()), diff --git a/parquet/benches/arrow_writer.rs b/parquet/benches/arrow_writer.rs index 54d15284d7d6..55bd8e980217 100644 --- a/parquet/benches/arrow_writer.rs +++ b/parquet/benches/arrow_writer.rs @@ -321,8 +321,16 @@ fn create_ree_bench_batch( let fields = vec![Field::new( "_1", DataType::RunEndEncoded( - Arc::new(Field::new("run_ends", DataType::Int32, false)), - Arc::new(Field::new("values", value_dt, true)), + Arc::new(Field::new( + Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME, + DataType::Int32, + false, + )), + Arc::new(Field::new( + Field::REE_VALUES_FIELD_DEFAULT_NAME, + value_dt, + true, + )), ), true, )];