Skip to content

Commit

Permalink
feat: Add RunEndEncodedArray (#3553)
Browse files Browse the repository at this point in the history
* Add `RunEndEncodedArray`

* fix doctest and clippy issues

* fix doc issues

* fix doc issue

* add validation for run_ends array and corresponding tests

* PR comments

* seal ArrowRunEndIndexType per PR suggestion

* Fix PR suggestions

* few more PR coments

* run array name change

* fix doc issues

* doc change

* lint fix

* make append methods infallible

* fix array.len and other minor changes

* formatting fix

* add validation of array len

* fmt fix

* PR comment and some documentation changes

* pr suggestion

* empty commit

Co-authored-by: ask <ask@local>
  • Loading branch information
askoa and ask committed Jan 25, 2023
1 parent 98d35d3 commit f0be9da
Show file tree
Hide file tree
Showing 16 changed files with 1,511 additions and 4 deletions.
18 changes: 18 additions & 0 deletions arrow-array/src/array/mod.rs
Expand Up @@ -64,6 +64,9 @@ pub use struct_array::*;
mod union_array;
pub use union_array::*;

mod run_array;
pub use run_array::*;

/// Trait for dealing with different types of array at runtime when the type of the
/// array is not known in advance.
pub trait Array: std::fmt::Debug + Send + Sync {
Expand Down Expand Up @@ -579,6 +582,20 @@ pub fn make_array(data: ArrayData) -> ArrayRef {
}
dt => panic!("Unexpected dictionary key type {:?}", dt),
},
DataType::RunEndEncoded(ref run_ends_type, _) => {
match run_ends_type.data_type() {
DataType::Int16 => {
Arc::new(RunArray::<Int16Type>::from(data)) as ArrayRef
}
DataType::Int32 => {
Arc::new(RunArray::<Int32Type>::from(data)) as ArrayRef
}
DataType::Int64 => {
Arc::new(RunArray::<Int64Type>::from(data)) as ArrayRef
}
dt => panic!("Unexpected data type for run_ends array {:?}", dt),
}
}
DataType::Null => Arc::new(NullArray::from(data)) as ArrayRef,
DataType::Decimal128(_, _) => Arc::new(Decimal128Array::from(data)) as ArrayRef,
DataType::Decimal256(_, _) => Arc::new(Decimal256Array::from(data)) as ArrayRef,
Expand Down Expand Up @@ -737,6 +754,7 @@ pub fn new_null_array(data_type: &DataType, length: usize) -> ArrayRef {
new_null_sized_decimal(data_type, length, std::mem::size_of::<i128>())
}
DataType::Decimal256(_, _) => new_null_sized_decimal(data_type, length, 32),
DataType::RunEndEncoded(_, _) => todo!(),
}
}

Expand Down

0 comments on commit f0be9da

Please sign in to comment.