Skip to content
Closed
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
32 changes: 31 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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/<duckdb_version>/<platform>/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/*"
$(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
Expand Up @@ -2,6 +2,7 @@
#include "geo/tgeogpoint_functions.hpp"
#include "duckdb/main/extension/extension_loader.hpp"
#include "duckdb/common/extension_type_info.hpp"
#include "mobilityduck/meos_exec_serial.hpp"
#include <regex>
#include <string>
#include <temporal/span.hpp>
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