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

Jefffrey pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/main by this push:
     new e3a21bf408 refactor: use REE field name constants across crates 
(#11064)
e3a21bf408 is described below

commit e3a21bf4083909ab2f2ae89b03cdd6b5642d24e2
Author: akashchamp <[email protected]>
AuthorDate: Mon Sep 21 18:23:56 2026 +0530

    refactor: use REE field name constants across crates (#11064)
    
    # Which issue does this PR close?
    
    - Closes #11035.
    
    # Rationale for this change
    
    `Field::REE_RUN_ENDS_FIELD_DEFAULT_NAME` and
    `Field::REE_VALUES_FIELD_DEFAULT_NAME` already exist in `arrow-schema`,
    but the default `run_ends` / `values` child names were still spelled out
    as string literals across the workspace. Using the constants everywhere
    keeps the default names in one place, in the same way #10517 did for the
    map field names.
    
    # What changes are included in this PR?
    
    Replace every default run-end encoded child field name literal with the
    shared constants, keeping behaviour identical:
    
    - `arrow-schema`: display, parse, ffi, fields and canonical extension
    code and tests
    - `arrow-array`: `RunArray::try_new` (the default names every `RunArray`
    gets) and `new_null_array` tests
    - `arrow-data`: run transform and validation tests
    - `arrow-cast`, `arrow-ord`, `arrow-row`, `arrow-select` (no REE
    literals there), `arrow-ipc`, `arrow-json`, `arrow-avro` (codec, schema
    and writer round-trip test), `arrow-integration-test` (JSON
    `runendencoded` placeholder type), `arrow` (`data_gen` and the cast
    benchmarks), `parquet` (arrow_writer bench) and
    `parquet-variant-compute` tests
    
    Intentional custom-name cases (for example the `named_values`
    display/parse tests) and unrelated `"values"` field names (dictionary
    values in `arrow-flight`, map value fallback in `arrow-avro`, plain
    column names in `arrow-ipc` tests) are left as literals on purpose.
    
    # Are these changes tested?
    
    Covered by the existing tests; no behaviour changes. Run locally:
    
    - `cargo fmt --all -- --check`
    - `cargo test --lib` for `arrow-data`, `arrow-array`, `arrow-ord`,
    `arrow-row`, `arrow-ipc`, `arrow-json`, `arrow-cast`, `arrow-avro`,
    `arrow-integration-test`, `arrow` (with `test_utils`) and
    `parquet-variant-compute`
    - `cargo check` for the touched `arrow`, `arrow-json` and `parquet`
    benchmarks
    - `cargo clippy --all-targets --all-features -- -D warnings` on the
    touched crates
    
    # Are there any user-facing changes?
    
    None.
    
    AI assistance was used to identify and apply the mechanical
    substitutions across crates. I reviewed every changed construction and
    confirmed that custom-name cases and unrelated `"values"` field names
    remain explicit literals.
---
 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-schema/src/datatype_parse.rs                 |  60 +++++++--
 .../extension/canonical/timestamp_with_offset.rs   |  36 ++++-
 arrow-schema/src/ffi.rs                            |  12 +-
 arrow-schema/src/fields.rs                         |  24 +++-
 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 +++-
 parquet-variant-compute/src/variant_to_arrow.rs    |  12 +-
 parquet/benches/arrow_writer.rs                    |  12 +-
 26 files changed, 661 insertions(+), 138 deletions(-)

diff --git a/arrow-array/src/array/mod.rs b/arrow-array/src/array/mod.rs
index 6379b1f341..f0f51657af 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 ca5155569f..e60234285d 100644
--- a/arrow-array/src/array/run_array.rs
+++ b/arrow-array/src/array/run_array.rs
@@ -153,8 +153,16 @@ impl<R: RunEndIndexType> RunArray<R> {
         }
 
         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 f466b53323..34d5ea9437 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 f9784a0930..8643707d5b 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 75c0b9a1db..93835ecb01 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 675796b17c..6eed69976e 100644
--- a/arrow-cast/src/cast/mod.rs
+++ b/arrow-cast/src/cast/mod.rs
@@ -13415,8 +13415,16 @@ mod tests {
 
         // Cast to RunEndEncoded<Int32, Int32>
         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();
 
@@ -13456,8 +13464,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
@@ -13500,8 +13516,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
@@ -13530,8 +13554,16 @@ mod tests {
 
         // Cast to RunEndEncoded<Int32, String>
         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();
 
@@ -13559,8 +13591,16 @@ mod tests {
 
         // Cast to RunEndEncoded<Int32, Int32>
         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();
 
@@ -13600,8 +13640,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);
@@ -13619,8 +13667,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);
@@ -13668,8 +13724,16 @@ mod tests {
 
         // Attempt to cast to RunEndEncoded<Int16, Utf8>
         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
@@ -13698,8 +13762,16 @@ mod tests {
 
         // Attempt to cast to RunEndEncoded<Int16, Utf8>
         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,
@@ -13728,8 +13800,16 @@ mod tests {
 
         // Attempt to cast to RunEndEncoded<Int64, Utf8> (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,
@@ -13764,8 +13844,16 @@ mod tests {
 
         // Attempt to cast to RunEndEncoded<Int64, Utf8>
         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,
@@ -14405,8 +14493,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 e4e69ef2e4..4128bffdd3 100644
--- a/arrow-data/src/data.rs
+++ b/arrow-data/src/data.rs
@@ -3176,8 +3176,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 4a2bacba6d..cb239b9a2c 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<i32>, 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<i16>, 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<i64>, 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 9ff0077639..63198b9858 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<DataType> {
             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 b9ae597318..12f4f2b5d5 100644
--- a/arrow-integration-test/src/lib.rs
+++ b/arrow-integration-test/src/lib.rs
@@ -1459,8 +1459,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,
             ),
@@ -1576,8 +1584,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 c340649123..f891b6dd3c 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 7efb202ed7..cb863eb9ae 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 6b0aa7c4c0..07d7a203ff 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<Value> {
 
 fn build_ree_schema() -> Arc<Schema> {
     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 d0ca52301a..b1c110dd7a 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 e651c5f0b8..ab6005f7bf 100644
--- a/arrow-ord/src/cmp.rs
+++ b/arrow-ord/src/cmp.rs
@@ -1141,8 +1141,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 3cb158924e..3053c924f0 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<R: RunEndIndexType>(
@@ -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<Int32Type> = 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-schema/src/datatype_parse.rs 
b/arrow-schema/src/datatype_parse.rs
index 84f24e7bac..67e142e6bc 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 e40a21ad63..7b4cc1704e 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 ea3bf6adf9..85fb327285 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 d637515b1b..e9362a0148 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,
             )
diff --git a/arrow/benches/cast_kernels.rs b/arrow/benches/cast_kernels.rs
index a5f79010af..5956bdb89e 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 f1ef4f528c..6d3c23e7ca 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 4db0098f69..9686be6a92 100644
--- a/parquet-variant-compute/src/shred_variant.rs
+++ b/parquet-variant-compute/src/shred_variant.rs
@@ -1531,8 +1531,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 681c698b10..63af0dad08 100644
--- a/parquet-variant-compute/src/variant_get.rs
+++ b/parquet-variant-compute/src/variant_get.rs
@@ -4505,8 +4505,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",
@@ -5432,8 +5440,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 274543db85..2c811b8b7b 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 54d15284d7..55bd8e9802 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,
     )];

Reply via email to