You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ST_Intersects pushdown: vortex.geo.intersects kernel, DuckDB lowering, spatial function overrides (#8704)
## Rationale for this change
`ST_Intersects` over native geometry columns currently evaluates inside
DuckDB, exporting every row as `GEOMETRY` just to be tested. This adds a
native `vortex.geo.intersects` kernel and pushes the filter into the
scan: on SpatialBench SF1 (6M points vs a literal polygon), 406ms
(DuckDB filter) / 36.6ms (SPATIAL_JOIN) -> 12.4ms pushed. Part of the
native geospatial lane, following the `ST_Distance`/`ST_DWithin`
pushdown.
## What changes are included in this PR?
- `vortex-geo`: `GeoIntersects` kernel.
- `vortex-duckdb`: lower `st_intersects(native column, GEOMETRY
literal)` like `st_distance`.
- `vortex-duckdb`: shadow spatial's `ST_Intersects` with a non-fallible
copy — DuckDB won't push can-throw filters through the projection every
view-registered table has. The `ST_DWithin` override generalizes into a
table-driven registry (`spatial_overrides.hpp`) shared by registration
and the join-condition restore pass.
Note: drop `GeoDistance`'s columnar point fast paths. `geo` is
row-oriented, so kernels materialize rows regardless; hand-rolled
columnar paths belong in a future columnar geometry compute library
(pushed Q1: 5.4ms -> 12.6ms, still far ahead of unpushed).
---------
Signed-off-by: Nemo Yu <zyu379@wisc.edu>
0 commit comments