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,
)];