feat(parity): batch — bearing + eCovers/tCovers + stbox dim + seqSetGaps (consolidates #122+#123+#124+#125)#126
Open
estebanzimanyi wants to merge 1 commit into
Conversation
This was referenced May 10, 2026
estebanzimanyi
added a commit
that referenced
this pull request
May 10, 2026
Spatial-rel exports `tcontains_geo_tgeo`, `tdisjoint_*_*`, `tintersects_*_*`, `ttouches_*_*`, `tdwithin_*_*` produce a tbool covering the whole input duration; restriction is composed at the call site via `temporal_restrict_value` when the SQL surface needs it. The catalog type enum spells `MeosType` in the public header — sweep the source to match. `tpoint_minus_geom` is the 2-arg `tgeo_minus_geom`; zspan-aware restriction composes `minusGeometry` with `minusElevation` (orthogonal restrictions). The cross-type predicate templates in `tgeometry_ops.cpp`, `tgeography_ops.cpp` and `tgeogpoint_ops.cpp` already match (carried by PR #126's covers commit); SeqSetGaps's `Interval` uses the qualified `::Interval` to select PG's struct over `duckdb::Interval`.
2 tasks
6586f5b to
a1ccfaa
Compare
This was referenced May 11, 2026
2dc95c0 to
c53a482
Compare
This was referenced May 12, 2026
Closed
Closed
c53a482 to
0ae9c41
Compare
This was referenced May 12, 2026
estebanzimanyi
added a commit
that referenced
this pull request
May 21, 2026
`meosType` (lower-case) is the **pre-consolidation** MEOS type name; `MeosType` (upper-case) is the **post-consolidation** target that the upstream rename sweep has not yet reached. The current vcpkg pin (`vcpkg_ports/meos/portfile.cmake` REF f11b7443ee98…) is still pre-consolidation: `meos/include/temporal/meos_catalog.h` line 121 declares the typedef as `} meosType;` and every MEOS API uses the lower-case spelling. MobilityDuck's source code consistently uses `meosType` to match — `grep -rn '\bMeosType\b' src/` finds the name only on the alias line and its comment, nowhere else. c8cad6d added `using meosType = MeosType;` as a forward-looking bridge for the eventual consolidation bump. That bridge points at `MeosType`, which the current pin does NOT yet expose, so it breaks every PR's Linux arm64 build with: /duckdb_build_dir/src/include/tydef.hpp:18:18: error: ‘MeosType’ does not name a type; did you mean ‘meosType’? The fix is to drop the premature alias and replace the misleading comment with one that documents the pre/post-consolidation distinction and the resume path for the next pin bump — at that point a reviewer can either restore the bridge (this time it'll be valid because `MeosType` will exist) or sweep the MobilityDuck source from `meosType` to `MeosType` in a single PR. Unblocks every in-flight PR's Linux arm64 build: #126, #130, #149, #158, #159, #160, plus the entire `feat/*_port_core` extended-type stack (#148/#150/#151/#153/#155/#156).
estebanzimanyi
added a commit
that referenced
this pull request
May 21, 2026
`meosType` (lower-case) is the **pre-consolidation** MEOS type name; `MeosType` (upper-case) is the **post-consolidation** target that the upstream rename sweep has not yet reached. The current vcpkg pin (`vcpkg_ports/meos/portfile.cmake` REF f11b7443ee98…) is still pre-consolidation: `meos/include/temporal/meos_catalog.h` line 121 declares the typedef as `} meosType;` and every MEOS API uses the lower-case spelling. MobilityDuck's source code consistently uses `meosType` to match — `grep -rn '\bMeosType\b' src/` finds the name only on the alias line and its comment, nowhere else. c8cad6d added `using meosType = MeosType;` as a forward-looking bridge for the eventual consolidation bump. That bridge points at `MeosType`, which the current pin does NOT yet expose, so it breaks every PR's Linux arm64 build with: /duckdb_build_dir/src/include/tydef.hpp:18:18: error: ‘MeosType’ does not name a type; did you mean ‘meosType’? The fix is to drop the premature alias and replace the misleading comment with one that documents the pre/post-consolidation distinction and the resume path for the next pin bump — at that point a reviewer can either restore the bridge (this time it'll be valid because `MeosType` will exist) or sweep the MobilityDuck source from `meosType` to `MeosType` in a single PR. Unblocks every in-flight PR's Linux arm64 build: #126, #130, #149, #158, #159, #160, plus the entire `feat/*_port_core` extended-type stack (#148/#150/#151/#153/#155/#156).
estebanzimanyi
added a commit
that referenced
this pull request
May 21, 2026
`meosType` (lower-case) is the **pre-consolidation** MEOS type name; `MeosType` (upper-case) is the **post-consolidation** target that the upstream rename sweep has not yet reached. The current vcpkg pin (`vcpkg_ports/meos/portfile.cmake` REF f11b7443ee98…) is still pre-consolidation: `meos/include/temporal/meos_catalog.h` line 121 declares the typedef as `} meosType;` and every MEOS API uses the lower-case spelling. MobilityDuck's source code consistently uses `meosType` to match — `grep -rn '\bMeosType\b' src/` finds the name only on the alias line and its comment, nowhere else. c8cad6d added `using meosType = MeosType;` as a forward-looking bridge for the eventual consolidation bump. That bridge points at `MeosType`, which the current pin does NOT yet expose, so it breaks every PR's Linux arm64 build with: /duckdb_build_dir/src/include/tydef.hpp:18:18: error: ‘MeosType’ does not name a type; did you mean ‘meosType’? The fix is to drop the premature alias and replace the misleading comment with one that documents the pre/post-consolidation distinction and the resume path for the next pin bump — at that point a reviewer can either restore the bridge (this time it'll be valid because `MeosType` will exist) or sweep the MobilityDuck source from `meosType` to `MeosType` in a single PR. Unblocks every in-flight PR's Linux arm64 build: #126, #130, #149, #158, #159, #160, plus the entire `feat/*_port_core` extended-type stack (#148/#150/#151/#153/#155/#156).
estebanzimanyi
added a commit
that referenced
this pull request
May 21, 2026
`meosType` (lower-case) is the **pre-consolidation** MEOS type name; `MeosType` (upper-case) is the **post-consolidation** target that the upstream rename sweep has not yet reached. The current vcpkg pin (`vcpkg_ports/meos/portfile.cmake` REF f11b7443ee98…) is still pre-consolidation: `meos/include/temporal/meos_catalog.h` line 121 declares the typedef as `} meosType;` and every MEOS API uses the lower-case spelling. MobilityDuck's source code consistently uses `meosType` to match — `grep -rn '\bMeosType\b' src/` finds the name only on the alias line and its comment, nowhere else. c8cad6d added `using meosType = MeosType;` as a forward-looking bridge for the eventual consolidation bump. That bridge points at `MeosType`, which the current pin does NOT yet expose, so it breaks every PR's Linux arm64 build with: /duckdb_build_dir/src/include/tydef.hpp:18:18: error: ‘MeosType’ does not name a type; did you mean ‘meosType’? The fix is to drop the premature alias and replace the misleading comment with one that documents the pre/post-consolidation distinction and the resume path for the next pin bump — at that point a reviewer can either restore the bridge (this time it'll be valid because `MeosType` will exist) or sweep the MobilityDuck source from `meosType` to `MeosType` in a single PR. Unblocks every in-flight PR's Linux arm64 build: #126, #130, #149, #158, #159, #160, plus the entire `feat/*_port_core` extended-type stack (#148/#150/#151/#153/#155/#156).
estebanzimanyi
added a commit
that referenced
this pull request
May 21, 2026
`meosType` (lower-case) is the **pre-consolidation** MEOS type name; `MeosType` (upper-case) is the **post-consolidation** target that the upstream rename sweep has not yet reached. The current vcpkg pin (`vcpkg_ports/meos/portfile.cmake` REF f11b7443ee98…) is still pre-consolidation: `meos/include/temporal/meos_catalog.h` line 121 declares the typedef as `} meosType;` and every MEOS API uses the lower-case spelling. MobilityDuck's source code consistently uses `meosType` to match — `grep -rn '\bMeosType\b' src/` finds the name only on the alias line and its comment, nowhere else. c8cad6d added `using meosType = MeosType;` as a forward-looking bridge for the eventual consolidation bump. That bridge points at `MeosType`, which the current pin does NOT yet expose, so it breaks every PR's Linux arm64 build with: /duckdb_build_dir/src/include/tydef.hpp:18:18: error: ‘MeosType’ does not name a type; did you mean ‘meosType’? The fix is to drop the premature alias and replace the misleading comment with one that documents the pre/post-consolidation distinction and the resume path for the next pin bump — at that point a reviewer can either restore the bridge (this time it'll be valid because `MeosType` will exist) or sweep the MobilityDuck source from `meosType` to `MeosType` in a single PR. Unblocks every in-flight PR's Linux arm64 build: #126, #130, #149, stack (#148/#150/#151/#153/#155/#156).
estebanzimanyi
added a commit
that referenced
this pull request
May 26, 2026
PRs #126 and #130 have been failing the macOS osx_arm64 unittest with: Invalid hex string, length (69) has to be a multiple of two! That message is from DuckDB's hex/blob decoder rejecting an odd-length string — meaning one of the MEOS `*_as_hexwkb` producers is emitting a 69-char hex string on that platform. Hex strings of WKB-encoded MEOS values must always be even-length (each byte is encoded as 2 hex chars), so the producer is either: - producing a literal odd-length string (MEOS-side bug), or - producing an even-length string with an embedded null at an odd position (DuckDB sees that null as the string end). This commit wraps every `*_as_hexwkb` call-site with a diagnostic-grade precondition check that runs immediately after the MEOS call returns. When the producer emits odd-length output, the exception message now includes both `strlen(hex)` and the `sz` out-parameter reported by MEOS — pinpointing which side is wrong and what the truncation point was. Sites instrumented (7 producers): * src/geo/tgeompoint.cpp — TgeoAsHexWkbExec (temporal_as_hexwkb) * src/geo/stbox_functions.cpp — Stbox_as_hexwkb (stbox_as_hexwkb) * src/temporal/span_functions.cpp — Span_as_hexwkb * src/temporal/spanset_functions.cpp — Spanset_as_hexwkb * src/temporal/set_functions.cpp — Set_as_hexwkb * src/temporal/tbox_functions.cpp — Tbox_as_hexwkb * src/temporal/temporal_functions.cpp — Temporal_as_hexwkb Each site also switches `StringVector::AddString(result, hex)` (which uses `strlen(hex)` implicitly) to `AddString(result, hex, actual)` (which uses the explicit length we just measured), so any latent embedded-null bug becomes detectable at the producer rather than the consumer. The change is intentionally a no-op on green paths: hex strings that are already even-length are passed through with no extra behaviour change, just an explicit length argument. Refs: #126, #130, #158 (touches some of the same files; sequence after #158 lands).
131e45d to
0ae9c41
Compare
45df2ad to
2067f2a
Compare
2057fb5 to
a44739e
Compare
2067f2a to
74ea89f
Compare
a44739e to
c74aea5
Compare
74ea89f to
e12394e
Compare
c74aea5 to
92db319
Compare
e12394e to
8d61366
Compare
87353e3 to
5555d7c
Compare
db34f35 to
a8d5194
Compare
5555d7c to
99b514c
Compare
…, dimensional stbox constructors, and geo set I/O
99b514c to
13eaacb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Rolling-topic parity additions PR per the ecosystem PR consolidation policy. Four genuinely independent parity additions to MobilityDuck, each one feature commit, no file overlap between commits:
feat(parity): bearing — initial bearing for tgeompoint and tgeogpoint(was PR #122)Adds
bearing(tgeompoint, tgeompoint)andbearing(tgeogpoint, tgeogpoint)mapping to MEOS'sbearing_*family.feat(parity): eCovers (BOOLEAN) and tCovers (tbool) for tgeo(was PR #123)Closes the asymmetric gap on the spatial-rel surface —
eCoversreturns BOOLEAN (ever-covers),tCoversreturns tbool (per-instant covers).feat(parity): stbox dimensional constructors (stboxX/Z/T/XT/ZT, geodstbox*)(was PR #124)Exposes the 6 dimension-explicit STBOX constructors plus the geodetic variants — matches MobilityDB's surface.
feat(parity): SeqSetGaps for all 8 temporal types (closes long-standing #187)(was PR #125)Adds
seqSetGaps(temporal, interval)for tbool/tint/tfloat/ttext/tgeompoint/tgeogpoint/tgeometry/tgeography. Closes the long-standing Fix worker-thread and linkage crashes; complete extended-type MFJSON input #187 user request.The four were originally split because they're independent parity additions (different MEOS surfaces, different test files). Folding them is purely a queue-optimisation: same domain (parity additions to MobilityDuck), same author, zero file overlap (each adds its own
0NNb_*.testfile undertest/sql/parity/).The earlier 4 PRs each carried a duplicate copy of the consolidation-base commit from #120 (
docs+scripts: PR coordination policy); that's been eliminated here — the consolidation-base will arrive via #120 itself. This PR carries only the 4 feature commits.Closes
Test plan
056b_bearing.testpasses locally070b_covers.testpasses locally051b_stbox_dimensional_constructors.testpasses locally022b_seqsetgaps.testpasses locally