From d1d380b5d73ee8bd7827bc4d086b8a6c54fd3877 Mon Sep 17 00:00:00 2001 From: Esteban Zimanyi Date: Wed, 20 May 2026 15:37:00 +0200 Subject: [PATCH 1/3] chore(meos): bump pinned MEOS to the 1.4-integration SHA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Switches `vcpkg_ports/meos/portfile.cmake` REF from the pre-bump `f11b7443e` (MobilityDB#768) to the user-fork integration branch `estebanzimanyi/MobilityDB:integration/meos-1.4-bump` at commit `80c24f46d`, which merges all 15 open MEOS-1.4 bump PRs into one buildable commit: * #1075 portable bare-name aliases * #1090 geog_in fall-through fix * #1081 tcbuffer accessors * #1094 tolerance fix (0.0) * #1082 tnpoint accessors * #1095 meos_error contract doc * #1083 tcbuffer/tpose ctors * #1096 meos_error CI ratchet * #1084 from_base time ctors * #1097 per-site fall-through fixes * #1085 tpose_from_mfjson * #1098 math/aggfuncs/datagen fixes * #1088 geodetic spatialrels * #1100 ea_* geodetic completion * #1101 signature uniformization Both libmeos and libMobilityDB-1.4 built green from this SHA (Linux x86_64). Switches the pin **back to MobilityDB/MobilityDB** once the 15 PRs land on master — that's a one-line edit (REPO + REF + SHA512); no other code change. Why this is the right move now: the bump's source-of-truth IS the 15 open green PRs — pinning to their integration SHA lets every downstream consumer pick up the new MEOS surface today, without waiting on the review-merge cascade. Unblocks specifically: * The `*_port_core` stack (#148 / #150 / #151 / #153 / #155 / #156) which needs the `tcbuffer*` / `tnpoint*` / `tpose*` symbols exported by #1081–#1085 (currently 0/0/0 in the pre-bump pin). * The TRTREE / MEST work (#143 / #144) which composes with the uniformized array-return signatures from #1101. * The geodetic correctness story (the 3 preview releases) which consumes #1088 / #1090 / #1094 / #1100 ea_* completion. Also updates the runtime version stamp `MOBILITYDUCK_MEOS_PIN` in `src/mobilityduck_extension.cpp` so `SELECT mobilityduck_full_version()` reports the new pin. Refs: MobilityDB #1075, #1081-1085, #1088, #1090, #1094, #1095-1098, #1100, #1101 (the 15 open bump PRs). --- src/mobilityduck_extension.cpp | 2 +- vcpkg_ports/meos/portfile.cmake | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/mobilityduck_extension.cpp b/src/mobilityduck_extension.cpp index 0eb7ebd4..49ce9281 100644 --- a/src/mobilityduck_extension.cpp +++ b/src/mobilityduck_extension.cpp @@ -81,7 +81,7 @@ inline void MobilityduckOpenSSLVersionScalarFun(DataChunk &args, ExpressionState // MEOS does not expose a runtime version symbol, so the build-time pin // is the most precise version stamp the extension can report. #ifndef MOBILITYDUCK_MEOS_PIN -#define MOBILITYDUCK_MEOS_PIN "f11b7443e" +#define MOBILITYDUCK_MEOS_PIN "80c24f46d (1.4-integration)" #endif inline std::string MobilityduckShortVersion() { diff --git a/vcpkg_ports/meos/portfile.cmake b/vcpkg_ports/meos/portfile.cmake index 2a2a5614..fb42bbf2 100644 --- a/vcpkg_ports/meos/portfile.cmake +++ b/vcpkg_ports/meos/portfile.cmake @@ -1,8 +1,22 @@ +# MEOS-1.4 integration branch on the user's fork — combines all 15 open +# MEOS-1.4 bump PRs into one buildable commit: +# #1075 portable bare-name aliases #1090 geog_in fall-through fix +# #1081 tcbuffer accessors #1094 tolerance fix (0.0) +# #1082 tnpoint accessors #1095 meos_error contract doc (Wave 1) +# #1083 tcbuffer/tpose ctors #1096 meos_error CI ratchet (Wave 2) +# #1084 from_base time ctors #1097 per-site fall-through fixes (Wave 3) +# #1085 tpose_from_mfjson #1098 math/aggfuncs/datagen fixes (Wave 4) +# #1088 geodetic spatialrels #1100 ea_* geodetic completion (closes #1092) +# #1101 signature uniformization (closes #1079) +# Branch: https://github.com/estebanzimanyi/MobilityDB/tree/integration/meos-1.4-bump +# Both libmeos and libMobilityDB-1.4 built green from this SHA (Linux x86_64, +# 2026-05-20). Once the 15 PRs land on MobilityDB master, switch the REPO line +# back to `MobilityDB/MobilityDB` and update REF/SHA512 to that master tip. vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH - REPO MobilityDB/MobilityDB - REF f11b7443ee985dc1ffb778c325e62f0edaf255ec - SHA512 ae8589acc86016c601f9c3c157e94b35e6e8fc50d6194d26db510d51e65a6e751279a3ced258a6bb6e56a22e083993aaeab92f20b9d18d41c7a2c8c73b7dc9df + REPO estebanzimanyi/MobilityDB + REF 80c24f46d042baa2613515b0f5b82255f21fb522 + SHA512 c21d978270bcd2e996506bc692abd3c3a8e57f31032443e07107cdc25ac8b7ebed7df42f71ad8b740e732ea35317524d3b14089277038efabb774a2dd53c0b23 ) vcpkg_replace_string( From 5643c731bbc9bb2ce1a2ec4cbd43163a5343189b Mon Sep 17 00:00:00 2001 From: Esteban Zimanyi Date: Sat, 16 May 2026 11:04:41 +0200 Subject: [PATCH 2/3] Stage icu for the macOS osx_arm64 test path too The stage_icu helper mapped only the Linux uname values, so on the macOS arm64 test runner uname -m returned "arm64" and the icu extension was copied to .duckdb/extensions/v1.4.4/arm64 instead of .../osx_arm64, where DuckDB's autoload looks. The hub fallback is not reliably resolvable on that runner, so the osx_arm64 Test step failed to load the extension. Map the OS and architecture to the DuckDB platform string (linux_amd64, linux_arm64, osx_amd64, osx_arm64) so the locally built icu is staged at the path autoload expects on every tested platform; the Linux mapping is unchanged. Co-Authored-By: Claude Opus 4.7 --- Makefile | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index bc17d050..a9485498 100644 --- a/Makefile +++ b/Makefile @@ -11,9 +11,39 @@ include extension-ci-tools/makefiles/duckdb_extension.Makefile # both MEOS (meos_initialize_timezone) and DuckDB (DBConfig::SetOptionByName # "TimeZone") to Europe/Brussels. Tests pass on any OS timezone — the # extension is the single source of truth, no TZ env var needed. +# +# LoadInternal also calls ExtensionHelper::AutoLoadExtension(db, "icu") so +# the timezone option is honoured. Autoload looks for the extension on disk +# at $HOME/.duckdb/extensions///icu.duckdb_extension +# and falls back to a hub download. That fails both inside the linux_amd64 +# test docker container (empty path, no network egress) and on the macOS +# osx_arm64 test runner (hub icu not reliably resolvable). We copy the +# icu.duckdb_extension that was built locally as part of this extension's +# build (declared in extension_config.cmake) into the expected path, +# matched to the DuckDB platform string, before running the unittester. +DUCKDB_VERSION_TAG := v1.4.4 + +define stage_icu + @if [ -f ./build/$(1)/extension/icu/icu.duckdb_extension ]; then \ + case "$$(uname -s)-$$(uname -m)" in \ + Linux-x86_64) platform=linux_amd64 ;; \ + Linux-aarch64) platform=linux_arm64 ;; \ + Darwin-arm64) platform=osx_arm64 ;; \ + Darwin-x86_64) platform=osx_amd64 ;; \ + *) platform=$$(uname -m) ;; \ + esac; \ + target=$$HOME/.duckdb/extensions/$(DUCKDB_VERSION_TAG)/$$platform; \ + mkdir -p "$$target" && cp -f ./build/$(1)/extension/icu/icu.duckdb_extension "$$target/" && \ + echo "Staged icu.duckdb_extension at $$target/"; \ + fi +endef + test_release_internal: + $(call stage_icu,release) ./build/release/$(TEST_PATH) "$(PROJ_DIR)test/*" test_debug_internal: + $(call stage_icu,debug) ./build/debug/$(TEST_PATH) "$(PROJ_DIR)test/*" test_reldebug_internal: - ./build/reldebug/$(TEST_PATH) "$(PROJ_DIR)test/*" \ No newline at end of file + $(call stage_icu,reldebug) + ./build/reldebug/$(TEST_PATH) "$(PROJ_DIR)test/*" From f1f3c78b1fe8fca611915928f23fedf3e225a9b4 Mon Sep 17 00:00:00 2001 From: Esteban Zimanyi Date: Wed, 20 May 2026 11:55:01 +0200 Subject: [PATCH 3/3] fix: drop premature `using meosType = MeosType;` alias in tydef.hpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `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). --- src/include/tydef.hpp | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/include/tydef.hpp b/src/include/tydef.hpp index b7b28109..b9860ca0 100644 --- a/src/include/tydef.hpp +++ b/src/include/tydef.hpp @@ -11,11 +11,27 @@ extern "C" { #include } -// Forward-compat alias for the meosType → MeosType rename (MobilityDB -// pr785-sync-script). Vcpkg's MEOS exposes `MeosType`; existing -// MobilityDuck code still uses `meosType`. This alias bridges the two -// without touching every reference site. -using meosType = MeosType; +// MEOS naming history: `meosType` is the **pre-consolidation** spelling +// and `MeosType` is the **post-consolidation** target (the rename is +// part of the upstream consolidation sweep, not yet reached by the +// vcpkg pin). The current pin +// (`vcpkg_ports/meos/portfile.cmake` REF f11b7443ee98…) is still +// pre-consolidation and exposes `meosType` — see +// meos/include/temporal/meos_catalog.h, where line 121 declares +// `} meosType;`. MobilityDuck's source consistently uses +// `meosType` (verified via `grep -rn '\bmeosType\b' src/`), which +// matches the pin, so no alias is needed today. +// +// An earlier version of this file added `using meosType = MeosType;` +// as a forward-looking bridge for the eventual consolidation bump. +// That alias references `MeosType`, which the current pin does NOT +// yet expose, so it broke the build: +// "'MeosType' does not name a type; did you mean 'meosType'?". +// +// When the MEOS pin is bumped past the consolidation point, restore +// a bridge here (`using meosType = MeosType;` becomes valid then) or +// sweep the source `meosType → MeosType` in one PR — whichever the +// project prefers at that time. namespace duckdb {