Bump pinned MEOS and adapt to orthogonalized spatial-rels API#134
Bump pinned MEOS and adapt to orthogonalized spatial-rels API#134estebanzimanyi wants to merge 7 commits into
Conversation
Reviewer's quickstart — ~10 minutesWhat this PR does in one sentence: bumps the pinned MEOS commit in Files to read (25 total, in priority order):
This is the foundational pin-bump that #142 / #145 / the entire Cross-link: Linux arm64 CI here may hit the Why it's safe to merge: the new MEOS pin is on MobilityDB master (verifiable in the portfile diff); the orthogonalised API replaces the old one, so the substitution is byte-for-byte equivalent. |
SIGSEGV pattern surfaces uniformly across this PR's downstream stackCI's red checks across all PRs stacked on this branch (and #178 which has the same Linux-amd64 SIGSEGV symptom) share one root cause: a runtime SIGSEGV during sqllogic test execution under the new MEOS pin. Crash site: Triggering tests across PRs:
Bump range analyzed:
Diagnostic narrowing already done:
Recommended next-touch steps:
|
SIGSEGV root cause identified — symbol collision in pg-vendored
|
|
Upstream MEOS fix filed as MobilityDB/MobilityDB#1108 — "Prefix-rename pg-vendored symbols to meos_* (host symbol collision fix)". That PR adds a single Once #1108 lands on integration/meos-1.4-bump, bumping MobilityDuck's MEOS pin to a SHA past it will resolve the SIGSEGV class on this PR and the 21 stacked PRs (#130-#156). Local verification build is running now against the fork branch (estebanzimanyi/MobilityDB:fix/meos-pg-symbol-collision = 813b9e496) to confirm the SIGSEGV is gone before requesting upstream review. |
…ision The fix branch carries the integration/meos-1.4-bump commits plus the pg-vendored symbol-collision rename (97 colliding pg-symbols prefixed with meos_*) that fixes the SIGSEGV in tspatial_inst_parse → timestamp_parse → pg_next_dst_boundary on Linux amd64. Without this fix the benchmark crashes on the first parse of any temporal-instance literal with a timestamp. See MobilityDB PR (TBD) / MobilityDuck #134 comment 4512147588 for the gdb backtrace + root cause.
…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.
b591405 to
4beb327
Compare
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.
fa2de57 to
4beb327
Compare
d37709d to
1385922
Compare
1385922 to
fa2de57
Compare
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.
fa2de57 to
17588c0
Compare
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.
Bumps the vcpkg portfile to MEOS dd4ccd3c2 (post-rename + post-spatial-rels orthogonalization) and adapts the temporal-spatial relationship surfaces (tContains, tDisjoint, tIntersects, tTouches, tDwithin) to the new MEOS API which no longer takes the restr/at_value parameters; the previous behavior is reproduced by composing with atValues(temporal, bool). Also drops the now-defunct 3-arg minusGeometry(..., FLOATSPAN) overload since tpoint_minus_geom no longer accepts a z-span.