You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by tu...@apache.org on 2022/11/23 05:46:51 UTC
[arrow-rs] branch master updated: Extend Decimal256 as Primitive (#3156)
This is an automated email from the ASF dual-hosted git repository.
tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/master by this push:
new 00e5542b9 Extend Decimal256 as Primitive (#3156)
00e5542b9 is described below
commit 00e5542b9863cd6826936365b52f35ff804c6a22
Author: Raphael Taylor-Davies <17...@users.noreply.github.com>
AuthorDate: Wed Nov 23 05:46:46 2022 +0000
Extend Decimal256 as Primitive (#3156)
---
arrow-data/src/transform/fixed_binary.rs | 2 --
arrow-data/src/transform/mod.rs | 16 +++++++---------
2 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/arrow-data/src/transform/fixed_binary.rs b/arrow-data/src/transform/fixed_binary.rs
index fe21a6bc3..a20901014 100644
--- a/arrow-data/src/transform/fixed_binary.rs
+++ b/arrow-data/src/transform/fixed_binary.rs
@@ -22,7 +22,6 @@ use arrow_schema::DataType;
pub(super) fn build_extend(array: &ArrayData) -> Extend {
let size = match array.data_type() {
DataType::FixedSizeBinary(i) => *i as usize,
- DataType::Decimal256(_, _) => 32,
_ => unreachable!(),
};
@@ -58,7 +57,6 @@ pub(super) fn build_extend(array: &ArrayData) -> Extend {
pub(super) fn extend_nulls(mutable: &mut _MutableArrayData, len: usize) {
let size = match mutable.data_type {
DataType::FixedSizeBinary(i) => i as usize,
- DataType::Decimal256(_, _) => 32,
_ => unreachable!(),
};
diff --git a/arrow-data/src/transform/mod.rs b/arrow-data/src/transform/mod.rs
index c34376aab..6a8c89d25 100644
--- a/arrow-data/src/transform/mod.rs
+++ b/arrow-data/src/transform/mod.rs
@@ -20,7 +20,7 @@ use super::{
ArrayData, ArrayDataBuilder,
};
use crate::bit_mask::set_bits;
-use arrow_buffer::{bit_util, ArrowNativeType, MutableBuffer};
+use arrow_buffer::{bit_util, i256, ArrowNativeType, MutableBuffer};
use arrow_schema::{ArrowError, DataType, IntervalUnit, UnionMode};
use half::f16;
use num::Integer;
@@ -186,7 +186,6 @@ fn build_extend_dictionary(
fn build_extend(array: &ArrayData) -> Extend {
match array.data_type() {
- DataType::Decimal128(_, _) => primitive::build_extend::<i128>(array),
DataType::Null => null::build_extend(array),
DataType::Boolean => boolean::build_extend(array),
DataType::UInt8 => primitive::build_extend::<u8>(array),
@@ -214,6 +213,8 @@ fn build_extend(array: &ArrayData) -> Extend {
DataType::Interval(IntervalUnit::MonthDayNano) => {
primitive::build_extend::<i128>(array)
}
+ DataType::Decimal128(_, _) => primitive::build_extend::<i128>(array),
+ DataType::Decimal256(_, _) => primitive::build_extend::<i256>(array),
DataType::Utf8 | DataType::Binary => variable_size::build_extend::<i32>(array),
DataType::LargeUtf8 | DataType::LargeBinary => {
variable_size::build_extend::<i64>(array)
@@ -222,9 +223,7 @@ fn build_extend(array: &ArrayData) -> Extend {
DataType::LargeList(_) => list::build_extend::<i64>(array),
DataType::Dictionary(_, _) => unreachable!("should use build_extend_dictionary"),
DataType::Struct(_) => structure::build_extend(array),
- DataType::FixedSizeBinary(_) | DataType::Decimal256(_, _) => {
- fixed_binary::build_extend(array)
- }
+ DataType::FixedSizeBinary(_) => fixed_binary::build_extend(array),
DataType::Float16 => primitive::build_extend::<f16>(array),
DataType::FixedSizeList(_, _) => fixed_size_list::build_extend(array),
DataType::Union(_, _, mode) => match mode {
@@ -236,7 +235,6 @@ fn build_extend(array: &ArrayData) -> Extend {
fn build_extend_nulls(data_type: &DataType) -> ExtendNulls {
Box::new(match data_type {
- DataType::Decimal128(_, _) => primitive::extend_nulls::<i128>,
DataType::Null => null::extend_nulls,
DataType::Boolean => boolean::extend_nulls,
DataType::UInt8 => primitive::extend_nulls::<u8>,
@@ -258,6 +256,8 @@ fn build_extend_nulls(data_type: &DataType) -> ExtendNulls {
| DataType::Duration(_)
| DataType::Interval(IntervalUnit::DayTime) => primitive::extend_nulls::<i64>,
DataType::Interval(IntervalUnit::MonthDayNano) => primitive::extend_nulls::<i128>,
+ DataType::Decimal128(_, _) => primitive::extend_nulls::<i128>,
+ DataType::Decimal256(_, _) => primitive::extend_nulls::<i256>,
DataType::Utf8 | DataType::Binary => variable_size::extend_nulls::<i32>,
DataType::LargeUtf8 | DataType::LargeBinary => variable_size::extend_nulls::<i64>,
DataType::Map(_, _) | DataType::List(_) => list::extend_nulls::<i32>,
@@ -274,9 +274,7 @@ fn build_extend_nulls(data_type: &DataType) -> ExtendNulls {
_ => unreachable!(),
},
DataType::Struct(_) => structure::extend_nulls,
- DataType::FixedSizeBinary(_) | DataType::Decimal256(_, _) => {
- fixed_binary::extend_nulls
- }
+ DataType::FixedSizeBinary(_) => fixed_binary::extend_nulls,
DataType::Float16 => primitive::extend_nulls::<f16>,
DataType::FixedSizeList(_, _) => fixed_size_list::extend_nulls,
DataType::Union(_, _, mode) => match mode {