It seems my attachment didn't work.... Workload Op BID64 / BD64 BID128 / BD128 BID256 / BD256 integer add 4.7 / 20.9 (0.22x) 7.8 / 17.5 (0.45x) 9.3 / 19.8 (0.47x) integer mul 26.0 / 26.1 (1.00x) 77.9 / 156.6 (0.50x) 324 / 339 (0.96x) integer div 23.2 / 34.7 (0.67x) 197 / 155 (1.27x) 323 / 335 (0.96x) mixed add 11.2 / 41.7 (0.27x) 116 / 88 (1.32x) 160 / 167 (0.96x) mixed mul 14.4 / 12.2 (1.18x) 29.4 / 61.7 (0.48x) 127 / 129 (0.98x) mixed div 26.0 / 41.8 (0.62x) 184 / 187 (0.98x) 374 / 350 (1.07x) full add 10.2 / 50.9 (0.20x) 88 / 117 (0.75x) 151 / 224 (0.67x) full mul 26.9 / 30.9 (0.87x) 119 / 180 (0.67x) 349 / 363 (0.96x) full div 26.7 / 28.8 (0.93x) 242 / 182 (1.33x) 354 / 354 (1.00x)
________________________________ From: Serge Rielau <[email protected]> Sent: Thursday, August 27, 2026 12:57 PM To: [email protected] <[email protected]> Cc: Thomas Kissinger <[email protected]> Subject: Re: [VOTE] SPIP: Add the DECFLOAT data type Thomas, Dongjoon, I stand corrected on last year's feedback. You (Thomas) were there, I was not. So my information was second hand. I agree with Dongjoon, that Spark should have a pure Java solution which does not depend on third party libraries. It is my understanding that, while BigDecimal is portable, it has a restrictive license. I have taken the liberty of porting the open source libbid library to Java - to the extend needed to do benchmarking - and am attaching the findings. For kicks, I also extended support to DECFLOAT(70), so we can project performance for larger precision. I do not want to overstate the effort. Consider it a prototype to gauge complexity and estimate performance, I’ll happily share the code and harness. It is my understanding that Spark thrives to be an open system which does not have favorite datasources. As such Spark should, wherever possible, bend towards being least restrictive. Adopting the semantic limitations of BigDecimal constitutes a one-way door. It means Spark cannot, by design, operate one some numerical data from specific datasources or specific applications. Cheers Serge [Screenshot 2026-08-26 at 11.36.59 PM.png] On Aug 25, 2026, at 2:06 PM, Thomas Kissinger via dev <[email protected]> wrote: Hi Serge, Let me briefly introduce myself. I co-authored last year’s Parquet DECFLOAT proposal and currently participate in the renewed discussion of a similar type on the Parquet dev list: https://lists.apache.org/thread/5kp1bl2czz45wflydq2qzs3nld518lox https://lists.apache.org/thread/p62ns0qmyko331crhnxxdoy25mdm4bnz I do not think this is a chicken-and-egg problem. As I understood the feedback last year, the concern was not that an open-source engine had to implement DECFLOAT before Parquet could proceed. The concern was that DECFLOAT appeared to be a niche type, and standardizing a new Parquet type required stronger evidence of its importance and broader demand. That concern is much less applicable today, and this Spark SPIP provides further evidence of the type’s relevance. IEEE standardization is valuable, but it should not be confused with broad implementation support. Direct support for IEEE decimal floating-point remains limited across mainstream language runtimes. Decimal128 itself is limited to 34 digits. Wider formats derived from the generalized layout currently lack the same implementation ecosystem; the cited Intel and Boost implementations stop at decimal128. The SPIP is perhaps the clearest demonstration of this gap in Java. Java has no standard value type implementing complete IEEE decimal128 semantics, and the SPIP does not identify an established pure-Java implementation. It therefore leans toward JNI calls into libbid for arithmetic, introducing platform-dependent native binaries into Spark’s arithmetic path. Java already provides the mature and extensively used java.math.BigDecimal, with arbitrary-precision finite decimal arithmetic. It is an important portable implementation that should be considered. It supports precision of 38 digits and beyond, aligning more naturally with the established SQL numeric ecosystem than a 34-digit type. The latter can cause problems in areas such as type coercion for joins, as Shrirang already pointed out during the discussion. I agree that Spark’s runtime representation need not match Parquet’s physical encoding or cover its complete domain. However, their semantic models and conversion contract should be well aligned. Precision, range, cohorts, special values, and round-trip guarantees should not be decided independently and reconciled afterward. My recommendation would therefore be to reach agreement on the Parquet type and its requirements first, and then base the Spark SPIP’s storage mapping on that stable contract. I, of course, leave it to you and the other SPIP authors to decide whether that warrants pausing or restructuring the current proposal. Please let us know how you plan to proceed. Best, Thomas From: Serge Rielau <[email protected]<mailto:[email protected]>> To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Cc: Stefan Kandic <[email protected]<mailto:[email protected]>> Bcc: Date: Tue, 25 Aug 2026 16:44:08 +0000 Subject: Re: [VOTE] SPIP: Add the DECFLOAT data type Russell, I think we are facing a chicken egg problem here. One of the objections to the Parquet proposal from last year was that there were no stated needs from Open Source engines. That being said, I think runtime engines and storage play different roles here. Where our discussion on Parquet centers around maximizing what the storage type can accommodate (cohorts, special values, maximum precision, range, etc). The Spark runtime engine should focus on what its users are likely to use, general directive to prefer standards, and a preference to rely on existing, battle hardened libraries. It goes without saying that this SPIP shall rely on the Parquet type. However, it will not need to cover its domain completely, or match its encoding. Cheers Serge On Aug 25, 2026, at 6:56 AM, Russell Spitzer <[email protected]<mailto:[email protected]>> wrote: The discussion thread and design doc seem to only have two people discussing the topic, are we sure there aren't any other comments? I know of some folks who are chiming in on the similar Parquet proposal, and I was wondering if we should get alignment there before adding the type to Spark? On Tue, Aug 25, 2026 at 8:35 AM Shrirang Mhalgi <[email protected]<mailto:[email protected]>> wrote: +1 (non binding) Thank you Uroš. Regards, Shrirang. On Tue, Aug 25, 2026 at 6:24 AM Serge Rielau <[email protected]<mailto:[email protected]>> wrote: +1 (non binding) On Aug 25, 2026, at 5:20 AM, Stefan Kandic via dev <[email protected]<mailto:[email protected]>> wrote: + 1 From: Uroš Bojanić <[email protected]<mailto:[email protected]>> Date: Tuesday, 25 August 2026 at 13:20 To: [email protected]<mailto:[email protected]> <[email protected]<mailto:[email protected]>> Subject: [VOTE] SPIP: Add the DECFLOAT data type Hi all, Discussion regarding DECFLOAT data type has settled, so I'm calling a vote on the SPIP "Add the DECFLOAT data type". The SPIP proposes to add a new Spark SQL data type: DECFLOAT (IEEE 754 decimal64 / decimal128), for base-10 floating-point decimals with per-value exponents. The SPIP document has been updated along the way to address the feedback raised in the doc & discussion thread. DISCUSS thread: https://lists.apache.org/thread/wyfnsj45s3cn95thrgw4oho74zbcc5vm Spark JIRA ID: https://issues.apache.org/jira/browse/SPARK-58820 SPIP document: https://docs.google.com/document/d/1qnLXm0ldHSwPSJs_Q5SzGyyTKMMEqeX5rm8Fh4rvV3E The vote is open for at least the next 72 hours. [ ] +1: Accept the proposal as an official SPIP [ ] +0 [ ] -1: I don't think this is a good idea because... Thank you! Best, Uroš --------------------------------------------------------------------- To unsubscribe e-mail: [email protected]<mailto:[email protected]>
