Skip to content

Add the core tpose type port#151

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

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

Conversation

@estebanzimanyi
Copy link
Copy Markdown
Member

Clones the canonical tgeometry MobilityDuck port for the temporal pose type: type registration, text/EWKT/MFJSON I/O, constructors and the basic accessor surface. The Pose value is a 2D point plus a rotation (3D adds a quaternion); its MEOS MF-JSON support is already on MobilityDB master, so there is no MEOS prerequisite PR and the inherited composed provisional pin is left unchanged. The ops layer is deferred to a later stacked follow-up. Stacks on the tnpoint core port; the #145/#148/#150 diffs and the temporary composed MEOS pin show in the diff until that chain merges.

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 tpose 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: TposeType::RegisterType(loader) + RegisterScalarFunctions(loader) etc.
  2. src/geo/tpose.cpp — the trampoline implementations. Each scalar is the same shape: deserialize → call MEOS → serialize.
  3. test/sql/tpose.test — assertions for the constructor / accessor / operator coverage.

Upstream dependency: depends on MobilityDB #1083 (the MEOS-C tpose 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 #1083 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 — confirmed gated on MobilityDB #1083

Static inspection of the current pinned MEOS (vcpkg_ports/meos/portfile.cmake REF f11b7443ee98…) confirms this PR's expected backing symbols are not yet in the pin:

- `pose*`: 0 exported in current pin
- `tpose*`: 0 exported in current pin

These are the *_meos.c constructor / ctor-from-base / typed-accessor / mfjson surfaces being delivered by MobilityDB #1083. Once that PR reaches master and the MobilityDuck MEOS pin is bumped past it, this PR's link step will go green.

Order of operations

  1. fix: drop broken using meosType = MeosType; alias in tydef.hpp #161 lands → Linux arm64 build clears the MeosType alias bug
  2. MobilityDB #1083 reaches master
  3. Bump the pin in vcpkg_ports/meos/portfile.cmake (separate small PR, ~3 lines)
  4. Rebase this PR; expect green CI

Until step 2, this PR's CI cannot go green even if everything else here is correct.

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 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 to estebanzimanyi/MobilityDuck that referenced this pull request May 25, 2026
Brings the temporal pose (tpose) type into the accumulate: construction,
text/EWKT/MFJSON/WKB I/O, casts, and accessors, registered in LoadInternal
after the tnpoint surface.

Fixes applied on top of the MobilityDB#151 branch:
- getValue/startValue/endValue value executors renamed to tpose-unique names
  (Tpose_{get,start,end}_value) and rendered via pose_as_text (WKT form
  "Pose(POINT(x y),r)"). Generic names collide with the other geo .cpp (ODR
  violation -> geometry renderer -> "Unknown geometry type: 0"); pose_out
  emits the HexWKB/uppercase "POSE (...)" form, not what asText/getValue want.
- Close the output-serialization gap the MobilityDB#151 test exercises but the port
  omitted: register asMFJSON (via temporal_as_mfjson) and asBinary / asEWKB /
  asHexWKB / asHexEWKB (via temporal_as_wkb / temporal_as_hexwkb), with
  tpose-unique exec names. MobilityDB exposes all of these for tpose.
- Fix the setInterp-to-discrete test: a multi-instant continuous sequence
  cannot be discretized (MEOS errors); lift an instant instead, matching
  MobilityDB's 102_tpose reference.

Full sqllogictest suite green: 1830 assertions across 79 test cases.
estebanzimanyi added a commit to estebanzimanyi/MobilityDuck that referenced this pull request May 26, 2026
The MobilityDB#148 / MobilityDB#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 (MobilityDB#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/tnpoint-port-core branch from 757f880 to 0b7c6af Compare May 26, 2026 22:07
@estebanzimanyi estebanzimanyi force-pushed the feat/tpose-port-core branch from 2b4bc5b to a5af848 Compare May 26, 2026 22:07
@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
Brings the temporal pose (tpose) type into the accumulate: construction,
text/EWKT/MFJSON/WKB I/O, casts, and accessors, registered in LoadInternal
after the tnpoint surface.

Fixes applied on top of the #151 branch:
- getValue/startValue/endValue value executors renamed to tpose-unique names
  (Tpose_{get,start,end}_value) and rendered via pose_as_text (WKT form
  "Pose(POINT(x y),r)"). Generic names collide with the other geo .cpp (ODR
  violation -> geometry renderer -> "Unknown geometry type: 0"); pose_out
  emits the HexWKB/uppercase "POSE (...)" form, not what asText/getValue want.
- Close the output-serialization gap the #151 test exercises but the port
  omitted: register asMFJSON (via temporal_as_mfjson) and asBinary / asEWKB /
  asHexWKB / asHexEWKB (via temporal_as_wkb / temporal_as_hexwkb), with
  tpose-unique exec names. MobilityDB exposes all of these for tpose.
- Fix the setInterp-to-discrete test: a multi-instant continuous sequence
  cannot be discretized (MEOS errors); lift an instant instead, matching
  MobilityDB's 102_tpose reference.

Full sqllogictest suite green: 1830 assertions across 79 test cases.
@estebanzimanyi estebanzimanyi force-pushed the feat/tpose-port-core branch from a5af848 to 2c43ae9 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/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
Brings the temporal pose (tpose) type into the accumulate: construction,
text/EWKT/MFJSON/WKB I/O, casts, and accessors, registered in LoadInternal
after the tnpoint surface.

Fixes applied on top of the #151 branch:
- getValue/startValue/endValue value executors renamed to tpose-unique names
  (Tpose_{get,start,end}_value) and rendered via pose_as_text (WKT form
  "Pose(POINT(x y),r)"). Generic names collide with the other geo .cpp (ODR
  violation -> geometry renderer -> "Unknown geometry type: 0"); pose_out
  emits the HexWKB/uppercase "POSE (...)" form, not what asText/getValue want.
- Close the output-serialization gap the #151 test exercises but the port
  omitted: register asMFJSON (via temporal_as_mfjson) and asBinary / asEWKB /
  asHexWKB / asHexEWKB (via temporal_as_wkb / temporal_as_hexwkb), with
  tpose-unique exec names. MobilityDB exposes all of these for tpose.
- Fix the setInterp-to-discrete test: a multi-instant continuous sequence
  cannot be discretized (MEOS errors); lift an instant instead, matching
  MobilityDB's 102_tpose reference.

Full sqllogictest suite green: 1830 assertions across 79 test cases.
@estebanzimanyi estebanzimanyi force-pushed the feat/tpose-port-core branch from 2c43ae9 to 0ecbc5f 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/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
Brings the temporal pose (tpose) type into the accumulate: construction,
text/EWKT/MFJSON/WKB I/O, casts, and accessors, registered in LoadInternal
after the tnpoint surface.

Fixes applied on top of the #151 branch:
- getValue/startValue/endValue value executors renamed to tpose-unique names
  (Tpose_{get,start,end}_value) and rendered via pose_as_text (WKT form
  "Pose(POINT(x y),r)"). Generic names collide with the other geo .cpp (ODR
  violation -> geometry renderer -> "Unknown geometry type: 0"); pose_out
  emits the HexWKB/uppercase "POSE (...)" form, not what asText/getValue want.
- Close the output-serialization gap the #151 test exercises but the port
  omitted: register asMFJSON (via temporal_as_mfjson) and asBinary / asEWKB /
  asHexWKB / asHexEWKB (via temporal_as_wkb / temporal_as_hexwkb), with
  tpose-unique exec names. MobilityDB exposes all of these for tpose.
- Fix the setInterp-to-discrete test: a multi-instant continuous sequence
  cannot be discretized (MEOS errors); lift an instant instead, matching
  MobilityDB's 102_tpose reference.

Full sqllogictest suite green: 1830 assertions across 79 test cases.
@estebanzimanyi estebanzimanyi force-pushed the feat/tpose-port-core branch from 0ecbc5f to ec74d58 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/tnpoint-port-core branch from 94e01ad to 0687726 Compare May 28, 2026 21:33
estebanzimanyi added a commit that referenced this pull request May 28, 2026
Brings the temporal pose (tpose) type into the accumulate: construction,
text/EWKT/MFJSON/WKB I/O, casts, and accessors, registered in LoadInternal
after the tnpoint surface.

Fixes applied on top of the #151 branch:
- getValue/startValue/endValue value executors renamed to tpose-unique names
  (Tpose_{get,start,end}_value) and rendered via pose_as_text (WKT form
  "Pose(POINT(x y),r)"). Generic names collide with the other geo .cpp (ODR
  violation -> geometry renderer -> "Unknown geometry type: 0"); pose_out
  emits the HexWKB/uppercase "POSE (...)" form, not what asText/getValue want.
- Close the output-serialization gap the #151 test exercises but the port
  omitted: register asMFJSON (via temporal_as_mfjson) and asBinary / asEWKB /
  asHexWKB / asHexEWKB (via temporal_as_wkb / temporal_as_hexwkb), with
  tpose-unique exec names. MobilityDB exposes all of these for tpose.
- Fix the setInterp-to-discrete test: a multi-instant continuous sequence
  cannot be discretized (MEOS errors); lift an instant instead, matching
  MobilityDB's 102_tpose reference.

Full sqllogictest suite green: 1830 assertions across 79 test cases.

(cherry picked from commit ec74d58)
@estebanzimanyi estebanzimanyi force-pushed the feat/tpose-port-core branch from ec74d58 to 34092c1 Compare May 28, 2026 21:38
estebanzimanyi added a commit that referenced this pull request May 29, 2026
Brings the temporal pose (tpose) type into the accumulate: construction,
text/EWKT/MFJSON/WKB I/O, casts, and accessors, registered in LoadInternal
after the tnpoint surface.

Fixes applied on top of the #151 branch:
- getValue/startValue/endValue value executors renamed to tpose-unique names
  (Tpose_{get,start,end}_value) and rendered via pose_as_text (WKT form
  "Pose(POINT(x y),r)"). Generic names collide with the other geo .cpp (ODR
  violation -> geometry renderer -> "Unknown geometry type: 0"); pose_out
  emits the HexWKB/uppercase "POSE (...)" form, not what asText/getValue want.
- Close the output-serialization gap the #151 test exercises but the port
  omitted: register asMFJSON (via temporal_as_mfjson) and asBinary / asEWKB /
  asHexWKB / asHexEWKB (via temporal_as_wkb / temporal_as_hexwkb), with
  tpose-unique exec names. MobilityDB exposes all of these for tpose.
- Fix the setInterp-to-discrete test: a multi-instant continuous sequence
  cannot be discretized (MEOS errors); lift an instant instead, matching
  MobilityDB's 102_tpose reference.

Full sqllogictest suite green: 1830 assertions across 79 test cases.

(cherry picked from commit ec74d58)
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from 0687726 to e8a6e2f Compare May 29, 2026 21:33
estebanzimanyi added a commit that referenced this pull request May 29, 2026
Brings the temporal pose (tpose) type into the accumulate: construction,
text/EWKT/MFJSON/WKB I/O, casts, and accessors, registered in LoadInternal
after the tnpoint surface.

Fixes applied on top of the #151 branch:
- getValue/startValue/endValue value executors renamed to tpose-unique names
  (Tpose_{get,start,end}_value) and rendered via pose_as_text (WKT form
  "Pose(POINT(x y),r)"). Generic names collide with the other geo .cpp (ODR
  violation -> geometry renderer -> "Unknown geometry type: 0"); pose_out
  emits the HexWKB/uppercase "POSE (...)" form, not what asText/getValue want.
- Close the output-serialization gap the #151 test exercises but the port
  omitted: register asMFJSON (via temporal_as_mfjson) and asBinary / asEWKB /
  asHexWKB / asHexEWKB (via temporal_as_wkb / temporal_as_hexwkb), with
  tpose-unique exec names. MobilityDB exposes all of these for tpose.
- Fix the setInterp-to-discrete test: a multi-instant continuous sequence
  cannot be discretized (MEOS errors); lift an instant instead, matching
  MobilityDB's 102_tpose reference.

Full sqllogictest suite green: 1830 assertions across 79 test cases.

(cherry picked from commit ec74d58)
@estebanzimanyi estebanzimanyi force-pushed the feat/tpose-port-core branch from 34092c1 to c73d103 Compare May 29, 2026 21:33
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from e8a6e2f to a0c2f9e Compare May 29, 2026 22:55
estebanzimanyi added a commit that referenced this pull request May 29, 2026
Brings the temporal pose (tpose) type into the accumulate: construction,
text/EWKT/MFJSON/WKB I/O, casts, and accessors, registered in LoadInternal
after the tnpoint surface.

Fixes applied on top of the #151 branch:
- getValue/startValue/endValue value executors renamed to tpose-unique names
  (Tpose_{get,start,end}_value) and rendered via pose_as_text (WKT form
  "Pose(POINT(x y),r)"). Generic names collide with the other geo .cpp (ODR
  violation -> geometry renderer -> "Unknown geometry type: 0"); pose_out
  emits the HexWKB/uppercase "POSE (...)" form, not what asText/getValue want.
- Close the output-serialization gap the #151 test exercises but the port
  omitted: register asMFJSON (via temporal_as_mfjson) and asBinary / asEWKB /
  asHexWKB / asHexEWKB (via temporal_as_wkb / temporal_as_hexwkb), with
  tpose-unique exec names. MobilityDB exposes all of these for tpose.
- Fix the setInterp-to-discrete test: a multi-instant continuous sequence
  cannot be discretized (MEOS errors); lift an instant instead, matching
  MobilityDB's 102_tpose reference.

Full sqllogictest suite green: 1830 assertions across 79 test cases.

(cherry picked from commit ec74d58)
@estebanzimanyi estebanzimanyi force-pushed the feat/tpose-port-core branch from c73d103 to b52d0a4 Compare May 29, 2026 22:55
@estebanzimanyi estebanzimanyi force-pushed the feat/tnpoint-port-core branch from a0c2f9e to f42815a Compare June 2, 2026 14:07
Brings the temporal pose (tpose) type into the accumulate: construction,
text/EWKT/MFJSON/WKB I/O, casts, and accessors, registered in LoadInternal
after the tnpoint surface.

Fixes applied on top of the #151 branch:
- getValue/startValue/endValue value executors renamed to tpose-unique names
  (Tpose_{get,start,end}_value) and rendered via pose_as_text (WKT form
  "Pose(POINT(x y),r)"). Generic names collide with the other geo .cpp (ODR
  violation -> geometry renderer -> "Unknown geometry type: 0"); pose_out
  emits the HexWKB/uppercase "POSE (...)" form, not what asText/getValue want.
- Close the output-serialization gap the #151 test exercises but the port
  omitted: register asMFJSON (via temporal_as_mfjson) and asBinary / asEWKB /
  asHexWKB / asHexEWKB (via temporal_as_wkb / temporal_as_hexwkb), with
  tpose-unique exec names. MobilityDB exposes all of these for tpose.
- Fix the setInterp-to-discrete test: a multi-instant continuous sequence
  cannot be discretized (MEOS errors); lift an instant instead, matching
  MobilityDB's 102_tpose reference.

Full sqllogictest suite green: 1830 assertions across 79 test cases.

(cherry picked from commit ec74d58)
(cherry picked from commit b52d0a4)
@estebanzimanyi estebanzimanyi force-pushed the feat/tpose-port-core branch from b52d0a4 to 4acef74 Compare June 2, 2026 14:09
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