Skip to content

Add the core tnpoint type port#150

Open
estebanzimanyi wants to merge 1 commit into
feat/tcbuffer-port-corefrom
feat/tnpoint-port-core
Open

Add the core tnpoint type port#150
estebanzimanyi wants to merge 1 commit into
feat/tcbuffer-port-corefrom
feat/tnpoint-port-core

Conversation

@estebanzimanyi
Copy link
Copy Markdown
Member

Port the temporal network point type into MobilityDuck as a clean clone of the canonical tgeometry/tcbuffer port, core scope only: the type, constructors, text/EWKT/MFJSON input, casts, the subtype-agnostic temporal accessor and modifier surface, and the tnpoint value model (npoint-text getValue/startValue/endValue plus a route accessor over the network-relative Npoint route-id-and-position value, which has no intrinsic coordinates). The boxops/positions/spatial-rels/distance ops layer is intentionally not ported and is a separate follow-up. Because the tnpoint network model resolves route geometries from a ways CSV that MEOS reads from a hardcoded path with no setter, the canonical ways1000.csv is embedded and materialized at that path on load, mirroring the existing embedded spatial_ref_sys handling. The pinned MEOS is set to a temporary provisional pin on a contributor-fork integration branch that composes MobilityDB PR #1051 (tcbuffer MF-JSON, which the stacked tcbuffer port needs) and PR #951 (tnpoint MF-JSON, wired through the generic temporal_from_mfjson dispatch) on top of MobilityDB master, because neither MF-JSON surface is on master yet; the portfile carries the flip-to-merged-master recipe and this is provisional pending the #134 to #145 chain plus #1051 and #951 merging. This stacks on PR #148, so #145's and #148's diffs show here until they merge.

@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from 08a97a5 to 7d0d948 Compare May 17, 2026 08:37
estebanzimanyi added a commit to estebanzimanyi/MobilityDuck that referenced this pull request May 20, 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: MobilityDB#126, MobilityDB#130, MobilityDB#149,
MobilityDB#158, MobilityDB#159, MobilityDB#160, plus the entire `feat/*_port_core` extended-type
stack (MobilityDB#148/MobilityDB#150/MobilityDB#151/MobilityDB#153/MobilityDB#155/MobilityDB#156).
@estebanzimanyi
Copy link
Copy Markdown
Member Author

Reviewer's quickstart — ~5 minutes

What this PR does in one sentence: adds the core MobilityDuck port of the tnpoint extended temporal type — a thin trampoline layer over the matching MEOS C surface, registering the type, its constructors, accessors, and operators as DuckDB scalar functions.

Files to read (priority order):

  1. src/mobilityduck_extension.cpp — registration block: TnpointType::RegisterType(loader) + RegisterScalarFunctions(loader) etc.
  2. src/geo/tnpoint.cpp — the trampoline implementations. Each scalar is the same shape: deserialize → call MEOS → serialize.
  3. test/sql/tnpoint.test — assertions for the constructor / accessor / operator coverage.

Upstream dependency: depends on MobilityDB #1082 (the MEOS-C tnpoint typed surface) reaching master. Without that, the trampoline targets don't exist in the linked libmeos and the build fails on undefined-symbol.

Cross-link: the Linux arm64 build failure here is the MeosType alias bug — resolves when #161 lands. The remaining gate is the MEOS-side dependency above.

Recommended sequence: wait for MobilityDB #1082 to land → bump the MEOS pin in vcpkg_ports/meos/portfile.cmake → rebuild this PR's branch → CI green.

Why it's safe to merge (when the upstream dependency is satisfied): strictly additive — new type, new functions, new tests. No existing functionality changed.

@estebanzimanyi
Copy link
Copy Markdown
Member Author

Static MEOS-symbol analysis — this PR may already be unblocked

Static inspection of the current pinned MEOS (vcpkg_ports/meos/portfile.cmake REF f11b7443ee98…) shows it already exports the symbols this PR needs:

nm -D --defined-only libmeos.so | grep -c ' T npoint'   # 50 functions
nm -D --defined-only libmeos.so | grep -c ' T tnpoint'  # 55 functions

Combined that's 105 npoint/tnpoint MEOS functions already on the pin — sufficient for the surface this PR registers (npoint_in, npoint_out, npoint_from_instant_value, tnpoint_from_mfjson, tnpoint_in, tnpoint_route, etc.).

Implication

Unlike the other 5 *_port_core PRs (which are genuinely gated on MobilityDB #1081/#1083/#1084/#1085 reaching master), this PR's only remaining build blocker is the Linux arm64 MeosType alias bug — which #161 resolves.

Recommended sequencing: rebase this PR on main once #161 lands. CI should then go green on Linux arm64 and amd64; macOS may still hit the separate hex-WKB bug being diagnosed in #162.

This is the only one of the 6 *_port_core PRs that doesn't need upstream MEOS work.

@estebanzimanyi
Copy link
Copy Markdown
Member Author

Correction to my earlier MEOS-symbol-gap comment

I posted earlier that this PR's MEOS dependencies are already satisfied by the current pin (50 npoint* + 55 tnpoint* symbols exported). That's still technically true, but I missed an important fact: this PR is git-stacked on #148 (base=feat/tcbuffer-port-core), so it transitively includes #148's tcbuffer code in its diff (~14,884 line additions vs main, of which most is the tcbuffer stack content).

Result: building this branch as-is still hits the same link-time gap as #148 (the cbuffer_in / tcbuffer_in / etc. symbols that need MobilityDB#1081 to land first), even though the tnpoint-specific symbols are present.

Two paths forward

  1. Rebase feat/tnpoint-port-core directly onto main (instead of feat/tcbuffer-port-core), extracting just the tnpoint additions. Then this PR would actually be buildable today against the current MEOS pin. Risk: needs a careful sibling-extraction since some of the surface in Add the core tcbuffer type port #148 might be shared infrastructure.

  2. Keep the stack ordering and wait for Add the core tcbuffer type port #148 to land first. Simpler but means this PR is gated on the same MobilityDB#1081 timing.

Either path works; option 1 is the one that delivers a buildable-today demonstration of tnpoint parity. Happy to attempt the rebase from the fork if you'd like — just ack and I'll open a separate PR with the de-stacked branch.

estebanzimanyi added a commit to estebanzimanyi/MobilityDuck 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: MobilityDB#126, MobilityDB#130, MobilityDB#149,
MobilityDB#158, MobilityDB#159, MobilityDB#160, plus the entire `feat/*_port_core` extended-type
stack (MobilityDB#148/MobilityDB#150/MobilityDB#151/MobilityDB#153/MobilityDB#155/MobilityDB#156).
estebanzimanyi added a commit to estebanzimanyi/MobilityDuck 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: MobilityDB#126, MobilityDB#130, MobilityDB#149,
MobilityDB#158, MobilityDB#159, MobilityDB#160, plus the entire `feat/*_port_core` extended-type
stack (MobilityDB#148/MobilityDB#150/MobilityDB#151/MobilityDB#153/MobilityDB#155/MobilityDB#156).
estebanzimanyi added a commit to estebanzimanyi/MobilityDuck 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: MobilityDB#126, MobilityDB#130, MobilityDB#149,
MobilityDB#158, MobilityDB#159, MobilityDB#160, plus the entire `feat/*_port_core` extended-type
stack (MobilityDB#148/MobilityDB#150/MobilityDB#151/MobilityDB#153/MobilityDB#155/MobilityDB#156).
estebanzimanyi added a commit to estebanzimanyi/MobilityDuck 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: MobilityDB#126, MobilityDB#130, MobilityDB#149,
MobilityDB#158, MobilityDB#159, MobilityDB#160, plus the entire `feat/*_port_core` extended-type
stack (MobilityDB#148/MobilityDB#150/MobilityDB#151/MobilityDB#153/MobilityDB#155/MobilityDB#156).
estebanzimanyi added a commit to estebanzimanyi/MobilityDuck 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: MobilityDB#126, MobilityDB#130, MobilityDB#149,
MobilityDB#158, MobilityDB#159, MobilityDB#160, plus the entire `feat/*_port_core` extended-type
stack (MobilityDB#148/MobilityDB#150/MobilityDB#151/MobilityDB#153/MobilityDB#155/MobilityDB#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,
#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,
#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,
#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 estebanzimanyi force-pushed the feat/tcbuffer-port-core branch from e102186 to e495320 Compare May 26, 2026 22:07
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from 757f880 to 0b7c6af Compare May 26, 2026 22:07
@estebanzimanyi estebanzimanyi force-pushed the feat/tcbuffer-port-core branch from e495320 to 9e4a975 Compare May 26, 2026 22:44
estebanzimanyi added a commit that referenced this pull request May 26, 2026
Brings the temporal network point (tnpoint) type into the accumulate:
construction, text/EWKT/MFJSON I/O, casts, and accessors, registered in
LoadInternal after the tcbuffer surface. The network model resolves route
geometries from a ways CSV; MEOS hardcodes its path
(/usr/local/share/ways1000.csv) with no setter, so the canonical ways1000.csv
is embedded (ways_csv.inc) and materialized there on load (best-effort).

Fixes applied on top of the #150 branch:
- getValue/startValue/endValue value executors renamed to tnpoint-unique names
  (Tnpoint_{get,start,end}_value). Generic names (Tinstant_value /
  Temporal_start_value / Temporal_end_value) are also defined at namespace
  scope in the other geo .cpp — an ODR violation that would otherwise dispatch
  these to the surviving (geometry) definition and render the npoint as a
  geometry ("Unknown geometry type: 0").
- Refresh the asEWKT test expecteds with the ways-network SRID prefix
  (SRID=5676;), matching MobilityDB's asEWKT(npoint) reference; asText omits it.

Full sqllogictest suite green: 1799 assertions across 78 test cases.
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from 0b7c6af to d801cc3 Compare May 26, 2026 22:44
estebanzimanyi added a commit that referenced this pull request May 26, 2026
The #148 / #150 ports registered only the From{MFJSON,Binary,EWKB,HexWKB,
HexEWKB} parsers; MobilityDB also exposes the matching emitters for both
types. Add asMFJSON (temporal_as_mfjson) and asBinary / asEWKB / asHexWKB /
asHexEWKB (temporal_as_wkb / temporal_as_hexwkb), with type-unique exec names
(generic names collide across the geo .cpp — the ODR caveat). Mirrors the
emitters folded into tpose (#151). Adds asMFJSON/asBinary round-trip identity
tests for both types.

Full sqllogictest suite green: 1834 assertions across 79 test cases.
@estebanzimanyi estebanzimanyi force-pushed the feat/tcbuffer-port-core branch from 9e4a975 to c30fdde Compare May 27, 2026 00:26
estebanzimanyi added a commit that referenced this pull request May 27, 2026
Brings the temporal network point (tnpoint) type into the accumulate:
construction, text/EWKT/MFJSON I/O, casts, and accessors, registered in
LoadInternal after the tcbuffer surface. The network model resolves route
geometries from a ways CSV; MEOS hardcodes its path
(/usr/local/share/ways1000.csv) with no setter, so the canonical ways1000.csv
is embedded (ways_csv.inc) and materialized there on load (best-effort).

Fixes applied on top of the #150 branch:
- getValue/startValue/endValue value executors renamed to tnpoint-unique names
  (Tnpoint_{get,start,end}_value). Generic names (Tinstant_value /
  Temporal_start_value / Temporal_end_value) are also defined at namespace
  scope in the other geo .cpp — an ODR violation that would otherwise dispatch
  these to the surviving (geometry) definition and render the npoint as a
  geometry ("Unknown geometry type: 0").
- Refresh the asEWKT test expecteds with the ways-network SRID prefix
  (SRID=5676;), matching MobilityDB's asEWKT(npoint) reference; asText omits it.

Full sqllogictest suite green: 1799 assertions across 78 test cases.
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from d801cc3 to 5d0f3f9 Compare May 27, 2026 00:26
estebanzimanyi added a commit that referenced this pull request May 27, 2026
The #148 / #150 ports registered only the From{MFJSON,Binary,EWKB,HexWKB,
HexEWKB} parsers; MobilityDB also exposes the matching emitters for both
types. Add asMFJSON (temporal_as_mfjson) and asBinary / asEWKB / asHexWKB /
asHexEWKB (temporal_as_wkb / temporal_as_hexwkb), with type-unique exec names
(generic names collide across the geo .cpp — the ODR caveat). Mirrors the
emitters folded into tpose (#151). Adds asMFJSON/asBinary round-trip identity
tests for both types.

Full sqllogictest suite green: 1834 assertions across 79 test cases.
@estebanzimanyi estebanzimanyi force-pushed the feat/tcbuffer-port-core branch from c30fdde to df3adbf Compare May 27, 2026 01:43
estebanzimanyi added a commit that referenced this pull request May 27, 2026
Brings the temporal network point (tnpoint) type into the accumulate:
construction, text/EWKT/MFJSON I/O, casts, and accessors, registered in
LoadInternal after the tcbuffer surface. The network model resolves route
geometries from a ways CSV; MEOS hardcodes its path
(/usr/local/share/ways1000.csv) with no setter, so the canonical ways1000.csv
is embedded (ways_csv.inc) and materialized there on load (best-effort).

Fixes applied on top of the #150 branch:
- getValue/startValue/endValue value executors renamed to tnpoint-unique names
  (Tnpoint_{get,start,end}_value). Generic names (Tinstant_value /
  Temporal_start_value / Temporal_end_value) are also defined at namespace
  scope in the other geo .cpp — an ODR violation that would otherwise dispatch
  these to the surviving (geometry) definition and render the npoint as a
  geometry ("Unknown geometry type: 0").
- Refresh the asEWKT test expecteds with the ways-network SRID prefix
  (SRID=5676;), matching MobilityDB's asEWKT(npoint) reference; asText omits it.

Full sqllogictest suite green: 1799 assertions across 78 test cases.
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from 5d0f3f9 to 94e01ad Compare May 27, 2026 01:43
estebanzimanyi added a commit that referenced this pull request May 27, 2026
The #148 / #150 ports registered only the From{MFJSON,Binary,EWKB,HexWKB,
HexEWKB} parsers; MobilityDB also exposes the matching emitters for both
types. Add asMFJSON (temporal_as_mfjson) and asBinary / asEWKB / asHexWKB /
asHexEWKB (temporal_as_wkb / temporal_as_hexwkb), with type-unique exec names
(generic names collide across the geo .cpp — the ODR caveat). Mirrors the
emitters folded into tpose (#151). Adds asMFJSON/asBinary round-trip identity
tests for both types.

Full sqllogictest suite green: 1834 assertions across 79 test cases.
@estebanzimanyi estebanzimanyi force-pushed the feat/tcbuffer-port-core branch from df3adbf to 66e1262 Compare May 28, 2026 21:28
estebanzimanyi added a commit that referenced this pull request May 28, 2026
Brings the temporal network point (tnpoint) type into the accumulate:
construction, text/EWKT/MFJSON I/O, casts, and accessors, registered in
LoadInternal after the tcbuffer surface. The network model resolves route
geometries from a ways CSV; MEOS hardcodes its path
(/usr/local/share/ways1000.csv) with no setter, so the canonical ways1000.csv
is embedded (ways_csv.inc) and materialized there on load (best-effort).

Fixes applied on top of the #150 branch:
- getValue/startValue/endValue value executors renamed to tnpoint-unique names
  (Tnpoint_{get,start,end}_value). Generic names (Tinstant_value /
  Temporal_start_value / Temporal_end_value) are also defined at namespace
  scope in the other geo .cpp — an ODR violation that would otherwise dispatch
  these to the surviving (geometry) definition and render the npoint as a
  geometry ("Unknown geometry type: 0").
- Refresh the asEWKT test expecteds with the ways-network SRID prefix
  (SRID=5676;), matching MobilityDB's asEWKT(npoint) reference; asText omits it.

Full sqllogictest suite green: 1799 assertions across 78 test cases.

(cherry picked from commit 94e01ad)
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from 94e01ad to 0687726 Compare May 28, 2026 21:33
estebanzimanyi added a commit that referenced this pull request May 29, 2026
Brings the temporal network point (tnpoint) type into the accumulate:
construction, text/EWKT/MFJSON I/O, casts, and accessors, registered in
LoadInternal after the tcbuffer surface. The network model resolves route
geometries from a ways CSV; MEOS hardcodes its path
(/usr/local/share/ways1000.csv) with no setter, so the canonical ways1000.csv
is embedded (ways_csv.inc) and materialized there on load (best-effort).

Fixes applied on top of the #150 branch:
- getValue/startValue/endValue value executors renamed to tnpoint-unique names
  (Tnpoint_{get,start,end}_value). Generic names (Tinstant_value /
  Temporal_start_value / Temporal_end_value) are also defined at namespace
  scope in the other geo .cpp — an ODR violation that would otherwise dispatch
  these to the surviving (geometry) definition and render the npoint as a
  geometry ("Unknown geometry type: 0").
- Refresh the asEWKT test expecteds with the ways-network SRID prefix
  (SRID=5676;), matching MobilityDB's asEWKT(npoint) reference; asText omits it.

Full sqllogictest suite green: 1799 assertions across 78 test cases.

(cherry picked from commit 94e01ad)
@estebanzimanyi estebanzimanyi force-pushed the feat/tcbuffer-port-core branch from 66e1262 to 50003cc Compare May 29, 2026 21:33
estebanzimanyi added a commit that referenced this pull request May 29, 2026
Brings the temporal network point (tnpoint) type into the accumulate:
construction, text/EWKT/MFJSON I/O, casts, and accessors, registered in
LoadInternal after the tcbuffer surface. The network model resolves route
geometries from a ways CSV; MEOS hardcodes its path
(/usr/local/share/ways1000.csv) with no setter, so the canonical ways1000.csv
is embedded (ways_csv.inc) and materialized there on load (best-effort).

Fixes applied on top of the #150 branch:
- getValue/startValue/endValue value executors renamed to tnpoint-unique names
  (Tnpoint_{get,start,end}_value). Generic names (Tinstant_value /
  Temporal_start_value / Temporal_end_value) are also defined at namespace
  scope in the other geo .cpp — an ODR violation that would otherwise dispatch
  these to the surviving (geometry) definition and render the npoint as a
  geometry ("Unknown geometry type: 0").
- Refresh the asEWKT test expecteds with the ways-network SRID prefix
  (SRID=5676;), matching MobilityDB's asEWKT(npoint) reference; asText omits it.

Full sqllogictest suite green: 1799 assertions across 78 test cases.

(cherry picked from commit 94e01ad)
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from 0687726 to e8a6e2f Compare May 29, 2026 21:33
@estebanzimanyi estebanzimanyi force-pushed the feat/tcbuffer-port-core branch from 50003cc to 61049d5 Compare May 29, 2026 22:55
estebanzimanyi added a commit that referenced this pull request May 29, 2026
Brings the temporal network point (tnpoint) type into the accumulate:
construction, text/EWKT/MFJSON I/O, casts, and accessors, registered in
LoadInternal after the tcbuffer surface. The network model resolves route
geometries from a ways CSV; MEOS hardcodes its path
(/usr/local/share/ways1000.csv) with no setter, so the canonical ways1000.csv
is embedded (ways_csv.inc) and materialized there on load (best-effort).

Fixes applied on top of the #150 branch:
- getValue/startValue/endValue value executors renamed to tnpoint-unique names
  (Tnpoint_{get,start,end}_value). Generic names (Tinstant_value /
  Temporal_start_value / Temporal_end_value) are also defined at namespace
  scope in the other geo .cpp — an ODR violation that would otherwise dispatch
  these to the surviving (geometry) definition and render the npoint as a
  geometry ("Unknown geometry type: 0").
- Refresh the asEWKT test expecteds with the ways-network SRID prefix
  (SRID=5676;), matching MobilityDB's asEWKT(npoint) reference; asText omits it.

Full sqllogictest suite green: 1799 assertions across 78 test cases.

(cherry picked from commit 94e01ad)
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from e8a6e2f to a0c2f9e Compare May 29, 2026 22:55
@estebanzimanyi estebanzimanyi force-pushed the feat/tcbuffer-port-core branch from 61049d5 to 094218c Compare June 2, 2026 14:04
Brings the temporal network point (tnpoint) type into the accumulate:
construction, text/EWKT/MFJSON I/O, casts, and accessors, registered in
LoadInternal after the tcbuffer surface. The network model resolves route
geometries from a ways CSV; MEOS hardcodes its path
(/usr/local/share/ways1000.csv) with no setter, so the canonical ways1000.csv
is embedded (ways_csv.inc) and materialized there on load (best-effort).

Fixes applied on top of the #150 branch:
- getValue/startValue/endValue value executors renamed to tnpoint-unique names
  (Tnpoint_{get,start,end}_value). Generic names (Tinstant_value /
  Temporal_start_value / Temporal_end_value) are also defined at namespace
  scope in the other geo .cpp — an ODR violation that would otherwise dispatch
  these to the surviving (geometry) definition and render the npoint as a
  geometry ("Unknown geometry type: 0").
- Refresh the asEWKT test expecteds with the ways-network SRID prefix
  (SRID=5676;), matching MobilityDB's asEWKT(npoint) reference; asText omits it.

Full sqllogictest suite green: 1799 assertions across 78 test cases.

(cherry picked from commit 94e01ad)
(cherry picked from commit a0c2f9e)
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from a0c2f9e to f42815a Compare June 2, 2026 14:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant