Repository navigation
Build DecimalByteParts from the canonical decimal array - #10992
connortsui20 wants to merge 4 commits into
Conversation
Merging this PR will degrade performance by 10.1%1 warning
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing Footnotes
|
d918e63 to
883898f
Compare
883898f to
53dd750
Compare
53dd750 to
ee8c55e
Compare
ee8c55e to
c07e3f0
Compare
c07e3f0 to
4835d5f
Compare
421beab to
754edcb
Compare
754edcb to
bae1c1a
Compare
aac924d to
bde9af6
Compare
7329bc1 to
89876f7
Compare
1a0701d to
c9ebb01
Compare
c9ebb01 to
aa5461c
Compare
aa5461c to
f814097
Compare
f814097 to
9b15bfe
Compare
9b15bfe to
616db28
Compare
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
616db28 to
3ce38db
Compare
|
I have been redesigning this, so this is no longer the change I want to make. |
Summary
The DecimalByteParts scheme narrowed the decimal leaf itself with
narrowed_decimal, which breaks the rule that every decimal leaf has the canonical width of its precision.narrowed_decimalalso counted null slots, so a large value in a null slot could force lower parts that the precision does not allow, which #10905 now rejects. Choosing the split from the valid values of the canonical array avoids both problems.Changes
Only an MSP without lower parts narrows, so the multipart output does not change. The v1 format cannot carry lower parts, so in v1 mode a precision 39 to 76 column whose values need more than 64 bits is written as a plain
i256leaf instead of a narrowedi128one. That cost is accepted untilvortex.widenand DecimalByteParts v2 entercore(#10733). The golden corpus pins this and the one other output change: ignoring null payloads givesdecimal_null_slot_valuesani32MSP instead ofi64.API Changes
split_decimaltakes an explicit lower-part count fromlower_part_count, andnarrowed_decimalis removed, since this scheme was its only caller.