Skip to content

Execute owned RowFn outputs over valid rows - #9468

Merged
connortsui20 merged 0 commit into
ct/row-fn-spatial-predicatesfrom
ct/row-fn-owned-valid-rows
Aug 19, 2026
Merged

Execute owned RowFn outputs over valid rows#9468
connortsui20 merged 0 commit into
ct/row-fn-spatial-predicatesfrom
ct/row-fn-owned-valid-rows

Conversation

@connortsui20

Copy link
Copy Markdown
Member

Rationale for this change

Adds direct valid-row execution for owned RowFn outputs before the first nullable deferred owned consumer.

What changes are included in this PR?

Adds Default to OutputElement and uses it only to initialize skipped output positions. Batch execution masks those positions before returning the array.

Owned infallible and deferred visits now execute directly over null-tolerant decoded inputs. Unsupported input encodings can still use the filter-and-scatter fallback from the spatial-distance layer.

What APIs are changed? Are there any user-facing changes?

Extends the unstable OutputElement contract with Default. There are no stable API changes.

@codspeed-hq

codspeed-hq Bot commented Aug 18, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 1.51%

⚠️ Unknown Walltime execution environment detected

Using the Walltime instrument on standard Hosted Runners will lead to inconsistent data.

For the most accurate results, we recommend using CodSpeed Macro Runners: bare-metal machines fine-tuned for performance measurement consistency.

⚡ 7 improved benchmarks
❌ 6 regressed benchmarks
✅ 2001 untouched benchmarks
⏩ 517 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation compact_sliced[(2048, 10)] 207.7 µs 278.3 µs -25.34%
Simulation compact_sliced[(1024, 10)] 127.9 µs 163.9 µs -21.95%
Simulation take[small_m/shuffled/primitive/nonnull/chunks=256/indices=64] 517.4 µs 598.3 µs -13.53%
Simulation take[small_m/shuffled/primitive/nonnull/chunks=2048/indices=64] 685.8 µs 781 µs -12.19%
Simulation cold_misaligned[(16, 64)] 376.6 µs 425 µs -11.39%
Simulation take[small_m/shuffled/primitive/nonnull/chunks=256/indices=16] 227.4 µs 254.3 µs -10.58%
Simulation decompress[u64, (4000, 1024)] 103.6 µs 84.4 µs +22.73%
WallTime words_gather_scalar[65536] 9.4 µs 8.3 µs +13.38%
Simulation null_count_run_end[(10000, 1024, 0.01)] 8 µs 7.2 µs +11.01%
Simulation null_count_run_end[(10000, 256, 0.01)] 8 µs 7.2 µs +11.01%
Simulation null_count_run_end[(32000, 1024, 0.01)] 8 µs 7.2 µs +11.01%
Simulation null_count_run_end[(32000, 256, 0.01)] 8 µs 7.2 µs +11.01%
Simulation compress_fsst[(500, 64, 8)] 580.2 µs 523.8 µs +10.77%

Tip

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


Comparing ct/row-fn-owned-valid-rows (d90f471) with ct/row-fn-spatial-predicates (e0e3fe7)

Open in CodSpeed

Footnotes

  1. 517 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 force-pushed the ct/row-fn-owned-valid-rows branch from 85ef3c9 to d90f471 Compare August 19, 2026 19:54
@connortsui20
connortsui20 force-pushed the ct/row-fn-owned-valid-rows branch from d90f471 to aaf9596 Compare August 19, 2026 21:49
@connortsui20
connortsui20 merged commit aaf9596 into develop Aug 19, 2026
@connortsui20
connortsui20 deleted the ct/row-fn-owned-valid-rows branch August 19, 2026 21:49
@connortsui20
connortsui20 restored the ct/row-fn-owned-valid-rows branch August 19, 2026 21:52
@connortsui20

Copy link
Copy Markdown
Member Author

GitHub marked this PR merged while I reordered the native stack because the rewritten head became an ancestor of its old base. The same layer continues in #9500, now directly above #9450.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant