Skip to content

Pin vcpkg MEOS to canonical ecosystem SHA and rename meosType → MeosType#197

Open
estebanzimanyi wants to merge 8 commits into
MobilityDB:mainfrom
estebanzimanyi:fix/bump-meos-pin-clean
Open

Pin vcpkg MEOS to canonical ecosystem SHA and rename meosType → MeosType#197
estebanzimanyi wants to merge 8 commits into
MobilityDB:mainfrom
estebanzimanyi:fix/bump-meos-pin-clean

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

The vcpkg portfile fetches estebanzimanyi/MobilityDB at 278863520b (tag ecosystem-pin-2026-06-06g, SHA512 2e617cac4bfed919eee8bd73e35f9b3da8ffd7a51f68104a9497c0d3339dbb1af4a2ec6feab3e8fffb880481badf86c352ad1efb39cab533de19d2c1192a8e5b). The MEOS 1.4 API exposes MeosType (CamelCase); every call-site in MobilityDuck uses MeosType directly and the forward-compat alias in tydef.hpp is removed.

…alized API

Pin MEOS at MobilityDB/MobilityDB 2c4243a265 and adapt the binding to that
surface: the spatial-relationship functions drop their restr/at_value
arguments and become 2-arg, the temporal multiplication MEOS calls move from
mult_* to mul_*, temptype_continuous becomes temptype_supports_linear, and the
rtree module follows the MeosType/MeosArray bbox API. MeosType is used directly
in headers where the forward-compat alias is not visible.
LoadInternal auto-loads ICU for the named Europe/Brussels zone; when ICU has
no on-disk copy and no network egress (CI test docker, edge/musl, offline) the
auto-load is caught so the extension still loads with the session timezone at
its default. The release/debug/reldebug test targets stage the locally-built
icu.duckdb_extension into the version/platform path DuckDB autoloads from.
DuckDB runs scalar and cast bodies on TaskScheduler worker threads; MEOS keeps
the session timezone, errno, PROJ context and RNGs in thread-local storage and
needs meos_initialize() on each thread before first use. A thread-local guard
in the scalar exec wrapper and a cast trampoline run the per-thread init (and
re-install the error handler) at every entry point, so timestamp formatting on
a worker no longer dereferences a NULL session_timezone.
…pected

The tfloat ln/exp/log10 lifts insert one chord-error turning point on a linear
segment; the MEOS pin computes it in double so the inserted instant is identical
on every platform, and the 026b expected carries the three-instant result.
On macOS LP64 int64 (long) and int64_t (long long) are the same width but
distinct types, so clang rejects bigint_to_set as a Set *(*)(int64_t) non-type
template argument. A forwarder that casts int64_t to int64 fixes the macOS
build; the cast is a no-op on Linux.
Adds the SIZEOF_LONG_LONG emission to the rendered pg_config.h so the
DuckDB-Wasm (wasm32-emscripten / ILP32) build of MEOS no longer fails the
pg_bitutils integer-width check.
The pinned MEOS returns TimeSplit / DatumSplit / IntSplit / FloatSplit /
SpaceSplit / SpaceTimeSplit / MvtGeom structs from the split and
as-mvtgeom functions, and set_vals / set_spans / spanset_spans take an
int* count out-parameter. Adapt the temporal, tgeompoint, set, span and
spanset table/scalar functions to the struct fields and the extra
out-parameter.
Pin MEOS to the canonical ecosystem surface and adapt the binding to it:
treat a shared span boundary as adjacency (the share-a-boundary span
adjacency goldens), and derive the symmetric box/span x temporal
topological predicates (overlaps/same/adjacent) from MEOS's single
canonical argument direction by commutativity, since the reverse-argument
duplicates are deduplicated out of the surface.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant