feat(bindings): tgeometry + tgeography + tgeogpoint — full parity surface#104
feat(bindings): tgeometry + tgeography + tgeogpoint — full parity surface#104estebanzimanyi wants to merge 1 commit into
Conversation
…face
Add three new spatial temporal types mirroring PostGIS spatial types:
tgeometry (rigid-body 2D geometry):
- Foundational surface: accessors / restrict / modifiers / comparison
- Cross-type predicate surface: boxops / posops / spatial-rels / temporal-rels / distance
- Spatial functions: SRID / setSRID / transform / coercions / centroid / convexHull / traversedArea
- Aggregate / tile / analytics extensions
- Tests: 040_tgeometry_parity.test
tgeography (geodetic geometry):
- Full surface mirroring tgeometry over geodetic coordinates
- Tests: 041_tgeography_parity.test
tgeogpoint (temporal geodetic point, mirrors tgeompoint):
- Full surface: all scalar functions, predicates, distance, I/O
- Tests: 042_tgeogpoint_parity.test
Infrastructure:
- TRTREE index extended to every bbox-bearing column type (STBox, TBox, CBBuffer)
- Aggregate additions: MergeAgg, AppendSequence, AppendSequenceGaps, SpanUnionAgg,
SetUnionAgg (text + geometry), WcountAgg(tspatial), window aggregates (wmin/wmax/wsum/wavg)
- TcentroidAgg 3D dispatch; SkipList aggregates renamed to *Agg per RFC #827
- Single-tile getters: getValueTile / getTBoxTimeTile / getValueTimeTile + spatial variants
- kNN distance: NAD scalar, |=| operator, NAI, shortestLine
- fix(aggregates): make Float8ToDatum portable for 32-bit Datum builds
- fix(index): rtree_index_create_physical — correct column-type dispatch
- Tests: 025–031, 050–064 parity test files activated
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Maps the file-level overlaps between commits already on main and the open consolidate/* parity PRs (#97-#104) plus PR #111 (per-thread MEOS init). Each overlap row names the conflicting commit and PR; the resolution-options section spells out the three viable paths (rebase, revert+fold, keep both) so the maintainer can pick per PR. Working artefact — delete once consolidations merge.
Cross-reference:
|
Two new docs: - docs/PR-COORDINATION.md — ecosystem policy: gh pr list is the first step before any code change; don't duplicate or conflict with in-flight PRs/policies. Cross-ecosystem variant. One PR = one commit = one feature consolidation rule with the git commit-tree squash recipe. - docs/CONSOLIDATION-PLAN.md — working artefact mapping the file-level overlap between commits already on main and the open consolidate/* parity PRs (#97/#98/#99/#100/#102/#103/#104) plus PR #111 (per-thread MEOS init). Three resolution options per overlap (rebase / revert+fold / keep both); maintainer picks per PR. Pre-emptive policy preventing the duplication and policy-conflict failures that produced the consolidate/* / main overlap and the single-timezone / per-thread-MEOS-init clash.
…nsolidates #115 + #119) Three related artefacts that prevent the same class of failure (parallel work on the same surface drifting in policy and offset state): docs/PR-COORDINATION.md — ecosystem policy: gh pr list is the first step before any code change; minimise PR count by folding into existing PRs; squash each PR to a single commit before review. Cross-ecosystem variant for MobilityDB / JMEOS / PyMEOS / MobilitySpark / MEOS-API. docs/CONSOLIDATION-PLAN.md — file-level overlap matrix between commits already on main and the open consolidate/* parity PRs (#97/#98/#99/ #100/#102/#103/#104) plus PR #111 (per-thread MEOS init); three resolution options per overlap. Working artefact, delete once consolidations land. scripts/lint-tz-pinned-tests.py — flags every line in an expected-output block that carries a hardcoded UTC offset. Pre-commit gate / CI lint. Today reports 734 hits across 43 files; the lint makes the timezone-neutral migration trackable. scripts/parity-audit.py — adds an OUT_OF_SCOPE_NAMES bucket for function names that are out-of-scope by domain (not by suffix pattern): - transform_gk: Gauss-Krüger projection added to MobilityDB for the SECONDO platform integration; no equivalent need in MobilityDuck. - create_trip: BerlinMOD synthetic-trip generator; runs in MobilityDB / SECONDO and emits parquet artefacts that MobilityDuck consumes — MobilityDuck does not need to host the generator itself. Pairs naturally with PR #111 / commit 9dd765a's timezone-neutral test policy: the doc tells contributors what to do, the lint enforces it, the parity audit reflects realistic coverage now that two domain- specific names are off the missing list.
|
Superseded by the consolidated parity batch at #126 ( The work on this branch — tgeometry + tgeography + tgeogpoint — full parity surface — is now part of the squashed addressable-parity surface that brings MobilityDuck to 943/943 = 100.0% of the active addressable temporal + geo names. Closing to keep the review queue focused on the three active stacked PRs (#126 → #130 → #129) and the four orthogonal PRs (#105 / #111 / #113 / #117 / #120). Branch |
Summary
Consolidates PR #92 (previously 18 commits) into one squashed commit adding three new spatial temporal types.
tgeometry (rigid-body 2D geometry):
tgeography (geodetic geometry):
tgeogpoint (temporal geodetic point):
Infrastructure:
Test plan
test/sql/parity/040_tgeometry_parity.testtest/sql/parity/041_tgeography_parity.testtest/sql/parity/042_tgeogpoint_parity.testtest/sql/parity/050_index_types.testthroughtest/sql/parity/064_alt_tile_emitters.test🤖 Generated with Claude Code