You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by GitBox <gi...@apache.org> on 2022/06/12 21:36:28 UTC

[GitHub] [arrow-rs] viirya commented on issue #131: Implement support for Decimal with 256 bits of precision.

viirya commented on issue #131:
URL: https://github.com/apache/arrow-rs/issues/131#issuecomment-1153299515

   I'm looking around at Decimal support in C++. Roughly I think we have some subtasks:
   
   - [ ] Implement Decimal128 and Decimal256
   - [ ] Change from i128 to Decimal128 in DecimalArray and DecimalBuilder APIs
   - [ ] Rename DecimalArray to Decimal128Array
   - [ ] Rename DecimalBuilder to Decimal256Builder
   - [ ] Implement Decimal256Builder 
   - [ ] Implement Decimal256Array
   
   and IPC & Parquet works if needed, etc.
   
   In C++ implementations, there are Decimal128 and Decimal256 classes. They are used in Decimal128Builder and Decimal256Builder APIs. So users can construct 128/256-decimal values during building the arrays. Although Decimal128Array and Decimal256Array don't provide APIs to get Decimal128 and Decimal256 values directly now.
   
   Basically in Decimal128 and Decimal256 classes, decimal value is represented in an uint64_t array. I think we can follow this up to have Decimal with 256 bits.
   
   In current Rust implementations, we use i128 in DecimalBuilder and DecimalArray APIs. To maintain consistency on Decimal related APIs, we need to change from i128 to Decimal128 in these APIs.
   
   I think we may also need some works in IPC and Parquet for the new Decimal256 support.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org