jiayuasu opened a new issue, #134:
URL: https://github.com/apache/sedona-spatialbench/issues/134

   Follow-up to #131, which adds the geography query suite as SQL and docs 
only. The benchmark harness, the CI matrix and `benchmark/answers/` are 
untouched by it, so the geography queries are defined but never timed or 
verified.
   
   ## Why the two suites need separate answers
   
   `verify_results.py` resolves ground truth per *query*: 
`benchmark/answers/sf<n>/q<n>.parquet`. The geography suite reuses the query 
IDs `q1..q12` but returns **different values for the same IDs** — a 0.45° 
planar radius and a 50 000 m geodesic radius simply select different rows. So 
the answers cannot be shared, and a per-suite (or per-engine) answer path is 
needed rather than a flat per-query one.
   
   Concretely, at SF1: Q1 returns a different 100 rows, Q9's areas are m² 
instead of square degrees, and Q7's `line_distance_m` is a real geodesic length 
rather than degrees divided by `0.000009`. Q2 (541) and Q4 (258 zones, 
identical counts and order) happen to agree with the planar answers, which 
makes them useful cross-checks but does not generalise.
   
   ## Work involved
   
   1. **Runner** — teach `benchmark/run_benchmark.py` to select the suite. 
Either a new engine key (`sedonadb_geography`, which keeps the existing 
`<engine>_<query>_result.csv` dump naming working unchanged) or a `--suite 
{geometry,geography}` flag. `get_sql_queries()` currently hardcodes the two 
geometry dialect classes.
   2. **Answers** — `benchmark/answers/geography/sf{1,10}/q<n>.{csv,parquet}`, 
generated the same way as the existing ones, plus a note in 
`benchmark/answers/README.md` explaining why the two sets differ.
   3. **Verify** — `verify_results.py` needs a per-engine (or per-suite) 
answer-directory mapping, and its `LIMIT_QUERIES` boundary-tie set should be 
re-derived for the geography suite rather than assumed identical.
   4. **CI** — a geography job block in `.github/workflows/benchmark.yml`, 
mirroring the existing per-query matrix. Note the workflow already triggers on 
`spatialbench-queries/**`, so #131 runs the full geometry matrix without 
exercising any of the new SQL.
   5. **Summarize** — `summarize_results.py` has a hardcoded engine list and 
icon map.
   
   `QUERY_COUNT = 12` is duplicated across `run_benchmark.py`, 
`verify_results.py`, `generate_answers.py` and `summarize_results.py`, and the 
CI matrix lists `q1..q12` literally per engine; the geography suite carries 11 
queries (no `ST_KNN` yet — apache/sedona-db#1086, apache/sedona#3178), so 
whichever mechanism is chosen has to tolerate a suite with a gap rather than 
assume a contiguous 1..N.
   
   ## Blocked on
   
   Two SedonaDB defects would corrupt any answers generated today:
   
   - **apache/sedona-db#1084** — Q9 cannot complete: a geography scalar 
function over geography spatial-join output fails with `Array input must not be 
empty`.
   - **apache/sedona-db#1085** — one zone polygon matches points anywhere on 
Earth, inflating Q4, Q6, Q10 and Q11.
   
   See also #133 for committing the notebook's executed outputs, which is 
blocked on the same two.
   


-- 
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]

Reply via email to