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 {