arunkumarucet opened a new pull request, #19128:
URL: https://github.com/apache/pinot/pull/19128

   Follow-up to #19032, addressing the post-merge review comments.
   
   ### Correctness — null rows leaking into negative H3 filters (@KKcorps)
   `H3IndexFilterOperator` and `H3InclusionIndexFilterOperator` build match-all 
/ complement results across all doc IDs. Skipped null geometries (no H3 
posting) were being added to results for `ST_Contains/Within(...)=false`, 
lower-bound-only distance filters, and match-all distance ranges. Both 
operators now exclude the column's null doc IDs (from the null-value vector) 
from those results when query null handling is enabled.
   
   ### Performance — one exception per empty row on reload (@KKcorps)
   `GeoSpatialIndexCreator.toGeometry()` fast-paths the empty default-null byte 
array to `null` instead of throwing (and catching) a `BufferUnderflowException` 
per row. `H3IndexHandler` now decodes each dictionary id at most once (caches 
by dictId) instead of per doc; the raw path uses the same fast-path.
   
   ### Tests
   - `SegmentPreProcessorTest` now covers `V1/V3 × DICTIONARY/RAW` reload paths 
(raw case asserts no dictionary + H3 index present).
   - `H3IndexQueriesTest` adds a null-handling query test asserting null rows 
are excluded from match-all / lower-bound / negative-`ST_Within` results.
   
   **Note on the scan-path comparison requested in review:** the geospatial 
transform functions throw `BufferUnderflowException` on null/empty geometry 
input even under null handling, so the scan path cannot serve as an oracle for 
all-null rows. The new test asserts the exact non-null count instead (which 
fails pre-fix, since match-all previously returned all rows). Happy to also 
harden the scan path in a separate PR if desired.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to