feat(vortex-geo): per-row 2-D AABB compute primitive#8831
feat(vortex-geo): per-row 2-D AABB compute primitive#8831HarukiMoriarty wants to merge 2 commits into
Conversation
flatten_coordinates and geometries read/decode row storage directly, so they require null-free input; note that callers filter null rows first. Signed-off-by: Nemo Yu <zyu379@wisc.edu>
Merging this PR will not alter performance
Comparing Footnotes
|
Polar Signals Profiling ResultsLatest Run
Previous Runs (2)
Powered by Polar Signals Cloud |
|
Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.845x ✅, 2↑ 0↓)
datafusion / parquet (0.813x ✅, 2↑ 0↓)
duckdb / vortex-file-compressed (0.997x ➖, 0↑ 0↓)
duckdb / parquet (0.961x ➖, 0↑ 0↓)
No file size changes detected. |
Adds vortex_geo::bounds::aabbs_2d, decoding a native geometry column to per-row (min, max) corner pairs for row-oriented consumers, e.g. bulk-loading an in-memory R-tree in a spatial-join operator. Deliberately an internal compute primitive rather than a scalar function: no registration, no SQL name, and no columnar Rect output, since the consumer reads the boxes row by row. A null row yields None just like an empty geometry (no box: it matches nothing in a spatial join). Null rows are filtered out before decoding, honoring the decode helpers' null-free precondition, and the boxes are woven back into row order. 2-D only. Columnar consumers keep the Rect extension type, and the GeometryAabb aggregate remains the whole-column box. Signed-off-by: Nemo Yu <zyu379@wisc.edu>
488a97c to
0c8823f
Compare
What
Adds
vortex_geo::bounds::aabbs_2d: decode a native geometry column and return each row's 2-D axis-aligned bounding box as a(min, max)pair of[x, y]corners, one iterator item per row.This is an internal compute primitive, deliberately not a scalar function. The consumer is a row-oriented spatial-join operator that bulk-loads an in-memory R-tree (
rstar::RTree::bulk_loadtakes individual objects), so it needs row-shaped corners rather than a columnarRect/geoarrow.boxarray it would only read back row by row. Accordingly: no registration, no SQL name, and nogeo/rstartypes in the public signature.