Skip to content

Add compat fixtures for old decimal forms - #10753

Open
connortsui20 wants to merge 4 commits into
developfrom
ct/decimal-compat-fixtures
Open

connortsui20 wants to merge 4 commits into
developfrom
ct/decimal-compat-fixtures

Conversation

@connortsui20

Copy link
Copy Markdown
Member

Summary

Adds compat fixtures for the old decimal forms that current writers still produce: decimals stored narrower than the canonical width of their precision (including values that need the next precision, and high scales), decimals stored wider, nonzero values in null slots, and DecimalByteParts with narrow and wide most significant parts. A release must publish these files before #10701 changes how old decimal arrays read, so that the new read path is checked against real old files.

Changes

A flat fixture can now override build_written() to write a physical form that build() must not return. generate and publish write build_written(), and check compares each published file with build(), which returns canonical arrays only. So the published file keeps the old form while the expected array never changes. The overrides work only while DecimalArray::try_new accepts a non-canonical width. Once it rejects one, the overrides must be deleted, and the files published before that keep the old forms. DESIGN.md documents the hook.

The new tests check that every decimal in build() has the canonical width and that every written column keeps its stored width through a file round trip. That round-trip check reads with the current reader, so the change in #10701 that converts old decimal arrays on read must update it. Until a release publishes the new fixtures, compat.py check --mode last skips them.

🤖 Generated with Claude Code

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>
@codspeed

codspeed Bot commented Oct 23, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 0.45%

4 warnings, 1 note

⚠️ Walltime results may be unreliable

Some benchmarks used the Walltime instrument outside CodSpeed Macro Runners, which can make the results inconsistent.

Learn more about Macro Runners

See affected benchmarks

⚠️ Unable to measure the execution of 2 benchmarks

These benchmarks measured no execution time, so their results are not comparable and count as unchanged. This usually happens when the compiler removes the code under test.

Prevent compiler optimizations

See affected benchmarks

⚠️ 20 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

⚠️ Base and head ran on different runner types

Some benchmarks with significant performance changes were compared across different runner types, so the changes might not come from the code. Run base and head on the same runner type, or use CodSpeed Macro Runners for more stable results.

Learn more about Macro Runners

Open the report in CodSpeed to investigate

ℹ️ 40 benchmarks have no flamegraph

The flamegraph wasn't generated: the symbols of the profiling trace could not be resolved, because no information about the language frames was collected.

See affected benchmarks

⚡ 3 improved benchmarks
❌ 6 regressed benchmarks
✅ 2399 untouched benchmarks
⏩ 12 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
❌ CPU Simulation test_scan_filter_to_arrow_array[int_float] 3.5 ms 4.1 ms -13.65%
❌ Walltime starts_with_avx512[8, VarBin] 39.5 µs 44.4 µs -10.9%
❌ CPU Simulation test_repeated_scan_filter[int_float] 3.4 ms 3.9 ms -10.9%
❌ CPU Simulation test_repeated_scan_filter[int] 2.4 ms 2.7 ms -10.43%
❌ Walltime words_gather_dispatch_neon[65536] 1.8 µs 2 µs -10.21%
❌ CPU Simulation test_scan_filter_to_arrow_array[int] 2.5 ms 2.8 ms -10.12%
⚡ CPU Simulation bench_compare_primitive[(10000, 32)] 97 µs 72.9 µs +33.1%
⚡ CPU Simulation chunked_dict_primitive_canonical_into[f64, (1000, 1000, 10)] 191.7 µs 151.5 µs +26.5%
⚡ Walltime starts_with_avx2[8, VarBin] 46.9 µs 40.8 µs +15.1%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing ct/decimal-compat-fixtures (b33287c) with develop (3974ee0)

Open in CodSpeed

Footnotes

  1. 12 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

@connortsui20
connortsui20 marked this pull request as ready for review October 23, 2026 20:57
@connortsui20

Copy link
Copy Markdown
Member Author

honestly I have no idea if these changes are correct, am not familiar with how these fixtures are supposed to work

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/chore A trivial change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant