Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,44 @@ 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 auto-loads ICU so the named "Europe/Brussels" zone resolves.
# DuckDB autoloads ICU from
# $HOME/.duckdb/extensions/<version>/<platform>/icu.duckdb_extension
# and otherwise falls back to a hub download — which fails inside the CI test
# docker (empty path, no network egress). So we stage the locally-built ICU
# into the expected path before the unittester runs. Version and platform are
# derived from the freshly-built duckdb binary (authoritative); the
# DUCKDB_VERSION_TAG and uname map are fallbacks only.
DUCKDB_VERSION_TAG := v1.4.4

define stage_icu
@if [ -f ./build/$(1)/extension/icu/icu.duckdb_extension ]; then \
duckdb_bin=./build/$(1)/duckdb; \
version_tag=$$( [ -x "$$duckdb_bin" ] && "$$duckdb_bin" --version 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -1 ); \
platform=$$( [ -x "$$duckdb_bin" ] && echo 'PRAGMA platform;' | "$$duckdb_bin" -noheader -list 2>/dev/null | tr -d '[:space:]' ); \
[ -n "$$version_tag" ] || version_tag=$(DUCKDB_VERSION_TAG); \
if [ -z "$$platform" ]; 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; \
fi; \
target=$$HOME/.duckdb/extensions/$$version_tag/$$platform; \
mkdir -p "$$target" && cp -f ./build/$(1)/extension/icu/icu.duckdb_extension "$$target/" && \
echo "Staged icu.duckdb_extension at $$target/ (duckdb $$version_tag / $$platform)"; \
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:
$(call stage_icu,reldebug)
./build/reldebug/$(TEST_PATH) "$(PROJ_DIR)test/*"
4 changes: 2 additions & 2 deletions src/geo/geoset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ void SpatialSetType::RegisterTypes(ExtensionLoader &loader){
}

void SpatialSetType::RegisterCastFunctions(ExtensionLoader &loader) {
loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
LogicalType::VARCHAR,
SpatialSetType::geomset(),
SpatialSetFunctions::Text_to_geoset
);
loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
LogicalType::VARCHAR,
SpatialSetType::geogset(),
SpatialSetFunctions::Text_to_geoset
Expand Down
14 changes: 7 additions & 7 deletions src/geo/stbox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,43 +27,43 @@ void StboxType::RegisterType(ExtensionLoader &loader) {
}

void StboxType::RegisterCastFunctions(ExtensionLoader &loader) {
loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
LogicalType::VARCHAR,
STBOX(),
StboxFunctions::Stbox_in_cast
);

loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
STBOX(),
LogicalType::VARCHAR,
StboxFunctions::Stbox_out
);

loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
GeoTypes::GEOMETRY(),
STBOX(),
StboxFunctions::Geo_to_stbox_cast
);

loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
LogicalType::TIMESTAMP_TZ,
STBOX(),
StboxFunctions::Timestamptz_to_stbox_cast
);

loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
SetTypes::tstzset(),
STBOX(),
StboxFunctions::Tstzset_to_stbox_cast
);

loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
SpanTypes::TSTZSPAN(),
STBOX(),
StboxFunctions::Tstzspan_to_stbox_cast
);

loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
SpansetTypes::tstzspanset(),
STBOX(),
StboxFunctions::Tstzspanset_to_stbox_cast
Expand Down
125 changes: 4 additions & 121 deletions src/geo/tgeogpoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,25 +43,25 @@ void TgeogpointType::RegisterType(ExtensionLoader &loader) {
}

void TgeogpointType::RegisterCastFunctions(ExtensionLoader &loader) {
loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
LogicalType::VARCHAR,
TGEOGPOINT(),
TgeogpointFunctions::Tpoint_in
);

loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
TGEOGPOINT(),
LogicalType::VARCHAR,
TemporalFunctions::Temporal_out
);

loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
TGEOGPOINT(),
StboxType::STBOX(),
TgeompointFunctions::Tspatial_to_stbox_cast
);

loader.RegisterCastFunction(
RegisterMeosCastFunction(loader,
TGEOGPOINT(),
SpanTypes::TSTZSPAN(),
TgeompointFunctions::Temporal_to_tstzspan_cast
Expand Down Expand Up @@ -1160,15 +1160,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"minusGeometry",
{TGEOGPOINT(), GeoTypes::GEOMETRY(), SpanTypes::FLOATSPAN()},
TGEOGPOINT(),
TgeompointFunctions::Tgeo_minus_geom
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"atStbox",
Expand Down Expand Up @@ -1463,15 +1454,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tContains",
{GeoTypes::GEOMETRY(), TGEOGPOINT(), LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tcontains_geo_tgeo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDisjoint",
Expand All @@ -1481,15 +1463,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDisjoint",
{TGEOGPOINT(), GeoTypes::GEOMETRY(), LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tdisjoint_tgeo_geo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDisjoint",
Expand All @@ -1499,24 +1472,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDisjoint",
{GeoTypes::GEOMETRY(), TGEOGPOINT(), LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tdisjoint_geo_tgeo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDisjoint",
{TGEOGPOINT(), TGEOGPOINT(), LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tdisjoint_tgeo_tgeo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDisjoint",
Expand All @@ -1526,15 +1481,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tIntersects",
{GeoTypes::GEOMETRY(), TGEOGPOINT(), LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tintersects_geo_tgeo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tIntersects",
Expand All @@ -1544,15 +1490,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tIntersects",
{TGEOGPOINT(), GeoTypes::GEOMETRY(), LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tintersects_tgeo_geo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tIntersects",
Expand All @@ -1562,15 +1499,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tIntersects",
{TGEOGPOINT(), TGEOGPOINT(), LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tintersects_tgeo_tgeo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tIntersects",
Expand All @@ -1580,15 +1508,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tTouches",
{GeoTypes::GEOMETRY(), TGEOGPOINT(), LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Ttouches_geo_tgeo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tTouches",
Expand All @@ -1598,15 +1517,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tTouches",
{TGEOGPOINT(), GeoTypes::GEOMETRY(), LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Ttouches_tgeo_geo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tTouches",
Expand All @@ -1625,24 +1535,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDwithin",
{GeoTypes::GEOMETRY(), TGEOGPOINT(), LogicalType::DOUBLE, LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tdwithin_geo_tgeo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDwithin",
{TGEOGPOINT(), GeoTypes::GEOMETRY(), LogicalType::DOUBLE, LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tdwithin_tgeo_geo
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDwithin",
Expand All @@ -1661,15 +1553,6 @@ void TgeogpointType::RegisterScalarFunctions(ExtensionLoader &loader) {
)
);

duckdb::RegisterSerializedScalarFunction(loader,
ScalarFunction(
"tDwithin",
{TGEOGPOINT(), TGEOGPOINT(), LogicalType::DOUBLE, LogicalType::BOOLEAN},
TemporalTypes::TBOOL(),
TgeompointFunctions::Tdwithin_tgeo_tgeo
)
);

/* ***************************************************
* Operators (workaround as functions)
****************************************************/
Expand Down
5 changes: 3 additions & 2 deletions src/geo/tgeogpoint_in_out.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "geo/tgeogpoint.hpp"
#include "geo/tgeogpoint_functions.hpp"
#include "mobilityduck/meos_exec_serial.hpp"
#include "duckdb/main/extension/extension_loader.hpp"
#include "duckdb/common/extension_type_info.hpp"
#include <regex>
Expand Down Expand Up @@ -215,8 +216,8 @@ void TGeogpointType::RegisterScalarInOutFunctions(ExtensionLoader &loader){


void TGeogpointType::RegisterCastFunctions(ExtensionLoader &loader) {
loader.RegisterCastFunction( LogicalType::VARCHAR, TGeogpointType::TGEOGPOINT(), TgeogpointFunctions::StringToTgeogpoint);
loader.RegisterCastFunction( TGeogpointType::TGEOGPOINT(), LogicalType::VARCHAR, TgeogpointFunctions::TgeogpointToString);
RegisterMeosCastFunction(loader, LogicalType::VARCHAR, TGeogpointType::TGEOGPOINT(), TgeogpointFunctions::StringToTgeogpoint);
RegisterMeosCastFunction(loader, TGeogpointType::TGEOGPOINT(), LogicalType::VARCHAR, TgeogpointFunctions::TgeogpointToString);
}

}
Loading
Loading