Repository navigation
Conversation
Signed-off-by: Daniel King <dan@spiraldb.com>
Merging this PR will degrade performance by 2.99%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ ℹ️ | Simulation | test_scan_filter_to_arrow_array[int_float] |
3.5 ms | 4.1 ms | -13.81% |
| ❌ |
Simulation | test_repeated_scan_filter[int] |
2.5 ms | 2.8 ms | -13.04% |
| ❌ |
Simulation | test_scan_filter_to_arrow_array[int] |
2.5 ms | 2.9 ms | -12.57% |
| ❌ ℹ️ | Simulation | test_repeated_scan_filter[int_float] |
3.4 ms | 3.9 ms | -11.07% |
| ⚡ ℹ️ | Simulation | test_repeated_scan_scalar_at[int_float] |
486.7 µs | 394.2 µs | +23.48% |
| ⚡ | WallTime | filter_neon[80] |
2.9 µs | 2.5 µs | +15.82% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing danking:dk/fix-empty-nested-list-writes (d54e60f) with develop (18aebea)
Summary
Writing
list<list<int32>>rows containing only empty or null outer lists fails withListLayoutStrategy needs at least one chunkwhen structural list layouts are enabled. This reproduces in PyVortex 0.86.1 and 0.88.0 withVORTEX_EXPERIMENTAL_LIST_LAYOUT=1.Changes
Handle an empty list stream before spawning child writers by returning the same typed zero-row chunked layout used by the flat writer. Pass the first chunk explicitly into the nonempty transposition path, preserving its sequence ID, bounded streaming, and existing layout behavior.
Add file write/read regression cases for empty lists, nullable empty lists, all-null lists, and mixed empty/null rows. Replace the old empty-stream rejection test with nullable/nonnullable dtype and row-count checks.
Validation
develop(18aebea) with the reported error.cargo nextest run --locked -p vortex-file -p vortex-layout -E 'test(nested_) | test(writer_empty_chunks) | test(layouts::list::writer::tests)'nightly-2026-09-10rustfmt;git diff --checkpasses.Implemented with OpenAI Codex assistance.