diff --git a/src/generated/generated_temporal_udfs.cpp b/src/generated/generated_temporal_udfs.cpp index 352e7e87..f0e54490 100644 --- a/src/generated/generated_temporal_udfs.cpp +++ b/src/generated/generated_temporal_udfs.cpp @@ -252,6 +252,7 @@ void RegisterGenerated_meos_rgeo_accessor(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_bbox_split(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_comp_ever(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_comp_temp(ExtensionLoader &loader); +void RegisterGenerated_meos_rgeo_constructor(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_conversion(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_dist(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_inout(ExtensionLoader &loader); @@ -519,6 +520,7 @@ void RegisterGeneratedTemporalUdfs(ExtensionLoader &loader) { RegisterGenerated_meos_rgeo_bbox_split(loader); RegisterGenerated_meos_rgeo_comp_ever(loader); RegisterGenerated_meos_rgeo_comp_temp(loader); + RegisterGenerated_meos_rgeo_constructor(loader); RegisterGenerated_meos_rgeo_conversion(loader); RegisterGenerated_meos_rgeo_dist(loader); RegisterGenerated_meos_rgeo_inout(loader); diff --git a/src/generated/generated_temporal_udfs_10.cpp b/src/generated/generated_temporal_udfs_10.cpp index 14411f30..fd47d06e 100644 --- a/src/generated/generated_temporal_udfs_10.cpp +++ b/src/generated/generated_temporal_udfs_10.cpp @@ -3237,6 +3237,20 @@ static void Gen_trgeometry_to_tgeometry(DataChunk &args, ExpressionState &, Vect }); } +static void Gen_trgeometry_geom(DataChunk &args, ExpressionState &state, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + GSERIALIZED * r = trgeometry_geom(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; + }); +} + // ===== @ingroup meos_rgeo_rel_ever ===== static void Gen_econtains_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { @@ -7437,6 +7451,7 @@ void RegisterGenerated_meos_rgeo_conversion(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("tpose", {TrgeometryTypes::trgeometry()}, PoseTypes::tpose(), Gen_trgeometry_to_tpose)); RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {TrgeometryTypes::trgeometry()}, TgeompointType::tgeompoint(), Gen_trgeometry_to_tgeompoint)); RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TrgeometryTypes::trgeometry()}, TGeometryTypes::tgeometry(), Gen_trgeometry_to_tgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("geometry", {TrgeometryTypes::trgeometry()}, MobilityDuckGeometryType(), Gen_trgeometry_geom)); } void RegisterGenerated_meos_rgeo_rel_ever(ExtensionLoader &loader) { diff --git a/src/generated/generated_temporal_udfs_3.cpp b/src/generated/generated_temporal_udfs_3.cpp index cd21f3e5..229cfe23 100644 --- a/src/generated/generated_temporal_udfs_3.cpp +++ b/src/generated/generated_temporal_udfs_3.cpp @@ -1777,6 +1777,24 @@ static void Gen_always_ne_tquadbin_tquadbin(DataChunk &args, ExpressionState &, } +// ===== @ingroup meos_rgeo_constructor ===== +static void Gen_geometry_tpose_to_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, string_t in_t, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in_t); + GSERIALIZED *gs = GeometryToGSerialized(in_g, tspatial_srid(t)); + if (MEOS_FLAGS_GET_GEODETIC(t->flags)) { + GSERIALIZED *gs_geog = geom_to_geog(gs); + free(gs); gs = gs_geog; + } + Temporal *r = (Temporal *) geometry_tpose_to_trgeometry(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); + }); +} + + // ===== @ingroup meos_setspan_bbox_split ===== static void Gen_set_spans(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); @@ -2491,6 +2509,10 @@ void RegisterGenerated_meos_quadbin_comp_ever(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_ne_tquadbin_tquadbin)); } +void RegisterGenerated_meos_rgeo_constructor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("trgeometry", {MobilityDuckGeometryType(), PoseTypes::tpose()}, TrgeometryTypes::trgeometry(), Gen_geometry_tpose_to_trgeometry)); +} + void RegisterGenerated_meos_setspan_bbox_split(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SpansetTypes::intspanset()}, LogicalType::LIST(SpanTypes::intspan()), Gen_spanset_spans)); RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SpansetTypes::bigintspanset()}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_spanset_spans)); diff --git a/src/generated/generated_temporal_udfs_4.cpp b/src/generated/generated_temporal_udfs_4.cpp index c363ef88..1331eb73 100644 --- a/src/generated/generated_temporal_udfs_4.cpp +++ b/src/generated/generated_temporal_udfs_4.cpp @@ -2141,6 +2141,28 @@ static void Gen_jsonb_to_set(DataChunk &args, ExpressionState &, Vector &result) }); } +static void Gen_jsonbset_to_textset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(in); + Set *r = jsonbset_to_textset(s); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_textset_to_jsonbset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(in); + Set *r = textset_to_jsonbset(s); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + // ===== @ingroup meos_json_set_json ===== static void Gen_jsonbset_delete_array(DataChunk &args, ExpressionState &, Vector &result) { @@ -5434,6 +5456,8 @@ void RegisterGenerated_meos_h3_comp_temp(ExtensionLoader &loader) { void RegisterGenerated_meos_json_set_conversion(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("set", {TJsonbTypes::jsonb()}, SetTypes::jsonbset(), Gen_jsonb_to_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("textset", {SetTypes::jsonbset()}, SetTypes::textset(), Gen_jsonbset_to_textset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbset", {SetTypes::textset()}, SetTypes::jsonbset(), Gen_textset_to_jsonbset)); } void RegisterGenerated_meos_json_set_json(ExtensionLoader &loader) { diff --git a/vcpkg_ports/meos/portfile.cmake b/vcpkg_ports/meos/portfile.cmake index 4a549e8f..b5e28a7c 100644 --- a/vcpkg_ports/meos/portfile.cmake +++ b/vcpkg_ports/meos/portfile.cmake @@ -14,7 +14,7 @@ # libmeos recompile per build) and makes two runs of the same commit build different # sources. A recorded SHA keeps builds reproducible and the cache warm between # advances. -set(_MEOS_REF "ac8feb51dca1b83912a587fc236a042a1dfc3879") +set(_MEOS_REF "4e97a57b16da7a8616ce6534537fa31a8893cbb3") message(STATUS "MEOS port: building MobilityDB at recorded ${_MEOS_REF}") # FETCH_REF names the branch (always advertised) so the fetch works even when the