Skip to content

[DIAGNOSTIC – do not merge] Surface the arm64 MEOS build error#191

Closed
estebanzimanyi wants to merge 7 commits into
mainfrom
diag/meos-arm64-buildlog
Closed

[DIAGNOSTIC – do not merge] Surface the arm64 MEOS build error#191
estebanzimanyi wants to merge 7 commits into
mainfrom
diag/meos-arm64-buildlog

Conversation

@estebanzimanyi
Copy link
Copy Markdown
Member

Throwaway diagnostic branch, not a deliverable and not for merge. Pins MEOS to the settled consolidation tip 8569019b7b and runs a verbose ninja -k0 build so the arm64-linux MEOS compile failure (which the normal build hides behind vcpkg's wrapper) is printed to the CI log. Expected to fail; it exists only to capture the exact arm64 compile error to report to the MobilityDB consolidation session. Will be closed once the error is captured.

…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.
Pin MEOS to 8569019b7b and run a verbose ninja -k0 build before the
normal build step so the arm64-linux compile failure is printed to the
CI log. This branch exists only to capture that error and is not a
deliverable.
@estebanzimanyi
Copy link
Copy Markdown
Member Author

Diagnostic complete — surfaced the arm64 root cause (undeclared meos_pg_* functions / implicit-declaration errors under GCC 14). Reported to the consolidation session. Closing; not a deliverable.

@estebanzimanyi estebanzimanyi deleted the diag/meos-arm64-buildlog branch June 2, 2026 05:55
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