feat(bindings): temporal ops parity — boxops / comparison / position / precision / same#97
feat(bindings): temporal ops parity — boxops / comparison / position / precision / same#97estebanzimanyi wants to merge 1 commit into
Conversation
…sors/tail-batch
Consolidates 5 parity branches:
- feat/parity-temporal-posops-aliases: temporal_before/after/overbefore/overafter aliases,
temporal_left/right/overleft/overright aliases for numeric-axis position ops
- feat/parity-tcompops-followups: temporal_teq/tne/tlt/tle/tgt/tge returning tbool,
tboxes/splitNTboxes/splitEachNTboxes tnumber→LIST(TBOX)
- feat/parity-temporal-boxops-followups: temporal_contains/contained/overlaps/adjacent
named aliases across all topo-predicate surfaces (t×t, t×tstzspan, t×numspan, t×tbox)
- feat/parity-temporal-022-accessors: tprecision/tsample time-domain rebinning
- feat/parity-small-tail-batch: small tail-batch temporal functions
Infrastructure:
- Add duckdb_extension_load(icu) to extension_config.cmake so SET TimeZone='UTC'
works in tests; tests that use it now carry require icu
- Call meos_initialize_timezone("UTC") at extension load so MEOS always formats
timestamps in UTC, matching expected test output regardless of system locale
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1af2046 to
3fe8951
Compare
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 — temporal ops parity — boxops / comparison / position / precision / same — 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 5 individual parity PRs (previously #72, #73, #74, #78, #80) into one squashed commit.
temporal_* named aliasesfor all temporal position predicates (before/after/overbefore/overafter)Temporal(teq/tne/tlt/tle/tgt/tge)tboxes/splitN/splitEachNtprecision/tsample— temporal time-domain rebinningtemporal_same— closes the topo-predicate gapTest plan
test/sql/parity/034_temporal_posops.testtest/sql/parity/030_temporal_compops.test🤖 Generated with Claude Code