)]}'
{
  "log": [
    {
      "commit": "8e44bddd7c9cc2822480d5791e26ff6684e52e54",
      "tree": "a4181be540c6455f41ac54389a288d4439938e73",
      "parents": [
        "064bbb8975c13484b8d69d1eabfb2fd2e5f90742"
      ],
      "author": {
        "name": "Ryu",
        "email": "177669517+ryux1@users.noreply.github.com",
        "time": "Sun Sep 06 20:06:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 06 11:06:29 2026 -0700"
      },
      "message": "docs: standardize image filenames (#145)"
    },
    {
      "commit": "064bbb8975c13484b8d69d1eabfb2fd2e5f90742",
      "tree": "c792cb2ac54ed6b878d6a841dbcb818a5b1608ef",
      "parents": [
        "36c62625dc9c70e425f92862b16d58096ef4f5fe"
      ],
      "author": {
        "name": "James Willis",
        "email": "james-willis@users.noreply.github.com",
        "time": "Mon Aug 31 22:08:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 22:08:28 2026 -0700"
      },
      "message": "Spell the grouped convex hull as ST_Collect_Agg and align the documented queries (#142)\n\n* Spell the grouped convex hull as ST_Collect_Agg and align the documented queries\n\nQ5 computes a convex hull over each customer-month\u0027s dropoff locations. The base class -- documented as the Sedona/Spark SQL dialect -- spelled it as a scalar over a materialized array, ST_Collect(ARRAY_AGG(...)), while SedonaDBSpatialBenchBenchmark overrode Q5 for the sole purpose of spelling it as the native aggregate ST_Collect_Agg. Sedona Spark ships that aggregate too, registered in spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/expressions/st_aggregates.scala as call_udf(\"ST_Collect_Agg\", geometry), so the base dialect can say it directly and SedonaDB needs no override. ARRAY_AGG also builds a full array of geometries per group before ST_Collect runs, where a native aggregate accumulates into one collection incrementally.\n\nDuckDB inherits the base Q5 and DuckDB spatial has no ST_Collect_Agg -- its ST_Collect is a scalar over a GEOMETRY[], and its geometry aggregates are ST_Union_Agg and ST_Envelope_Agg -- so the ARRAY_AGG spelling moves into a DuckDB override rather than disappearing. Each override now sits where the dialect genuinely differs: DuckDB has no ST_Collect_Agg, Databricks has neither and uses ST_Union_Agg, and SedonaDB runs the base suite unmodified. The Databricks comment is reworded to name the function the base now uses; its SQL is untouched.\n\nWith the override gone, SedonaDBSpatialBenchBenchmark had no queries left and is deleted. Its docstring claimed it existed to name the dialect, but dialect() is never called anywhere in the repo -- every mention is a definition, a docstring, or an unrelated local variable, and the harness gets its engine name from a string literal at run_benchmark.py:393 and its display label from separate maps. The class is therefore repointed to the base in the two places that referenced it, print_queries.py\u0027s CLI map (keeping the \"SedonaDB\" key, so `print_queries.py SedonaDB` still works) and run_benchmark.py\u0027s dialect map. This widens the diff into run_benchmark.py, which is otherwise untouched; the class is only deletable because the base now carries the aggregate spelling, so it is a direct consequence of this change rather than an unrelated cleanup. DuckDB and Databricks keep their classes because they still override real queries -- DuckDB q5 and q12, Databricks q5, q7 and q12 -- so only the empty one goes. Verified mechanically: the query dict get_sql_queries(\"sedonadb\") returns is byte-identical before and after, same sha256 over all twelve queries.\n\ndialect() is dead code on the remaining classes too, but that predates this change and is left alone rather than widening scope further.\n\nThis requires Sedona \u003e\u003d 1.8.1 for the base dialect. Measured, one Spark 3.5.3 session per version: 1.7.2 and 1.8.0 reject ST_Collect_Agg with UNRESOLVED_ROUTINE, 1.8.1 and 1.9.1 accept it. Nothing in the repo pins a Sedona version, docs/requirements.txt is an unpinned apache-sedona[db] that resolves to 1.9.1, and there is no Sedona Spark runner in the benchmark harness, so no engine the harness runs is affected. DuckDB in particular is unaffected because it now carries its own override.\n\nThe documented queries had drifted from the executable ones in two ways, both fixed here. Q5 could not run at all: the Queries page and notebooks/queries.ipynb spelled it ST_Collect(ST_GeomFromWKB(...)) inside an sd.sql(...) call, and SedonaDB has no ST_Collect, so it failed at planning time with \"Invalid function \u0027st_collect\u0027\". Q7 ran but multiplied by 111111 where every executable query divides by 0.000009; since 1/0.000009 is 111111.111..., the documented Q7 was off by exactly 1e-6 relative -- not inside the CI tolerance of rtol\u003d1e-6 but exactly on it, its detour_ratio reaching 1.000001e-06 and passing only because numpy\u0027s isclose adds an atol term.\n\nThe divide form is the suite-wide convention and 111111 appeared only in those three doc lines. It is used by the executable SQL (print_queries.py:165,328), by every other engine implementation (geopandas_queries.py:306, spatial_polars.py:331-333, pycanopy_queries.py:260), and by wherobots/benchmark-dashboard. The repo documents it as the convention in docs/geography-queries.md:37 and its table row \"| Unit conversion in SQL | / 0.000009 | none needed |\", and it is structural: the radii 0.45 (50 km), 0.045 (5 km) and 0.0045 (500 m) are all exact multiples of 0.000009.\n\nVerified. The executable SQL each engine runs is unchanged except the base dialect\u0027s Q5: comparing every query before and after with comments and whitespace normalized away, SedonaDB, DuckDB and Databricks are all unchanged, and DuckDB\u0027s Q5 is byte-identical to what it ran before. On real SF1 data all three spellings -- the new base ST_Collect_Agg, the old ARRAY_AGG, and the Databricks ST_Union_Agg form run through Sedona Spark, which also has that function -- return bitwise identical results and match benchmark/answers/sf1/q5.csv, as do SedonaDB 0.4.1 and DuckDB 1.5.5 running their own dialects. All twelve documented queries were then executed against SedonaDB 0.4.1 at SF1 over all six tables, through both the documented `import sedona.db` and the standalone sedonadb package; all twelve run and all twelve match the committed answers under rtol\u003d1e-6 with no atol slack, which Q7 previously did not. Q7 is now bit-for-bit identical to answers/sf1/q7.csv.\n\nStored notebook outputs were handled per cell. Q5\u0027s is left exactly as it was, because re-executing the corrected cell reproduces it byte for byte -- the committed output was already the right data attached to code that could not produce it. Q7\u0027s genuinely changed, since the constant moves the values in the sixth significant figure, so it is regenerated from a real execution of the corrected cell; the new values match answers/sf1/q7.csv exactly where the old ones did not.\n\nOnly the aggregate spelling and the metre constant change. SELECT lists, GROUP BY, HAVING, ORDER BY and LIMIT are untouched, the Chinese page gets the identical SQL edits with its translated comments left alone except the one stating the conversion, and benchmark/answers/ is not modified.\n\nSigned-off-by: James Willis \u003cjames@wherobots.com\u003e\n\n* Refresh the Q7 sample output for the / 0.000009 conversion\n\nThe SQL was aligned to divide by 0.000009 but the rendered tables still\ncarried values computed under * 111111 (off by the 1.000001 ratio between\nthe two constants). Copied verbatim from the re-executed notebook cell.\n\n---------\n\nSigned-off-by: James Willis \u003cjames@wherobots.com\u003e"
    },
    {
      "commit": "36c62625dc9c70e425f92862b16d58096ef4f5fe",
      "tree": "9839201ff7a6bd815893912697db32d0b3284f9e",
      "parents": [
        "b9221a9c4b02b10db20611d79b4019d2b3c4b68e"
      ],
      "author": {
        "name": "Pranav Walimbe",
        "email": "99782823+pranav-walimbe@users.noreply.github.com",
        "time": "Fri Aug 28 00:07:33 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 00:07:33 2026 -0700"
      },
      "message": "Ops: updates to PyCanopy query code (#139)\n\n* perf: optimize PyCanopy q2 and q4 reads\n\n* perf: sync PyCanopy benchmark queries"
    },
    {
      "commit": "b9221a9c4b02b10db20611d79b4019d2b3c4b68e",
      "tree": "6e65e0a5c5abf4d9bad2fc548c06f8b05e183b61",
      "parents": [
        "2b5a1254322a840da70b4ee66e02ee9c9b8d36ea"
      ],
      "author": {
        "name": "Pranav Walimbe",
        "email": "99782823+pranav-walimbe@users.noreply.github.com",
        "time": "Sun Aug 16 22:33:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 22:33:23 2026 -0700"
      },
      "message": "Docs: updated docs to include pycanopy (#138)"
    },
    {
      "commit": "2b5a1254322a840da70b4ee66e02ee9c9b8d36ea",
      "tree": "405b3e934c9f7d6d0dcd31a9f681e9ed34105d9a",
      "parents": [
        "2c88536a24b3c34c13cc93a465e9e7c199128833"
      ],
      "author": {
        "name": "Nemo Yu",
        "email": "83347615+HarukiMoriarty@users.noreply.github.com",
        "time": "Fri Aug 14 14:33:26 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 11:33:26 2026 -0700"
      },
      "message": "Upgrade to Arrow/Parquet 58 and DataFusion 54.1 (#137)\n\nDependency changes:\n- arrow, parquet, arrow-csv: 56 -\u003e 58\n- datafusion: 50.2 -\u003e 54.1\n- object_store: 0.12.4 -\u003e 0.13.2\n- drop the direct arrow-array/arrow-schema deps in favour of the arrow\n  crate\u0027s re-exports, so the Arrow version is declared in one place\n\nDataFusion 54.1 depends on Arrow 58, so targeting 58 rather than 59 keeps\na single Arrow version in the dependency graph.\n\nAPI updates required by those releases:\n- parquet: get_column_writers (deprecated in 57) -\u003e ArrowRowGroupWriterFactory.\n  The factory borrows a live SerializedFileWriter, so the writer is now\n  built up front and moved into the blocking writer task, and row groups\n  are enumerated to supply the row group index the factory requires.\n- parquet: set_max_row_group_size -\u003e set_max_row_group_row_count.\n- object_store: put/get moved to the ObjectStoreExt trait.\n\nParquet output is unchanged. Geometry columns carry no Arrow extension\nmetadata, so Arrow 58\u0027s native GEOMETRY logical type is not engaged and\nWKB is still written as plain BYTE_ARRAY.\n\nSigned-off-by: Nemo Yu \u003czyu379@wisc.edu\u003e\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "2c88536a24b3c34c13cc93a465e9e7c199128833",
      "tree": "95b550920fdea66519528738bf8005ca200ce97a",
      "parents": [
        "00d9472337b8b41c385d104a2c80a07f3c7c2942"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Aug 01 20:36:58 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 20:36:58 2026 -0500"
      },
      "message": "Bump the github-dependencies group with 2 updates (#136)\n\nBumps the github-dependencies group with 2 updates: [actions/setup-python](https://github.com/actions/setup-python) and [j178/prek-action](https://github.com/j178/prek-action).\n\n\nUpdates `actions/setup-python` from 6 to 7\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/v6...v7)\n\nUpdates `j178/prek-action` from 2.0.5 to 2.0.6\n- [Release notes](https://github.com/j178/prek-action/releases)\n- [Commits](https://github.com/j178/prek-action/compare/e98a699c41eb69ab013a45817a0406469a748f8d...5337cb91e0fa35a7ff31b9ca345126d8bbbcdf16)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-python\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n- dependency-name: j178/prek-action\n  dependency-version: 2.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: github-dependencies\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "00d9472337b8b41c385d104a2c80a07f3c7c2942",
      "tree": "a1cd0409c2f6d0d7565a800e2ad83e89345f2f6c",
      "parents": [
        "a165bea4ce830e28b64643ed037e20f61e639cfe"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Aug 01 19:54:49 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 19:54:49 2026 -0500"
      },
      "message": "Bump https://github.com/codespell-project/codespell (#135)\n\nBumps the pre-commit-hooks group with 1 update: [https://github.com/codespell-project/codespell](https://github.com/codespell-project/codespell).\n\n\nUpdates `https://github.com/codespell-project/codespell` from v2.4.2 to 2.4.3\n- [Release notes](https://github.com/codespell-project/codespell/releases)\n- [Commits](https://github.com/codespell-project/codespell/compare/2ccb47ff45ad361a21071a7eedda4c37e6ae8c5a...57b21406f092110c18776e39b0bda50d37c945c8)\n\n---\nupdated-dependencies:\n- dependency-name: https://github.com/codespell-project/codespell\n  dependency-version: 2.4.3\n  dependency-type: direct:production\n  dependency-group: pre-commit-hooks\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a165bea4ce830e28b64643ed037e20f61e639cfe",
      "tree": "41c426520365175857b9fd56ceb164eb8ff65a18",
      "parents": [
        "68fbe5d648f58b7f1ef3895cbb7a15e87d3097e4"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Sun Jul 26 22:19:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 22:19:06 2026 -0700"
      },
      "message": "Add geography variants of the SpatialBench queries (#131)\n\nAll 12 SpatialBench queries are geometry: WKB columns are decoded with\nST_GeomFromWKB, predicates use planar edges, and thresholds are angles in\ndegrees converted by hand (0.45 \"\u003d 50 km\", / 0.000009 \"\u003d 1 m\"). Those factors\nonly hold near the equator along longitude, so a degree-based radius is a\ndifferent real-world shape in every part of a dataset that spans latitudes\n-56 to 78 degrees. Areas come out in square degrees.\n\nGeography types interpret edges as geodesics and return metric units, so add the\ngeography counterpart of the suite:\n\n- notebooks/geography-queries.ipynb defines all 12 queries, each with its\n  real-life scenario, the spatial characteristics it exercises, and its SQL.\n  Structured to mirror notebooks/queries.ipynb.\n- docs/geography-queries.md is generated from that notebook with nbconvert, the\n  same way docs/queries.md is; docs/geography-queries.zh.md mirrors it.\n- spatialbench-queries/print_geography_queries.py carries 11 of the queries for\n  use outside the notebook. Q12 is defined but neither carried in the module nor\n  executed in the notebook: it is a K-nearest-neighbour join and ST_KNN has no\n  geography form yet.\n\nThresholds are metres, areas are square metres, and Q7 drops the degree\nconversion factor entirely. Output column names, ORDER BY clauses, LIMITs and\ntiebreakers are unchanged from the geometry suite.\n\nThe geography base class deliberately does not subclass SpatialBenchBenchmark,\nwhich would silently reintroduce the geometry q12; it borrows only the\nquery-collection reflection. As in the geometry suite, Q5 is the one query with a\nSedonaDB-specific spelling (ST_Collect_Agg vs ST_Collect(ARRAY_AGG(...))).\n\nVerified by executing the suite at SF0.1 and SF1: Q2 matches the committed\ngeometry answer exactly (541), Q3 matches its row count (22), Q4 reproduces the\ngeometry answer row for row (258 zones, same counts, same order), and Q9\u0027s\nself-join finds the same 37 building pairs. Q1, Q5, Q7 and Q8 return full result\nsets with ST_Length and ST_Area in metres and square metres.\n\nThe benchmark harness, CI matrix and ground-truth answers are untouched: the two\nsuites need separate answer sets, since a 0.45 degree planar radius and a 50 000 m\ngeodesic radius select different rows by construction.\n\nThe mkdocs nav labels the two pages \"SpatialBench Queries (Geometry)\" and\n\"SpatialBench Queries (Geography)\" so the pair reads as one set. This renames\nthe existing geometry entry, which was \"Queries\" in the main nav and\n\"SpatialBench Queries\" in the framework block, and updates the zh translations\nto match.\n\nNotebook cells carry ids, as nbformat 4.5 requires and as notebooks/queries.ipynb\nalready does; without them nbconvert emits MissingIDFieldWarning and warns that\nit will become an error. The link to the geometry suite uses the published URL\nrather than a relative queries.md, which resolves to a nonexistent\nnotebooks/queries.md when read from the notebook; the zh page points at the zh\nbuild of that page."
    },
    {
      "commit": "68fbe5d648f58b7f1ef3895cbb7a15e87d3097e4",
      "tree": "5894ec4e178e839ac7b1a6805b1aea1d04ca9471",
      "parents": [
        "2add193f791efe599a05e407100c8b73c210cb77"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Sat Jul 25 23:37:43 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 23:37:43 2026 -0700"
      },
      "message": "Correct the region Q3 describes (#132)\n\nQ3 filters trips against this ring:\n\n  POLYGON((-111.9060 34.7347, -111.6160 34.7347, -111.6160 35.0047,\n           -111.9060 35.0047, -111.9060 34.7347))\n\nwhich is described everywhere as a \"10km bounding box\" giving a \"15km radius\"\nonce the 0.045 degree buffer is added. Neither figure is right. The ring spans\n0.290 degrees of longitude by 0.270 of latitude, and at its center latitude\n(34.8697 N) that is about 26.5 km east-west by 30 km north-south -- roughly 13\nand 15 km from the center along each axis, with the corners about 20 km out, or\n25 km once the buffer is added. The \"10km box\" label understates the region by\nabout 3x.\n\nOnly comments and prose change; the polygon literal, the thresholds and the\nresult sets are untouched, so the committed answers still apply.\n\nUpdated in the SQL source of truth (print_queries.py), the three dataframe\nimplementations that repeat the claim in their docstrings, the notebook, and the\nrendered docs in both languages. The buffer\u0027s existing \"~5km\" annotation for\n0.045 degrees is left alone: it is accurate in latitude and follows the same\ndegree-to-kilometre convention the rest of the geometry suite uses."
    },
    {
      "commit": "2add193f791efe599a05e407100c8b73c210cb77",
      "tree": "1f8984cfa1a63481243e8074596f6a1e08a2d207",
      "parents": [
        "c41786124783bbc1ea8e65669fe7ecb6f89f6aef"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Fri Jul 24 09:11:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 09:11:01 2026 -0700"
      },
      "message": "Install Rust toolchain with rustup to fix Rust workflow startup failure (#130)\n\nThe Rust workflow has failed at startup on every run since 2026-07-01: the\ndtolnay/rust-toolchain action is not on the ASF GitHub Actions allowlist, so the run\nis blocked before any job starts (GitHub reports a generic \"workflow file issue\").\nThe sibling apache/sedona-db project\u0027s Rust CI avoids that action and installs the\ntoolchain with rustup — while still using Swatinem/rust-cache, which is allowlisted.\n\nMirror that pattern: each job installs stable via `rustup toolchain install stable\n--no-self-update` + `rustup default stable` (the lint job also adds rustfmt and\nclippy). rustup is preinstalled on ubuntu-latest, so this is a drop-in replacement;\nSwatinem/rust-cache and everything else are unchanged."
    },
    {
      "commit": "c41786124783bbc1ea8e65669fe7ecb6f89f6aef",
      "tree": "a78942b7adfcb2937af3228ae85e4f4074d5940a",
      "parents": [
        "acf21b55dd67bdee0250aea1fa815e28a394a2d2"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Fri Jul 24 08:49:10 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 08:49:10 2026 -0700"
      },
      "message": "Add SF10 ground-truth answers (#129)\n\n* Dump normalized results unconditionally when --result-dir is set\n\nDumping reuses each query\u0027s timed run (no extra execution), so gating it on\ncommitted answers already existing served no purpose and prevented bootstrapping\nanswers for a new scale factor. Always dump when --result-dir is given; the verify\njob independently skips scale factors that have no committed answers. Drops the now\nunused --answers-dir option.\n\nPart of #126.\n\n* Free disk space before running each benchmark query\n\nSF10 queries can spill several GB to disk; on the standard runner SedonaDB\u0027s Q5\n(convex-hull aggregation) failed with \"No space left on device\". Reclaim space from\npreinstalled toolchains (dotnet, android, CodeQL, ...) before each query so\ndisk-heavy SF10 queries can run.\n\nPart of #126.\n\n* Add SF10 ground-truth answers\n\nCommits the SedonaDB reference results for scale factor 10\n(benchmark/answers/sf10/q{1..12}.{parquet,csv}), produced by the benchmark run in\nCI (the --result-dir dumps), not on a local machine. The type-faithful parquet is\nreconstructed from the CI csv dumps using the SF1 schema (same queries, same\ncolumn types across scale factors).\n\nSF10 was generated with SedonaDB 0.3.0. SedonaDB 0.4.0 cannot compute Q5 at SF10 —\nits grouped convex-hull aggregation spills \u003e100 GB and aborts\n(apache/sedona-db#1077) — while 0.3.0 computes it in modest space. The two versions\nproduce identical results for the other 11 queries at SF10, so the values are\nversion-independent; only Q5\u0027s feasibility differs.\n\nThe correctness verify job cross-checks all engines against these answers.\n\nPart of #126.\n\n* Address review: duration tolerance, dump robustness, conditional disk purge\n\n- Duration precision (verify_results.py): SedonaDB truncates interval averages to\n  milliseconds, so a duration column (`*_seconds`) can differ from a full-precision\n  engine by up to ~1 ms — e.g. SF10 Q3 answer 7.666 vs 7.666666667. Apply a ~1 ms\n  absolute tolerance to duration columns; other float metrics keep the tight\n  default. No fixtures regenerated (the values are the oracle\u0027s).\n\n- Dump robustness (run_benchmark.py): now that dumping is unconditional, remove any\n  stale dump for the queries being run before writing (dump filenames aren\u0027t\n  scale-scoped, so a reused --result-dir could otherwise mix scales), and fail the\n  run if result capture was requested (--result-dir) but a successful query produced\n  no dump — so a bootstrapping run can\u0027t pass silently on a failed capture.\n\n- Conditional disk purge (benchmark.yml): the reclaim step now runs only for scale\n  factors \u003e\u003d 10 (it added ~1 min to every SF1 job for no benefit) and runs before\n  cache restore and dependency install so the space is available to them too.\n\nPart of #126."
    },
    {
      "commit": "acf21b55dd67bdee0250aea1fa815e28a394a2d2",
      "tree": "4fecd36ac5d4bad79088e2bafdd08dd585d719b0",
      "parents": [
        "02572d236839e91a02625ea7c0b0e607452c3556"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Fri Jul 24 00:47:57 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 00:47:57 2026 -0700"
      },
      "message": "Verify engine correctness in a downstream job that reuses benchmark results (#128)\n\n* Verify engine correctness in a downstream job that reuses benchmark results\n\nAdds a correctness check that reuses the benchmark run instead of re-executing\nqueries in a second workflow: the benchmark jobs already run every\n(engine, query, scale factor), so they now also dump each result, and a\ndownstream verify job compares those dumps to the committed ground-truth answers\n(benchmark/answers/sf\u003csf\u003e). A mismatch — or a result that reported success but is\nmissing — fails CI.\n\nrun_benchmark.py:\n  - New --result-dir: reuse the timed run\u0027s result (no extra execution) to write\n    \u003cengine\u003e_\u003cquery\u003e_result.csv. DuckDB captures column names during the timed run\n    so its fetchall result becomes a DataFrame without re-running; other engines\n    reuse the DataFrame they already return. Normalizes durations -\u003e seconds,\n    decimals/object-decimals -\u003e float, timestamps -\u003e datetime. Writes csv only, so\n    no pyarrow filesystem is touched inside a SedonaDB worker; pandas/numpy stay out\n    of the module top to preserve the import-order isolation. Gated on committed\n    answers existing for the scale factor, so SF10 (no answers yet) does no extra\n    work.\n\nbenchmark/verify_results.py (new, engine-free):\n  - Derives comparison semantics from the canonical answer schema (the type-faithful\n    q\u003cn\u003e.parquet): integer keys/counts, timestamps and strings match exactly, and\n    only floating-point metrics use rtol/atol.\n  - The LIMIT-boundary-tie exception is restricted to eligible capped LIMIT queries\n    and only tolerates a final-row identity swap where every float ordering metric\n    still ties within tolerance — never a single-row/non-LIMIT query or a numeric\n    difference.\n  - Result-presence semantics: reported-success-but-no-dump fails (a silent dump\n    failure); explicit timeout/error/OOM is tolerated; a framework that produced no\n    record at all (its whole benchmark job failed, e.g. an install error) is shown\n    as \"no result\" but does not fail the gate — it left no answer that could be\n    wrong, and its own red job surfaces it.\n  - Robust by construction: a result that cannot be read/compared becomes a warning\n    cell, never a crash, so one broken framework can\u0027t take down the summary.\n  - Renders a per-engine correctness table to the job summary and exits non-zero on\n    any real failure.\n\nbenchmark.yml:\n  - Engine jobs pass --result-dir and upload the result csv alongside the timing\n    json; pandas added to the Spatial Polars / PyCanopy jobs.\n  - New verify-correctness job: needs the benchmark jobs (runs even if some failed),\n    installs pandas + pyarrow, runs verify_results.py, always publishes the table to\n    the job summary (with a fallback note if none was produced), and fails CI on a\n    mismatch.\n\nPart of #126.\n\n* Fix engine query implementations flagged by the correctness check\n\nThe correctness verification (verify_results.py) surfaced five (engine, query)\nresults that diverged from the SedonaDB/DuckDB ground-truth answers. All are real\nimplementation bugs, not tolerance issues:\n\nQ5 was missing a whole column. GeoPandas and PyCanopy computed the repeat-customer\ntrip count for the `\u003e 5` filter but dropped it from the output; the reference (and\nthe answer) return it as `dropoff_count`. Add it to the projection.\n\nSpatial Polars Q7 used the wrong metre/degree constant. It multiplied the\nstraight-line degree distance by 111111, while the reference divides by 0.000009\n(\u003d x111111.111...); the ~1e-6 gap tripped the tolerance. Use /0.000009 to match the\nreference and the other engines.\n\nPyCanopy Q6/Q10 lost precision on avg_distance. t_distance is decimal(15,5), and a\ndecimal mean stays at scale 5 and rounds the result (e.g. 0.00086 vs 0.000865);\nSedonaDB and the other engines average in float. Cast t_distance to float before\naveraging.\n\nVerified at SF1 against the committed answers: GeoPandas Q5, Spatial Polars Q7 and\nPyCanopy Q10 now match. PyCanopy Q5/Q6 use the same fixes (column projection and the\nidentical float cast) but need PyCanopy 0.3.3 (Linux-only wheel) to run, so they are\nverified by CI rather than locally.\n\nPart of #126.\n\n* Harden the correctness check against review feedback\n\nFour fixes so the correctness gate cannot pass without genuinely verifying results:\n\n- Fail when nothing was verified. A failed artifact download now fails the verify\n  job (the download step no longer swallows errors), and verify_results.py fails if\n  zero (engine, query) pairs were actually compared — so a missing/empty results set\n  can\u0027t pass silently. A single framework that produced no result is still reported\n  (❔) without failing, so the summary and the gate both survive one broken engine.\n\n- Treat an unreadable result as a failure. A result file that exists but cannot be\n  read/compared is now a failing verdict (was reported but non-failing); the summary\n  still renders (crash-safe per cell). run_benchmark.py writes each dump to a temp\n  file and atomically replaces the destination, so a process killed mid-write never\n  leaves a partial csv.\n\n- Remove Q8 from the LIMIT-boundary-tie tolerance. Q8 orders by an integer count\n  with an integer-key tiebreaker, so its ordering is deterministic and must match\n  exactly; the boundary exception only guards float ordering ties and would otherwise\n  accept an arbitrary final-row count.\n\n- Keep result serialization outside the query timeout. The worker queues its timing\n  result before serializing; if the process is still alive at the timeout, the runner\n  checks the queue and, if the query already finished, gives serialization a bounded\n  grace instead of charging it to the query timeout.\n\nPart of #126."
    },
    {
      "commit": "02572d236839e91a02625ea7c0b0e607452c3556",
      "tree": "8c5ea063459ab0c0e1843ee19187494e74c5ef2d",
      "parents": [
        "b5dc5c955e792c8e2b3762856fd14cb5e04d954d"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Wed Jul 22 16:37:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 16:37:15 2026 -0700"
      },
      "message": "Add SF1 ground-truth answers for query correctness testing (#127)\n\n* Add SF1 ground-truth answers for query correctness testing\n\nCommit reference answers for all 12 SpatialBench queries at SF1 in two\nformats: q\u003cn\u003e.parquet (type-faithful canonical, what the harness compares\nagainst) and q\u003cn\u003e.csv (review companion; GitHub renders it and diffs are\nreadable).\n\nThe answers are the output of the canonical SedonaDB dialect (the reference\noracle), independently cross-checked against DuckDB on every query it can\nrun, so they are validated by two engines (11/12 agree within rtol\u003d1e-6).\n\nAnswers are normalized to an engine-neutral form (durations -\u003e seconds with\na _seconds suffix, decimals -\u003e float, timestamps as datetime) and bounded to\n\u003c\u003d100 rows per query (the queries were bounded in #124), keeping the\nfixtures tiny.\n\nDuckDB\u0027s lateral-join Q12 is infeasible at SF1 (no KNN operator), so Q12 is\nnot cross-checked here; it is validated by the KNN-capable engines in the\ncorrectness harness (follow-up).\n\nPart of #126.\n\n* Document the answer sets and the Hugging Face dataset\n\nReference the committed ground-truth answers (benchmark/answers/) in the\nREADME and docs site as the basis for verifying engine correctness, and add\nthe Hugging Face dataset (apache-sedona/spatialbench, scale factors\n0.1/1/10/100) as a way to obtain the benchmark data without building the\ngenerator. Covers the README, the docs landing page, and the queries page\n(EN + zh).\n\nExclude benchmark/answers/ from codespell -- the answers are data with real\nplace and entity names, not prose.\n\nPart of #126.\n\n* Address review feedback\n\n- Q6: average t_distance, aligning the SQL, GeoPandas, and PyCanopy\n  implementations with the docs and Spatial Polars (which already used\n  t_distance); regenerate the Q6 fixtures. The `avg_distance` alias had been\n  computing t_totalamount in three implementations, so valid results would\n  have been rejected. Also drop the internal \"corrected from t_totalamount\"\n  note from the Q6 doc example.\n- RAT: add the ASF license header to benchmark/answers/README.md and exclude\n  the generated CSV/Parquet fixtures in rat_exclude_files.txt.\n- Docs: replace `huggingface-cli download` with `hf download`\n  (huggingface-hub v1 removed the huggingface-cli entrypoint).\n- Docs and notebook: load data via a DATA_DIR that handles both the flat CLI\n  output and the partitioned Hugging Face layout, so the advertised download\n  works end to end.\n- Answers README: document Q4 as the one query not capped at 100 rows\n  (one row per zone over the top-1000 tipped trips).\n\n* Address Copilot review: fix answers layout paths, note Q12 not DuckDB-checked\n\n- benchmark/answers/README.md: show the real benchmark/answers/sf1/ paths in\n  the layout tree instead of an ambiguous answers/ example.\n- README.md: qualify the DuckDB cross-check claim -- every query except Q12\n  (whose lateral-join plan is infeasible at SF1) is cross-checked."
    },
    {
      "commit": "b5dc5c955e792c8e2b3762856fd14cb5e04d954d",
      "tree": "9d483a6d747a8a98a6a48f207a2e5383a6730b84",
      "parents": [
        "fce79d457d7b4c5c6173873b560f36ecf6262806"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Tue Jul 21 00:32:24 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 00:32:24 2026 -0700"
      },
      "message": "Bound query result sizes to at most 100 rows (#124)\n\n* Bound query result sizes to at most 100 rows\n\nSeveral queries previously returned result sets that grow with the scale\nfactor -- q7 returns one row per trip (6M at SF1), q10 one row per zone\n(156K at SF1), q12 five rows per trip (30M at SF1), and q1/q5/q8/q9 also\nscale unboundedly. Returning these to the driver measures driver-engine\nbandwidth rather than spatial computation.\n\nBound q1, q5, q7, q8, q9, and q10 with LIMIT 100 after their existing\nORDER BY. This keeps the full scan, spatial-function evaluation, join, and\naggregation intact (the cost is upstream of the sort) while returning a\nmeaningful top-N that matches each query\u0027s scenario.\n\nRedesign q12 to average each pickup\u0027s five nearest-building distances and\nrank pickups by that average (most isolated first), so the LIMIT sits above\na GROUP BY aggregation and the full KNN join is still performed.\n\nAdd total-order tiebreakers so the top-N is reproducible across engines\n(pickup_month for q5, t_tripkey for q12), and align q5 ordering on\ndropoff_count across every implementation and the docs.\n\nApplied consistently across the SedonaSpark/Databricks/DuckDB/SedonaDB SQL,\nthe GeoPandas/Spatial Polars/PyCanopy implementations, the queries notebook,\nand the documentation.\n\nCloses #122\n\n* Rank Q5 by travel-hull area and make the docs example deterministic\n\nOrder Q5 by monthly_travel_hull_area DESC (keeping c_custkey and\npickup_month as tiebreakers) instead of dropoff_count. Ranking by the\nplain count let a top-k optimizer take the top 100 groups by count and\nskip the convex-hull computation for the rest; ranking by the hull area\nforces the hull to be computed for every group, so the LIMIT cannot\nbypass the spatial work the query is meant to measure.\n\nAdd a b_buildingkey ASC tiebreaker to the example query on the docs\nlanding page so its bounded top-100 is deterministic, matching Q8.\n\n* Regenerate all sample outputs using SedonaDB (SF1)\n\nRe-ran all 12 queries against a freshly generated SF1 dataset with\nSedonaDB and refreshed the sample output in the docs and notebook. Several\noutputs committed previously were stale relative to the current data\ngenerator:\n\n- Q4, Q6, Q10: zone keys shifted with the tiered zone-table rework.\n- Q5: top customer-month by travel-hull area is Customer#000010609\n  (the previous sample was stale and omitted it).\n- Q9: building-overlap IoU values changed with the building geometry.\n- Q12: real output for the redesigned \"average distance to the 5 nearest\n  buildings\" ranking (most-isolated pickups).\n\nQ1, Q2, Q3, Q7, Q8, and Q11 outputs were re-run and unchanged."
    },
    {
      "commit": "fce79d457d7b4c5c6173873b560f36ecf6262806",
      "tree": "a0da3a77fcd234a00a35d573e8c6d7966ad598fb",
      "parents": [
        "7dd576ce988be3d5ec0883c8e529f9f227f09e71"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 14 00:38:33 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 00:38:33 2026 -0700"
      },
      "message": "Bump the github-dependencies group across 1 directory with 3 updates (#123)\n\nBumps the github-dependencies group with 3 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [actions/cache](https://github.com/actions/cache) and [j178/prek-action](https://github.com/j178/prek-action).\n\n\nUpdates `actions/checkout` from 6 to 7\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\nUpdates `actions/cache` from 5 to 6\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v5...v6)\n\nUpdates `j178/prek-action` from 2.0.4 to 2.0.5\n- [Release notes](https://github.com/j178/prek-action/releases)\n- [Commits](https://github.com/j178/prek-action/compare/bdca6f102f98e2b4c7029491a53dfd366469e33d...e98a699c41eb69ab013a45817a0406469a748f8d)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n- dependency-name: actions/cache\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n- dependency-name: j178/prek-action\n  dependency-version: 2.0.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: github-dependencies\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7dd576ce988be3d5ec0883c8e529f9f227f09e71",
      "tree": "c47ce841a9a95d9239ecda20b447d430109b939b",
      "parents": [
        "3005f89ac56d1d4dd4be764d01556e4e193d632d"
      ],
      "author": {
        "name": "Pranav Walimbe",
        "email": "99782823+pranav-walimbe@users.noreply.github.com",
        "time": "Wed Jul 08 14:34:22 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 12:34:22 2026 -0700"
      },
      "message": "Adding PyCanopy to the automated benchmarking for SpatialBench (#120)\n\n* added PyCanopy library\n\n* added PyCanopy to readme\n\n* updates to query code on new version\n\n* updates to query code on new version\n\n* fixed queries outputs to match sample\n\n* fixed expr hash issue"
    },
    {
      "commit": "3005f89ac56d1d4dd4be764d01556e4e193d632d",
      "tree": "7997c8ffa4c4d11d62514542b2956a80a3ed8e91",
      "parents": [
        "4005c14b81f623b44c5524162071997496edf572"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Tue Jun 23 02:36:01 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 09:36:01 2026 -0700"
      },
      "message": "[CI] Add codespell pre-commit hook (#115)"
    },
    {
      "commit": "4005c14b81f623b44c5524162071997496edf572",
      "tree": "5801ab74aaf84dc3d85f7577805ddc04dfa5c950",
      "parents": [
        "bdb1cc09bdbed4f9bc2e7df5cdd8467ad81a6412"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Sun Jun 21 05:34:41 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 20 12:34:41 2026 -0700"
      },
      "message": "[CI] Add oxipng pre-commit hook and optimize images (#113)\n\nLossless compression of PNG files results in no loss in quality with smaller file sizes\n\nhttps://github.com/oxipng/oxipng/commit/628e241e23f368097883807fa6e985ccf7c00357\n\nhttps://en.wikipedia.org/wiki/Lossless_compression\n\nhttps://github.com/oxipng/oxipng#git-integration-via-pre-commit\n\nrefs https://github.com/apache/shiro/blob/88568741eaed457e2b07f0908fd71e30f117ebc3/.pre-commit-config.yaml#L151-L157\n\nrefs https://github.com/apache/sedona/blob/7fa19bc65abdac90e851c68d092153e2783505ee/.pre-commit-config.yaml#L541"
    },
    {
      "commit": "bdb1cc09bdbed4f9bc2e7df5cdd8467ad81a6412",
      "tree": "d71eed0901cb3a4ff271797678ec9cde1355b4a2",
      "parents": [
        "be2c10f32496728ea3515f97082fc4b6c7f66eaa"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Mon Jun 15 13:51:00 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 20:51:00 2026 -0700"
      },
      "message": "[CI] Add official pre-commit hook `requirements-txt-fixer` (#107)\n\nhttps://github.com/pre-commit/pre-commit-hooks#requirements-txt-fixer"
    },
    {
      "commit": "be2c10f32496728ea3515f97082fc4b6c7f66eaa",
      "tree": "4f72cbd804f34cdb3c86e64f65825a0b5d938573",
      "parents": [
        "43a47c3dbdb507c04f259faf20c7d0b5bd28c978"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Fri Jun 12 11:28:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 11:28:01 2026 -0700"
      },
      "message": "[DOCS] Fix Queries page rendering raw notebook JSON (#112)\n\nThe mkdocs-jupyter plugin built docs/queries.ipynb at the same URL as\nqueries.md, and with the i18n plugin the raw notebook JSON won the\ncollision on the published site. Move the notebook to notebooks/ and\ndrop the now-unused mkdocs-jupyter plugin so only queries.md is built.\n\nFixes #111"
    },
    {
      "commit": "43a47c3dbdb507c04f259faf20c7d0b5bd28c978",
      "tree": "000debdca0fffed1f6c584122231115f80cb8427",
      "parents": [
        "c99f43eb99c9f56523b3bfba689993702b2d6fbb"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Thu Jun 11 00:43:17 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 00:43:17 2026 -0700"
      },
      "message": "[DOCS] Set site_url so language switcher links include the base path (#110)\n\nWithout site_url, mkdocs-static-i18n generates alternate-language\nlinks rooted at the domain, so the 中文 option in the header pointed\nto https://sedona.apache.org/zh/ (404) instead of\nhttps://sedona.apache.org/spatialbench/zh/. Setting site_url also\nmakes Material emit correct canonical and sitemap URLs.\n\nFixes #109"
    },
    {
      "commit": "c99f43eb99c9f56523b3bfba689993702b2d6fbb",
      "tree": "1a088f2b000a34a4744b469fb5facd24aa03872e",
      "parents": [
        "17600f747766441f64462246cdf28c6086011aff"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Thu Jun 11 15:47:07 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 22:47:07 2026 -0700"
      },
      "message": "[CI] Remove deprecated hook `check-docstring-first` (#108)\n\nhttps://github.com/pre-commit/pre-commit-hooks#deprecated--replaced-hooks"
    },
    {
      "commit": "17600f747766441f64462246cdf28c6086011aff",
      "tree": "345cdc46d2c8d6f9421d8b1104d877c8ba83e5b8",
      "parents": [
        "ffdf1cd218e8666d1261e7cc80ffcfc0309fbe52"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Thu Jun 11 15:46:41 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 22:46:41 2026 -0700"
      },
      "message": "[CI] Add pre-commit hook gitleaks secret scanner (#106)"
    },
    {
      "commit": "ffdf1cd218e8666d1261e7cc80ffcfc0309fbe52",
      "tree": "9e169244de41be26289d1dc9cdc2fd1b53f720f1",
      "parents": [
        "b17faf51b8a36e4240a146f3f1c1111be1a725e7"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Thu Jun 11 15:46:15 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 22:46:15 2026 -0700"
      },
      "message": "[CI] Add official pre-commit hook `mixed-line-ending` (#105)\n\nhttps://github.com/pre-commit/pre-commit-hooks#mixed-line-ending"
    },
    {
      "commit": "b17faf51b8a36e4240a146f3f1c1111be1a725e7",
      "tree": "620a85f5a6711b592bc1e17c476094c677916323",
      "parents": [
        "b313457f5f35bbe4bc48fef4dcf73f8eea8731bc"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Thu Jun 11 15:45:45 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 22:45:45 2026 -0700"
      },
      "message": "Fix rust workflow pin rust-toolchain action to sha (#104)"
    },
    {
      "commit": "b313457f5f35bbe4bc48fef4dcf73f8eea8731bc",
      "tree": "cce7f3b8b01426c4e06d482494978f81fcdbd5ea",
      "parents": [
        "d66a95aa10b446efab2f90d2c1841ae6ad96c175"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Wed Jun 10 15:19:58 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 22:19:58 2026 -0700"
      },
      "message": "[CI] Switch to ASF approved prek action; pin hooks to sha (#101)"
    },
    {
      "commit": "d66a95aa10b446efab2f90d2c1841ae6ad96c175",
      "tree": "3e6263ca5543fae255e6fb75378efb5295d50771",
      "parents": [
        "190431734d331e707b458790fdf0a39b7a078a49"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Thu May 21 23:10:17 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 23:10:17 2026 -0700"
      },
      "message": "[DOCS] Add Chinese version of the SpatialBench website (#100)\n\n* [DOCS] Add Chinese version of the SpatialBench website\n\nAdd `mkdocs-static-i18n` plugin configuration with English (default) and\nChinese (`zh`) locales, mirroring the setup used by the main Apache Sedona\ndocs. Provide `.zh.md` translations for every page currently in the site\nnavigation and translate navigation labels via `nav_translations`.\n\nCloses #97\n\n* [DOCS] Drop navigation.instant to fix --strict CI build\n\nThe mkdocs-static-i18n plugin emits a warning when the Material theme has\nnavigation.instant enabled, because the plugin\u0027s contextual language-switcher\nlink (to the equivalent page in the other language) is not compatible with\nthe instant XHR navigation. The repo\u0027s docs CI runs `mkdocs build --strict`,\nso the warning aborts the build.\n\nRemoving navigation.instant silences the warning, keeps --strict in CI, and\nalso fixes the language switcher so it lands on the equivalent translated\npage rather than the other locale\u0027s root.\n\n* [CI] Drop --strict from docs build to match Sedona main repo\n\nmkdocs-static-i18n emits a known warning when combined with the Material\ntheme\u0027s navigation.instant feature. Rather than dropping navigation.instant\n(reverting the previous commit), match the Apache Sedona main repo\u0027s docs\nworkflow which uses plain `mkdocs build`."
    },
    {
      "commit": "190431734d331e707b458790fdf0a39b7a078a49",
      "tree": "444ccce38d552c6668930c3c50e170b969f11d77",
      "parents": [
        "1096c9bbf0eca3a97c9dce2173dda7806d3f01d3"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Mon Apr 20 23:22:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 08:22:17 2026 -0700"
      },
      "message": "[DOCS] Add release notes for SpatialBench 0.1.0 and 0.2.0 (#96)\n\n* [DOCS] Add release notes for SpatialBench 0.1.0 and 0.2.0\n\n* Update mkdocs.yml\n\nCo-authored-by: Pranav Toggi \u003cprantogg@gmail.com\u003e\n\n---------\n\nCo-authored-by: Pranav Toggi \u003cprantogg@gmail.com\u003e"
    },
    {
      "commit": "1096c9bbf0eca3a97c9dce2173dda7806d3f01d3",
      "tree": "aceee7278f72d7c34b4d284ba63178d3c16b3abe",
      "parents": [
        "c67fa92dcac5cf42b9133486c5248e65c20ab66f",
        "0b39d6f57d0cd67a708f40f9de34a7c459327309"
      ],
      "author": {
        "name": "Dewey Dunnington",
        "email": "dewey@dunnington.ca",
        "time": "Mon Apr 06 13:05:40 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 13:05:40 2026 -0500"
      },
      "message": "Merge pull request #94 from apache/dependabot/github_actions/github-dependencies-4c7d03f22a\n\nBump the github-dependencies group across 1 directory with 3 updates"
    },
    {
      "commit": "0b39d6f57d0cd67a708f40f9de34a7c459327309",
      "tree": "aceee7278f72d7c34b4d284ba63178d3c16b3abe",
      "parents": [
        "c67fa92dcac5cf42b9133486c5248e65c20ab66f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 06 14:52:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 14:52:28 2026 +0000"
      },
      "message": "Bump the github-dependencies group with 3 updates\n\nBumps the github-dependencies group with 3 updates: [actions/upload-artifact](https://github.com/actions/upload-artifact), [actions/download-artifact](https://github.com/actions/download-artifact) and [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance).\n\n\nUpdates `actions/upload-artifact` from 6 to 7\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)\n\nUpdates `actions/download-artifact` from 7 to 8\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)\n\nUpdates `actions/attest-build-provenance` from 3 to 4\n- [Release notes](https://github.com/actions/attest-build-provenance/releases)\n- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md)\n- [Commits](https://github.com/actions/attest-build-provenance/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n- dependency-name: actions/download-artifact\n  dependency-version: \u00278\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n- dependency-name: actions/attest-build-provenance\n  dependency-version: \u00274\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "c67fa92dcac5cf42b9133486c5248e65c20ab66f",
      "tree": "f920d94946de1cdafc3c5373757e16a889a2bb5b",
      "parents": [
        "f788c0fc86ff0ff9f828748208ec335f8de70b22",
        "05b2fa0e698710f93da3a2c04d81c64f4b3b2eac"
      ],
      "author": {
        "name": "Dewey Dunnington",
        "email": "dewey@dunnington.ca",
        "time": "Mon Apr 06 09:50:49 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 09:50:49 2026 -0500"
      },
      "message": "Merge pull request #95 from jbampton/update-dependabot-pre-commit\n\n[CI] Add pre-commit ecosystem to Dependabot config"
    },
    {
      "commit": "05b2fa0e698710f93da3a2c04d81c64f4b3b2eac",
      "tree": "f920d94946de1cdafc3c5373757e16a889a2bb5b",
      "parents": [
        "f788c0fc86ff0ff9f828748208ec335f8de70b22"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@gmail.com",
        "time": "Wed Apr 01 16:53:27 2026 +1000"
      },
      "committer": {
        "name": "John Bampton",
        "email": "jbampton@gmail.com",
        "time": "Wed Apr 01 16:53:27 2026 +1000"
      },
      "message": "[CI] Add pre-commit ecosystem to Dependabot config\n"
    },
    {
      "commit": "f788c0fc86ff0ff9f828748208ec335f8de70b22",
      "tree": "4995d776ec40126b8ae48502a66ee16a64951fc8",
      "parents": [
        "9c8e30a28977834d33a1da11aa2d51755eb2c26c"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Tue Mar 24 00:58:52 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 00:58:52 2026 -0700"
      },
      "message": "Update DuckDB to 1.5.0+, Run each benchmark query in its own job for OOM resilience (#93)\n\n* Run each benchmark query in its own job for OOM resilience\n\n- Remove DuckDB \u003c1.5.0 version cap so nightlies resolve to 1.5.x+\n- Default DuckDB and SedonaDB to stable releases (nightly opt-in)\n- Default scale factors to SF1,SF10 with 600s per-query timeout\n- Run each query as a separate GitHub Actions job so OOM on one\n  query does not block remaining queries\n- Cache pip dependencies across per-query jobs for faster setup\n- Summarize script merges per-query result files, fills missing\n  engines/queries as not_started (OOM), and shows partial results\n\n* Show completed query count in Performance Summary table"
    },
    {
      "commit": "9c8e30a28977834d33a1da11aa2d51755eb2c26c",
      "tree": "72d04f0a229f20a839499be4c0710fc094e311a1",
      "parents": [
        "3ebeb2c3930e522a34ca9f2c7ae5ab6ab2c394d2",
        "9cc24a68d03ab2aef1d448da0f8c75c8dd8c966e"
      ],
      "author": {
        "name": "Dewey Dunnington",
        "email": "dewey@dunnington.ca",
        "time": "Sat Feb 28 19:44:57 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 28 19:44:57 2026 -0600"
      },
      "message": "Merge pull request #91 from apache/dependabot/github_actions/github-dependencies-97f38a5d32\n\nBump actions/cache from 4 to 5 in the github-dependencies group"
    },
    {
      "commit": "9cc24a68d03ab2aef1d448da0f8c75c8dd8c966e",
      "tree": "72d04f0a229f20a839499be4c0710fc094e311a1",
      "parents": [
        "3ebeb2c3930e522a34ca9f2c7ae5ab6ab2c394d2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Mar 01 00:20:51 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 00:20:51 2026 +0000"
      },
      "message": "Bump actions/cache from 4 to 5 in the github-dependencies group\n\nBumps the github-dependencies group with 1 update: [actions/cache](https://github.com/actions/cache).\n\n\nUpdates `actions/cache` from 4 to 5\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "3ebeb2c3930e522a34ca9f2c7ae5ab6ab2c394d2",
      "tree": "b1e53e65f160db7c23a20e5ffe1dec3529fe80ee",
      "parents": [
        "48baada4ffcbd7a7cf8c50e4da2f9a5007630c26"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Mon Feb 23 09:45:19 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 09:45:19 2026 -0800"
      },
      "message": "Bump version to 0.3.0 for next development cycle (#90)\n\n"
    },
    {
      "commit": "48baada4ffcbd7a7cf8c50e4da2f9a5007630c26",
      "tree": "c3fa5cb2703019bc37900a74c34ba3d3c653dec7",
      "parents": [
        "34f4e950ed26a7d9c619beea8fccd36fe2ef107c"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Wed Feb 18 10:34:15 2026 -0800"
      },
      "committer": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Wed Feb 18 10:34:22 2026 -0800"
      },
      "message": "Add NOTICE file required by Apache release policy\n"
    },
    {
      "commit": "34f4e950ed26a7d9c619beea8fccd36fe2ef107c",
      "tree": "1abecefb62bd9e69482d9dbe125db2e588e417bc",
      "parents": [
        "56f280b448a42ae37342247e97dfa86bfa2aba3c"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Tue Feb 17 10:51:51 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 17 10:51:51 2026 -0800"
      },
      "message": "Prepare the project for 0.2.0 release (#89)\n\nBump workspace version from 0.1.0 to 0.2.0 across all crates and\nupdate release documentation examples to reference 0.2.0."
    },
    {
      "commit": "56f280b448a42ae37342247e97dfa86bfa2aba3c",
      "tree": "a83a7012c1d317d2b1933e2398e32065e343d4ae",
      "parents": [
        "426338baa511fc6eff71e76638aa904d4660263c"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Thu Feb 12 21:17:33 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 12 21:17:33 2026 -0800"
      },
      "message": "feat: add S3 write support (#71)\n\n* feat: add s3 write support\n\n* fix: add license header to s3_writer.rs and fix typo in plan.rs\n\n* fix: skip local dir creation for S3 output paths\n\n* refactor: use from_env() and share S3 client across files\n\n* refactor: unify S3 and local write paths\n\n* feat: stream multipart uploads instead of buffering in memory\n\n* feat: add S3 write support to zone table generation\n\n* test: add unit tests for S3 writer and URI parsing\n\n* fix: finalize S3 uploads in async context to prevent deadlock\n\n* fix: resolve broken doc links in s3_writer.rs\n\n* docs: add S3 output documentation to quickstart and datasets pages\n\n* fix: finalize S3 uploads for CSV/TBL writes\n\n* fix: propagate errors instead of panicking on S3 upload failures\n\n* test: add multipart upload tests for large files and spawn_blocking\n\n* test: add S3 integration tests using MinIO (ignored by default)\n\n* ci: add S3 integration test job with MinIO and path filtering"
    },
    {
      "commit": "426338baa511fc6eff71e76638aa904d4660263c",
      "tree": "a150a7cfaeb64b7b27c1db0c8cd09bea0840b6ff",
      "parents": [
        "8e7d95445e9724147e7ea5bbf8d147088406b506"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Mon Feb 09 03:13:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 02:13:23 2026 -0800"
      },
      "message": "Unify navigation bar and theme with main Apache Sedona site (#88)\n\n* Unify navigation bar and theme with main Apache Sedona site\n\n- Update nav tabs to match main site: Home, SedonaDB, SedonaSpark, SedonaFlink, SedonaSnow, SpatialBench, Blog, Community, ASF\n- Add custom theme overrides (header, footer, nav, copyright partials)\n- Add announcement bar auto-synced from sedona.apache.org\n- Update CSS to match main site styling (header layout, fonts, footer)\n- Update logo to full Apache Sedona wordmark\n\n* Add 2026"
    },
    {
      "commit": "8e7d95445e9724147e7ea5bbf8d147088406b506",
      "tree": "d46b548d7c99c006bb013c1a2a55a05220be5e00",
      "parents": [
        "7499d131d34cff7f59303254187f638cea822e86"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Feb 03 19:35:53 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 03 19:35:53 2026 -0800"
      },
      "message": "Bump the github-dependencies group across 1 directory with 5 updates (#87)\n\nBumps the github-dependencies group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [actions/checkout](https://github.com/actions/checkout) | `4` | `6` |\n| [actions/setup-python](https://github.com/actions/setup-python) | `5` | `6` |\n| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `4` | `6` |\n| [actions/download-artifact](https://github.com/actions/download-artifact) | `4` | `7` |\n| [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) | `2` | `3` |\n\n\n\nUpdates `actions/checkout` from 4 to 6\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v6)\n\nUpdates `actions/setup-python` from 5 to 6\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/v5...v6)\n\nUpdates `actions/upload-artifact` from 4 to 6\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6)\n\nUpdates `actions/download-artifact` from 4 to 7\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/v4...v7)\n\nUpdates `actions/attest-build-provenance` from 2 to 3\n- [Release notes](https://github.com/actions/attest-build-provenance/releases)\n- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md)\n- [Commits](https://github.com/actions/attest-build-provenance/compare/v2...v3)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n- dependency-name: actions/setup-python\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n- dependency-name: actions/download-artifact\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n- dependency-name: actions/attest-build-provenance\n  dependency-version: \u00273\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-dependencies\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7499d131d34cff7f59303254187f638cea822e86",
      "tree": "904a742403f5604dbea758016acebe888510b4a3",
      "parents": [
        "e681aa79f8a942d8d263bd55aa6794aa5bf16d2e"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Sat Jan 24 16:10:28 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 23 22:10:28 2026 -0800"
      },
      "message": "Add basic EditorConfig file (#80)\n\nAdd 3 standard config settings"
    },
    {
      "commit": "e681aa79f8a942d8d263bd55aa6794aa5bf16d2e",
      "tree": "4640051d605b52dea59db3fd73bef640d6849265",
      "parents": [
        "9dc2391b7a5dfe0940356da3f8036e56f8bc64b1"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Sat Jan 24 16:10:10 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 23 22:10:10 2026 -0800"
      },
      "message": "[CI] Add pre-commit hook to trim trailing whitespace (#79)\n\n"
    },
    {
      "commit": "9dc2391b7a5dfe0940356da3f8036e56f8bc64b1",
      "tree": "4fe34649cb833446c891315476deaf025bf07046",
      "parents": [
        "8ddbc1bdbb49cd293c06d268d1023037acd03892"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Sat Jan 24 16:10:00 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 23 22:10:00 2026 -0800"
      },
      "message": "[CI] Add Dependabot config for `github-actions` ecosystem (#84)\n\nBasic config file with settings like the main Sedona repo"
    },
    {
      "commit": "8ddbc1bdbb49cd293c06d268d1023037acd03892",
      "tree": "feaf8669393f07c309dbc5e579658f02c69e6235",
      "parents": [
        "593ca69407675dc2d890755d98b417a2d4877289"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Sat Jan 24 16:09:46 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 23 22:09:46 2026 -0800"
      },
      "message": "Update `.asf.yaml` clean up `collaborators` list (#85)\n\nhttps://projects.apache.org/committee.html?sedona\r\n\r\nBoth Dewey and Peter are now Committers"
    },
    {
      "commit": "593ca69407675dc2d890755d98b417a2d4877289",
      "tree": "ecf07aa17375b0dd44c4a41bcb32748c2e4542d0",
      "parents": [
        "a48d3ee6bc94a591567f0117965e059e96c0ede1"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Sat Jan 24 16:09:37 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 23 22:09:37 2026 -0800"
      },
      "message": "misc: fix spelling (#81)\n\nauxillaries -\u003e auxiliaries"
    },
    {
      "commit": "a48d3ee6bc94a591567f0117965e059e96c0ede1",
      "tree": "67e17c06bab8fd11cfee2f12520dfccdd2cd573e",
      "parents": [
        "8331bb746f81650f1f014bc470f309df9f3ddad5"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Fri Jan 23 07:36:13 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 22 13:36:13 2026 -0800"
      },
      "message": "misc: fix typos (#78)\n\nGeneral spelling clean up"
    },
    {
      "commit": "8331bb746f81650f1f014bc470f309df9f3ddad5",
      "tree": "83f252fa0b84af2b4db7ecc0df110b765e04cea2",
      "parents": [
        "ae57d712b8889a5980832f81d9c5489166950ba3"
      ],
      "author": {
        "name": "John Bampton",
        "email": "jbampton@users.noreply.github.com",
        "time": "Fri Jan 23 07:35:31 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 22 13:35:31 2026 -0800"
      },
      "message": "[CI] Add pre-commit with basic checks (#77)\n\nRun pre-commit and some clean ups were:\n\n- chmod +x Python scripts in benchmark directory\n- trailing whitespace cleanup in Python scripts in benchmark directory\n- end of files cleaned up"
    },
    {
      "commit": "ae57d712b8889a5980832f81d9c5489166950ba3",
      "tree": "af3cf1b21c8093b630526f6a5139a58665057c52",
      "parents": [
        "b79630fd25b4f5bceb7b61e0a25b718de110f57a"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Mon Jan 19 21:19:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 19 20:19:08 2026 -0800"
      },
      "message": "feature: Add DuckDB and SedonaDB nightly support (#76)\n\n* Add DuckDB and SedonaDB nighly support\n\n* Fix duckdb\n\n* Fix duckdb\n\n* Fix\n\n* Fix DuckDB\n\n* Add SedonaDB nightly\n\n* Fix\n\n* fix"
    },
    {
      "commit": "b79630fd25b4f5bceb7b61e0a25b718de110f57a",
      "tree": "bd82ec44096572f805510635aa625c66cd620b00",
      "parents": [
        "834224842391919c7bab462eea36f90e29eb0ef5"
      ],
      "author": {
        "name": "ATL2001",
        "email": "35881864+ATL2001@users.noreply.github.com",
        "time": "Mon Jan 19 13:46:56 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 19 10:46:56 2026 -0800"
      },
      "message": "spatial polars Q11 query fix (#75)\n\n"
    },
    {
      "commit": "834224842391919c7bab462eea36f90e29eb0ef5",
      "tree": "246bef3f722be2bccd971d970b2d74c3c0504b57",
      "parents": [
        "b68b81404c9b4e5f5c2699c0c78a90b5dd4ba7b6"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Wed Jan 14 21:31:12 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 20:31:12 2026 -0800"
      },
      "message": "fix: Update docs and readme (#74)\n\n"
    },
    {
      "commit": "b68b81404c9b4e5f5c2699c0c78a90b5dd4ba7b6",
      "tree": "cced4f428f741f82dfe4a1bfeb8a5758e25fe9c7",
      "parents": [
        "adb867ccc4b18c80a82a05e202e6eb54e0471aa1"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Wed Jan 14 21:15:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 20:15:01 2026 -0800"
      },
      "message": "feature: Add Spatial Polars to the automated benchmark framework (#73)\n\n"
    },
    {
      "commit": "adb867ccc4b18c80a82a05e202e6eb54e0471aa1",
      "tree": "0eee737037d0756abf87498567d4e5b41e59bae2",
      "parents": [
        "02be7030df1016a361e898a0bf2937698e41dd73"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Wed Jan 14 20:22:55 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 19:22:55 2026 -0800"
      },
      "message": "feature: add a benchmark github action to compare a few spatial lib (#72)\n\n* Add initial code\n\n* Use cached huggingface data\n\n* fix\n\n* Fix\n\n* Fix\n\n* fix\n\n* fix\n\n* Fix"
    },
    {
      "commit": "02be7030df1016a361e898a0bf2937698e41dd73",
      "tree": "e6aa50c6dd358869b6d016875ee661aee7e78756",
      "parents": [
        "8ca864a4a9c3a5d9682a14de20a5693c1e987139"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Sat Dec 20 03:16:33 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 20 03:16:33 2025 -0700"
      },
      "message": "Fix the failed Python build (#69)\n\n"
    },
    {
      "commit": "8ca864a4a9c3a5d9682a14de20a5693c1e987139",
      "tree": "acd03a347fea255b3a0287aebcba46e94bfb398b",
      "parents": [
        "e35711cf5ed9622a4bce0dacd50763f8f81969ac"
      ],
      "author": {
        "name": "Matthew Powers",
        "email": "matthewkevinpowers@gmail.com",
        "time": "Mon Dec 15 12:37:08 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 15 09:37:08 2025 -0800"
      },
      "message": "docs: add uncompressed data sizes of tables (#68)\n\n* docs: add uncompressed data sizes of tables\n\n* Apply suggestion from @jiayuasu\n\n---------\n\nCo-authored-by: Jia Yu \u003cjiayu@wherobots.com\u003e"
    },
    {
      "commit": "e35711cf5ed9622a4bce0dacd50763f8f81969ac",
      "tree": "033cedc25c3b82e9428d3e5dfab4df419099158d",
      "parents": [
        "ff43ee1d8b61eba6455bc486f4d2106628223cc6"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Tue Dec 02 12:19:31 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 11:19:31 2025 -0800"
      },
      "message": "Prepare the project for 0.1.0 release (#66)\n\n* Prepare release\n\n* Fix missing and inconsistent information in Carto.toml files\n\n* Add crates.io publish guidance\n\n* Fix formats"
    },
    {
      "commit": "ff43ee1d8b61eba6455bc486f4d2106628223cc6",
      "tree": "dceb65f8136eda3883bfdd5688520ba4fc3109ef",
      "parents": [
        "03277d530abec4d6adcb0317ec1735f7a586f3ef"
      ],
      "author": {
        "name": "Kristin Cowalcijk",
        "email": "bo@wherobots.com",
        "time": "Thu Nov 27 15:03:40 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 26 23:03:40 2025 -0800"
      },
      "message": "Fix release verification script to work correctly with source release (#65)\n\n"
    },
    {
      "commit": "03277d530abec4d6adcb0317ec1735f7a586f3ef",
      "tree": "d0ef48c667b90dd81de6909d22bbc341517d5092",
      "parents": [
        "abf1b5aea92412600b16f4c0f6b436483f6b80be"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu198910@gmail.com",
        "time": "Tue Nov 25 21:14:36 2025 -0800"
      },
      "committer": {
        "name": "Jia Yu",
        "email": "jiayu198910@gmail.com",
        "time": "Tue Nov 25 21:14:36 2025 -0800"
      },
      "message": "Revert \"Add CI to build tarball\"\n\nThis reverts commit af6da8781da63b1a28d1cbc6d718cc210afc3fdb.\n"
    },
    {
      "commit": "abf1b5aea92412600b16f4c0f6b436483f6b80be",
      "tree": "20a8627febbc23c0b431fe0795d7068cce23089a",
      "parents": [
        "af6da8781da63b1a28d1cbc6d718cc210afc3fdb"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu198910@gmail.com",
        "time": "Tue Nov 25 21:13:23 2025 -0800"
      },
      "committer": {
        "name": "Jia Yu",
        "email": "jiayu198910@gmail.com",
        "time": "Tue Nov 25 21:13:23 2025 -0800"
      },
      "message": "Remove wrong rat file\n"
    },
    {
      "commit": "af6da8781da63b1a28d1cbc6d718cc210afc3fdb",
      "tree": "f69aecf61342895188b64f349195f3f57eccc023",
      "parents": [
        "aed439da46d4889492a693f4dfaee8ae9532867a"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu198910@gmail.com",
        "time": "Tue Nov 25 21:10:28 2025 -0800"
      },
      "committer": {
        "name": "Jia Yu",
        "email": "jiayu198910@gmail.com",
        "time": "Tue Nov 25 21:11:29 2025 -0800"
      },
      "message": "Add CI to build tarball\n"
    },
    {
      "commit": "aed439da46d4889492a693f4dfaee8ae9532867a",
      "tree": "d0ef48c667b90dd81de6909d22bbc341517d5092",
      "parents": [
        "887eff4593d7d7e65176baebd57223d39c8f9445"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Tue Nov 25 21:38:29 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 25 20:38:29 2025 -0800"
      },
      "message": "Add release script (#64)\n\n"
    },
    {
      "commit": "887eff4593d7d7e65176baebd57223d39c8f9445",
      "tree": "9b79f0f4e6ee24e6e556c1b7591d47af7fedf5b9",
      "parents": [
        "fc99f7f0ea0f0baead6580edf1649a6ba2d0dc93"
      ],
      "author": {
        "name": "ATL2001",
        "email": "35881864+ATL2001@users.noreply.github.com",
        "time": "Sun Nov 23 22:39:14 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 23 19:39:14 2025 -0800"
      },
      "message": "Add spatial polars implementation of spatial bench queries (#63)\n\n* Add spatial polars implementation of spatial bench queries\n\n* add spatial polars to readme\n\n* include spatial polars in print queries\n\n* add blurb about spatial polars"
    },
    {
      "commit": "fc99f7f0ea0f0baead6580edf1649a6ba2d0dc93",
      "tree": "4d3402c9bb2bd757ada81a89fe15da8e0b7dbf93",
      "parents": [
        "efb345416f30197ac8405885ea65c666528da01e"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Fri Nov 14 22:20:02 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 14 22:20:02 2025 -0800"
      },
      "message": "[DOCS] Add contributors guide and quickstart page (#61)\n\n* update contributors guide\n\n* add quickstart.md\n\n* fix link\n\n* redirect to contributors_guide.md\n\n* Apply suggestions from code review\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "efb345416f30197ac8405885ea65c666528da01e",
      "tree": "91118bdefbb30f530b165383483dcdf5da79322a",
      "parents": [
        "f122bf228be15114a13c998ef14f1717899e8dbc"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Mon Nov 10 17:23:39 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 10 17:23:39 2025 -0800"
      },
      "message": "Ensure geometry validity,  CCW orientation and antimeridian handling (#60)\n\n* orient polygons to counter clockwise\n\n* fix zero area polygons\n\n* add wrap around logic to keep points within [-180, 180] degrees\n\n* add logic to handle antimeridian crossing geometries\n\n* add test suite for geometry validation\n\n* fix cli-integration tests\n\n* Update spatialbench/tests/geometry_tests.rs\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* pin python version\n\n* update comments\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "f122bf228be15114a13c998ef14f1717899e8dbc",
      "tree": "215ff4de445884f99faae252dd0a8bfbd94e4dc5",
      "parents": [
        "dbfba06732bac1547f95e9901e70eb09d742ee89"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Tue Oct 28 12:36:59 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 28 12:36:59 2025 -0700"
      },
      "message": "Prepare for pypi and cargo release (#58)\n\n* prepare for pypi and cargo release\n\n* update cargo tomls\n\n* update descriptions to reflect SpatialBench terminology"
    },
    {
      "commit": "dbfba06732bac1547f95e9901e70eb09d742ee89",
      "tree": "8ff411dad4de8b16f178fb6ded3cf952a89e9975",
      "parents": [
        "59dff99c1f85f9fa0b1566ff562ddcae81d135f6"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Tue Oct 28 12:36:44 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 28 12:36:44 2025 -0700"
      },
      "message": "feat: add file size option for output files (#59)\n\n* feat: add file size option for output files\n\n* fix typo\n\n* update readme\n\n* remove script for generating same sized output files\n\n* Apply suggestions from code review\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* fix incorrect assertion message\n\n* remove workflow to test generate_data.py\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "59dff99c1f85f9fa0b1566ff562ddcae81d135f6",
      "tree": "76636a4dec2e0c91c876dfa0329369f441ecccb2",
      "parents": [
        "15338e2bea7bd45dfbb815f50159a55a88f7cdcf"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Mon Oct 27 11:21:43 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 27 11:21:43 2025 -0700"
      },
      "message": "Feat: Support creating multiple files with single --parts command (#57)\n\n* temp: rename to tpchgen\n\n* refactor zone generation for readability\n\n* allow generating multi-part zone\n\n* fmt, clippy fixes\n\n* Automatically create multiple files with single `--parts` command\n\n* Improve code readability and logging in multi-part generation\n\n* Rename tpchgen to spatialbench and update related references\n\n* fmt fix\n\n* update generate_data.py script\n\n* fix test\n\n* Apply suggestions from code review\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "15338e2bea7bd45dfbb815f50159a55a88f7cdcf",
      "tree": "84ca3d5d7dccd5cad6e14487d408757ac3fcf226",
      "parents": [
        "2da8e5ee8057090ed3c802a793851dce25aa8675"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Mon Oct 20 11:56:40 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 20 11:56:40 2025 -0700"
      },
      "message": "feat: load Overture Divisions from Hugging Face over HTTPS instead of S3 (#54)\n\n* load from HF over https\n\n* Apply suggestions from code review\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Bump rust version to 1.90.0 (#55)\n\n* bump rust version\n\n* clippy fix\n\n* Upgrade arrow/parquet to 56.2.0 and datafusion to 50.2.0 (#56)\n\n* update arrow, parquet and datafusion versions\n\n* update tests\n\n* don\u0027t fully pin version to allow patches\n\n* fix test\n\n* fmt fix\n\n* pin to commit hash\n\n* fix typo\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "2da8e5ee8057090ed3c802a793851dce25aa8675",
      "tree": "cad6eda0d620d619f532976c5065d073e2a21ed5",
      "parents": [
        "bbe43e18c9dc5ec75669c2738aed5045637410d3"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Fri Oct 17 21:56:25 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 17 21:56:25 2025 -0700"
      },
      "message": "Upgrade arrow/parquet to 56.2.0 and datafusion to 50.2.0 (#56)\n\n* update arrow, parquet and datafusion versions\n\n* update tests\n\n* don\u0027t fully pin version to allow patches\n\n* fix test\n\n* fmt fix"
    },
    {
      "commit": "bbe43e18c9dc5ec75669c2738aed5045637410d3",
      "tree": "418563822da360effb30e22d9acf6c57d44b4d00",
      "parents": [
        "c35a4448539783e73f062a792509dbee6b42ec4d"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Fri Oct 17 21:56:00 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 17 21:56:00 2025 -0700"
      },
      "message": "Bump rust version to 1.90.0 (#55)\n\n* bump rust version\n\n* clippy fix"
    },
    {
      "commit": "c35a4448539783e73f062a792509dbee6b42ec4d",
      "tree": "e67ff161bfca5284de2dd45ae1e7a422a0deb2dc",
      "parents": [
        "6084a14e019449511741000c0272c050e4654a64"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Tue Oct 14 15:43:18 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 14 15:43:18 2025 -0700"
      },
      "message": "cleanup dependencies and files (#52)\n\n"
    },
    {
      "commit": "6084a14e019449511741000c0272c050e4654a64",
      "tree": "ec7bbeea103bb310b7fd9cd6af2e97350ce6d53b",
      "parents": [
        "4379980f2844250b5a5100c823823c0a09fb1bfc"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Mon Oct 13 22:33:04 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 13 22:33:04 2025 -0700"
      },
      "message": "Use DataFusion for Zone table generation (#46)\n\n* init: use datafusion for Zone\n\n* add row group size configurability\n\n* Add debug statements; use 128MB as default row group size\n\n* fix stats\n\n* Clamp sf to minimum 1\n\n* fix row group size estimation and partitioning\n\n* fix zone table naming for partitioned outputs\n\n* add unit tests\n\n* add integration tests\n\n* fmt fix\n\n* Update spatialbench-cli/tests/cli_integration.rs\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "4379980f2844250b5a5100c823823c0a09fb1bfc",
      "tree": "3d31f3dfa755fc787f78346347076ca671e78c7f",
      "parents": [
        "748b593fcce040a2e02896dd8389aa6e83ef7d11"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Mon Oct 13 19:49:51 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 13 19:49:51 2025 -0700"
      },
      "message": "Make parquet as default output format of spatialbench-cli (#51)\n\n"
    },
    {
      "commit": "748b593fcce040a2e02896dd8389aa6e83ef7d11",
      "tree": "ce511e75f6851cea8a8e3d8d5d2e38f9ee05c803",
      "parents": [
        "c619bb2a736446d1a7ff56d22bb0a448f15b6e63"
      ],
      "author": {
        "name": "Matthew Powers",
        "email": "matthewkevinpowers@gmail.com",
        "time": "Thu Oct 09 02:17:31 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 08 23:17:31 2025 -0700"
      },
      "message": "docs: update horizontal navigation (#49)\n\n"
    },
    {
      "commit": "c619bb2a736446d1a7ff56d22bb0a448f15b6e63",
      "tree": "671e2824c95e68b584ab61d6d95d3ec37fae1dac",
      "parents": [
        "815be151c3d443f38caba510a29ffb6feaa0e946"
      ],
      "author": {
        "name": "Kelly-Ann Dolor",
        "email": "kelly@wherobots.com",
        "time": "Fri Sep 26 15:19:47 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 26 15:19:47 2025 -0700"
      },
      "message": "navigation fix (#45)\n\n"
    },
    {
      "commit": "815be151c3d443f38caba510a29ffb6feaa0e946",
      "tree": "276ed744681a11b775f200d7cb2abd3d9592b0bd",
      "parents": [
        "8d42575bb506203a8ae8bcbdd1cdf5aeff09f2da"
      ],
      "author": {
        "name": "James Willis",
        "email": "james-willis@users.noreply.github.com",
        "time": "Wed Sep 24 14:40:28 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 24 14:40:28 2025 -0700"
      },
      "message": "script to support multi-file parquet generation (#43)\n\n"
    },
    {
      "commit": "8d42575bb506203a8ae8bcbdd1cdf5aeff09f2da",
      "tree": "0a650a71f12b0d6fa4d95832d44246a71a25454b",
      "parents": [
        "370e676a1229c7a90994a9d417afc28005d91bcf"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Wed Sep 24 12:17:23 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 24 12:17:23 2025 -0700"
      },
      "message": "add katex math rendering (#44)\n\n"
    },
    {
      "commit": "370e676a1229c7a90994a9d417afc28005d91bcf",
      "tree": "76024faafb983521b70926d1a920a211f9191107",
      "parents": [
        "064f890681e9002dd4942a8a8c57968627b7d56f"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Wed Sep 24 10:43:26 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 24 10:43:26 2025 -0700"
      },
      "message": "[DOCS] Add SpatialBench Distributions doc (#42)\n\n* add spatialbenc distributions doc\n\n* Update spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n* Update datasets-generators.md\n\nCo-authored-by: Jia Yu \u003cjiayu@apache.org\u003e\n\n* Update mkdocs.yml\n\nCo-authored-by: Jia Yu \u003cjiayu@apache.org\u003e\n\n* Update spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n* Update spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n* Update spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n* Update spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n* Update spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n* Update spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n* Update spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n* Update spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n* Update docs/spatialbench-distributions.md\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\n\n---------\n\nCo-authored-by: Kelly-Ann Dolor \u003ckelly@wherobots.com\u003e\nCo-authored-by: Jia Yu \u003cjiayu@apache.org\u003e"
    },
    {
      "commit": "064f890681e9002dd4942a8a8c57968627b7d56f",
      "tree": "c610abdfe6207da8d77a0144f9f767704f71bf00",
      "parents": [
        "0f0b21d2b8f45a5ec9627f910ec968f49b3f1297"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Wed Sep 24 00:55:49 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 24 00:55:49 2025 -0700"
      },
      "message": "docs: replace old images (#41)\n\n"
    },
    {
      "commit": "0f0b21d2b8f45a5ec9627f910ec968f49b3f1297",
      "tree": "909f46082bbfbb4aba219afbcd50d219d3a14d45",
      "parents": [
        "0cd32d8582a9ff3935e2ba5d29760127610f2708"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Tue Sep 23 22:56:55 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 22:56:55 2025 -0700"
      },
      "message": "docs: Clarify the benchmark numbers (#40)\n\n"
    },
    {
      "commit": "0cd32d8582a9ff3935e2ba5d29760127610f2708",
      "tree": "51d2ffd4504c5be48b5e43e24f01849ade156e2c",
      "parents": [
        "c85f331308d8bfebf1345365f6a0ede72fec362a"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Tue Sep 23 22:43:11 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 22:43:11 2025 -0700"
      },
      "message": "docs: add more details to the single node benchmark results (#39)\n\n* add\n\n* Add more details to the numbers\n\n* Fix"
    },
    {
      "commit": "c85f331308d8bfebf1345365f6a0ede72fec362a",
      "tree": "d82de7736e5ff6f8b3261af2002ad9cb8dfcb448",
      "parents": [
        "f9531da74e98616db775c2bbb3ebd8b8dab5b85b"
      ],
      "author": {
        "name": "Kelly-Ann Dolor",
        "email": "kelly@wherobots.com",
        "time": "Tue Sep 23 21:38:44 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 21:38:44 2025 -0700"
      },
      "message": "docs: Fixes typos on SpatialBench homepage, fixes mobile nav black text, removes PostGIS line (#38)\n\n* Fixes typos on SpatialBench homepage, fixes mobile nav black text, removes PostGIS line\n\n* resolving comment"
    },
    {
      "commit": "f9531da74e98616db775c2bbb3ebd8b8dab5b85b",
      "tree": "cf699c2bd485800e11bdbfdda1aee3efb9ad8c05",
      "parents": [
        "ea0ec15c3987379ce22d776c984b8087c2b8bd92"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Tue Sep 23 20:50:34 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 20:50:34 2025 -0700"
      },
      "message": "[DOCS] Update acknowledgements (#37)\n\n* add more acknowledgements\n\n* Update README.md\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Jia Yu \u003cjiayu@apache.org\u003e\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "ea0ec15c3987379ce22d776c984b8087c2b8bd92",
      "tree": "c21883fbd4668b9c4dcd975aa18ae44b0026c0b1",
      "parents": [
        "2ab765a406a22b1d074ac23867fe9cd7a24ae02f"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Tue Sep 23 20:50:13 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 20:50:13 2025 -0700"
      },
      "message": "CI: Ignore python scripts and doc updates from triggering the CI (#33)\n\n* ignore python scripts and doc updates from triggering the CI\n\n* fix typo"
    },
    {
      "commit": "2ab765a406a22b1d074ac23867fe9cd7a24ae02f",
      "tree": "49e3cc73b867f1ed59a5f7ef42f285b6c12f79a3",
      "parents": [
        "8c3d806e8fa95d08e406a07e5fbae87a57cca973"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Tue Sep 23 17:48:20 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 17:48:20 2025 -0700"
      },
      "message": "docs: clean up images used in the repo (#36)\n\n"
    },
    {
      "commit": "8c3d806e8fa95d08e406a07e5fbae87a57cca973",
      "tree": "9c6d2e07aab8547e8f2a6b5cc840da8099347bae",
      "parents": [
        "26a535393406ddee00dbbcc1df2c07144041d355"
      ],
      "author": {
        "name": "Kelly-Ann Dolor",
        "email": "kelly@wherobots.com",
        "time": "Tue Sep 23 17:33:49 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 17:33:49 2025 -0700"
      },
      "message": "[DOCS] resizing and applying grid format to image (#35)\n\n"
    },
    {
      "commit": "26a535393406ddee00dbbcc1df2c07144041d355",
      "tree": "587fd4032cd4d511e4e02215b962e11fc842cadf",
      "parents": [
        "17319258ddabda64e9b3b3d3dd532edbe8968036"
      ],
      "author": {
        "name": "Matthew Powers",
        "email": "matthewkevinpowers@gmail.com",
        "time": "Tue Sep 23 20:04:33 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 17:04:33 2025 -0700"
      },
      "message": "docs: add single node benchmark results (#34)\n\n* docs: add single node benchmark results\n\n* Apply suggestion from @Copilot\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Apply suggestion from @Copilot\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Jia Yu \u003cjiayu@wherobots.com\u003e\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "17319258ddabda64e9b3b3d3dd532edbe8968036",
      "tree": "157fd312760e930836f57e536c9870036cac93d4",
      "parents": [
        "cad4066d9bb48d69e6e61a33e5856e32361e3845"
      ],
      "author": {
        "name": "Kelly-Ann Dolor",
        "email": "kelly@wherobots.com",
        "time": "Tue Sep 23 16:16:31 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 16:16:31 2025 -0700"
      },
      "message": "Changing SpatialBench Navigation (#31)\n\n* Changing SpatialBench Navigation\n\n* [DOCS] fixing pre-commit\n\n* fixing pre-commit adding contributors to nav\n\n* fixing comments\n\n* Apply suggestion from @jiayuasu\n\nCo-authored-by: Jia Yu \u003cjiayu@wherobots.com\u003e\n\n* fixing extra sedona link\n\n* fixing comments\n\n* fixing comments\n\n---------\n\nCo-authored-by: Jia Yu \u003cjiayu@wherobots.com\u003e"
    },
    {
      "commit": "cad4066d9bb48d69e6e61a33e5856e32361e3845",
      "tree": "c791e8c8da31ed47fa7fb6ca614ad82f8138ba97",
      "parents": [
        "4e00cea1140d959c366d7532e7cf0682f47959c6"
      ],
      "author": {
        "name": "Kelly-Ann Dolor",
        "email": "kelly@wherobots.com",
        "time": "Mon Sep 22 22:38:08 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 22 22:38:08 2025 -0700"
      },
      "message": "[DOCS] Fix broken Q2, wrap code for readability in queries notebook, add contributors guide (#30)\n\n* fixing broken query2, wrapping code for readability\n\n* running nbconvert\n\n* removing output"
    },
    {
      "commit": "4e00cea1140d959c366d7532e7cf0682f47959c6",
      "tree": "b73e33342e62c2e614d7abbb158198a3b986041a",
      "parents": [
        "67b6c3f755ef823a2969e8c3fbed50545b67fea7"
      ],
      "author": {
        "name": "Kelly-Ann Dolor",
        "email": "kelly@wherobots.com",
        "time": "Mon Sep 22 19:47:53 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 22 19:47:53 2025 -0700"
      },
      "message": "Copy edit CONTRIBUTING.md in SpatialBench (#29)\n\n"
    },
    {
      "commit": "67b6c3f755ef823a2969e8c3fbed50545b67fea7",
      "tree": "5ca47731b4c576b5b65e7839896e7e2da206c241",
      "parents": [
        "6c07657a1b64abe2f8e860fe37648651248a4379"
      ],
      "author": {
        "name": "Jeff Pettiross",
        "email": "github@pettiross.com",
        "time": "Mon Sep 22 16:20:19 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 22 16:20:19 2025 -0700"
      },
      "message": "Fix out-of-place statement (#28)\n\n* Fix out-of-place statement\n\n* Undo file rename\n\n---------\n\nCo-authored-by: Jeff Pettiross \u003cjeff@pettiross.com\u003e"
    },
    {
      "commit": "6c07657a1b64abe2f8e860fe37648651248a4379",
      "tree": "aed523bcc22f2467327d5613d05b7a320e82d9d0",
      "parents": [
        "33b959d8989d2030b3dccdcdae9ae3438e03323d"
      ],
      "author": {
        "name": "Matthew Powers",
        "email": "matthewkevinpowers@gmail.com",
        "time": "Mon Sep 22 17:43:24 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 22 14:43:24 2025 -0700"
      },
      "message": "docs: add queries notebook (#26)\n\n* docs: add queries notebook\n\n* install sedonadb from pip\n\n* update sql\n\n* remove duplicate requirements file"
    },
    {
      "commit": "33b959d8989d2030b3dccdcdae9ae3438e03323d",
      "tree": "0728eef983e03119b376042085b0d89eb3bc34b5",
      "parents": [
        "9094be8196046ee9cfdadac31ad84a30bcb6c653"
      ],
      "author": {
        "name": "Kelly-Ann Dolor",
        "email": "kelly@wherobots.com",
        "time": "Mon Sep 22 11:34:03 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 22 11:34:03 2025 -0700"
      },
      "message": "[DOCS] changing spatial bench logo, header, and adding to requirements (#27)\n\n* changing spatial bench logo, header, and adding to requirements\n\n* removing broken css\n\n* add spatialbench messaging\n\n* add punctuation"
    },
    {
      "commit": "9094be8196046ee9cfdadac31ad84a30bcb6c653",
      "tree": "c53c5067de80078821dedd534f033a4129c9e86c",
      "parents": [
        "95bfa035d48b189ca2ce77321a49c3c660123520"
      ],
      "author": {
        "name": "James Willis",
        "email": "james-willis@users.noreply.github.com",
        "time": "Sat Sep 20 17:23:11 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 20 17:23:11 2025 -0700"
      },
      "message": "fix q5 sql (#24)\n\n* fix q5 sql\n\n* fix q5 sql for dbx\n\n* fix detour query number in databricks override."
    },
    {
      "commit": "95bfa035d48b189ca2ce77321a49c3c660123520",
      "tree": "f1742a70b543688af44f05665c04df03adff7de9",
      "parents": [
        "5e055d71b32b755aaba4c1aadb53e0b8876e67f5"
      ],
      "author": {
        "name": "Pranav Toggi",
        "email": "prantogg@gmail.com",
        "time": "Fri Sep 19 21:06:50 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 21:06:50 2025 -0700"
      },
      "message": "CI: fix caching and skip workflow runs for Markdown-only changes (#23)\n\n* CI: fix caching; skip workflow for docs\n\n* make lint run in parallel; don\u0027t ignore rust.yaml changes"
    },
    {
      "commit": "5e055d71b32b755aaba4c1aadb53e0b8876e67f5",
      "tree": "db8c572ae10faa17cc1d5304168ae8de40c85b13",
      "parents": [
        "c9b7cdc06c5cec80a66d494ddfe0fd3ce9c6d9aa"
      ],
      "author": {
        "name": "Matthew Powers",
        "email": "matthewkevinpowers@gmail.com",
        "time": "Fri Sep 19 17:04:40 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 14:04:40 2025 -0700"
      },
      "message": "docs: add datasets and generators page (#22)\n\n"
    },
    {
      "commit": "c9b7cdc06c5cec80a66d494ddfe0fd3ce9c6d9aa",
      "tree": "9918844e83cfbe22d000072dc77b2adebf67fd9a",
      "parents": [
        "b45b6ebfe78cb8441e3c5e8165e0e5fb435b9043"
      ],
      "author": {
        "name": "James Willis",
        "email": "james-willis@users.noreply.github.com",
        "time": "Fri Sep 19 13:43:27 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 13:43:27 2025 -0700"
      },
      "message": "add queries + queries CLI (#21)\n\n* add queries\n\n* update readme\n\n* Update print_queries.py\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* fix q3 sql\n\n---------\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "b45b6ebfe78cb8441e3c5e8165e0e5fb435b9043",
      "tree": "9142e742cdcd673e986fcffc1e0e7a1ec604fac2",
      "parents": [
        "3ca86e62d73771053c85845431c30c02230830a4"
      ],
      "author": {
        "name": "Kelly-Ann Dolor",
        "email": "kelly@wherobots.com",
        "time": "Fri Sep 19 12:14:24 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 12:14:24 2025 -0700"
      },
      "message": "[DOCS] fixing mobile nav color (#18) (#20)\n\nfix #18"
    },
    {
      "commit": "3ca86e62d73771053c85845431c30c02230830a4",
      "tree": "b222383706e3f06d5cdf2505fa80a4d781494559",
      "parents": [
        "25bd460bfa5c08bee9db4a69836799a656eedd7d"
      ],
      "author": {
        "name": "Jia Yu",
        "email": "jiayu@apache.org",
        "time": "Fri Sep 19 11:27:33 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 11:27:33 2025 -0700"
      },
      "message": "Revise README to clarify SpatialBench purpose"
    },
    {
      "commit": "25bd460bfa5c08bee9db4a69836799a656eedd7d",
      "tree": "e7ddd1fbd86a7a5ac98faa23377d89764b1a270a",
      "parents": [
        "0f13aaf25038354c7903f757d029a8853eac7140"
      ],
      "author": {
        "name": "Matthew Powers",
        "email": "matthewkevinpowers@gmail.com",
        "time": "Fri Sep 19 14:26:39 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 11:26:39 2025 -0700"
      },
      "message": "docs: add overview and methodology (#19)\n\n"
    }
  ],
  "next": "0f13aaf25038354c7903f757d029a8853eac7140"
}
