From ccdf168d8dd4ccc06cbdf7e3e156e72b21ef0f00 Mon Sep 17 00:00:00 2001 From: nhungoc1508 <29029881+nhungoc1508@users.noreply.github.com> Date: Fri, 2 Oct 2026 06:47:02 +0000 Subject: [PATCH 1/4] Advance the MEOS commit and regenerate the UDF surface --- src/generated/generated_temporal_udfs.cpp | 8 + src/generated/generated_temporal_udfs_0.cpp | 1160 ++-- src/generated/generated_temporal_udfs_1.cpp | 5051 +++++++++++------- src/generated/generated_temporal_udfs_2.cpp | 5252 ++++++++----------- src/generated/generated_temporal_udfs_3.cpp | 2103 ++++---- src/generated/generated_temporal_udfs_4.cpp | 2270 ++++---- src/generated/generated_temporal_udfs_5.cpp | 2035 ++++--- src/generated/generated_temporal_udfs_6.cpp | 2826 +++++----- src/generated/generated_temporal_udfs_7.cpp | 1812 +++---- vcpkg_ports/meos/portfile.cmake | 2 +- 10 files changed, 11422 insertions(+), 11097 deletions(-) diff --git a/src/generated/generated_temporal_udfs.cpp b/src/generated/generated_temporal_udfs.cpp index 460b0d74..c59892d0 100644 --- a/src/generated/generated_temporal_udfs.cpp +++ b/src/generated/generated_temporal_udfs.cpp @@ -128,6 +128,7 @@ void RegisterGenerated_meos_pointcloud_base_accessor(ExtensionLoader &loader); void RegisterGenerated_meos_pointcloud_base_comp(ExtensionLoader &loader); void RegisterGenerated_meos_pointcloud_box_accessor(ExtensionLoader &loader); void RegisterGenerated_meos_pointcloud_box_comp(ExtensionLoader &loader); +void RegisterGenerated_meos_pointcloud_box_inout(ExtensionLoader &loader); void RegisterGenerated_meos_pointcloud_box_pos(ExtensionLoader &loader); void RegisterGenerated_meos_pointcloud_box_topo(ExtensionLoader &loader); void RegisterGenerated_meos_pointcloud_comp_ever(ExtensionLoader &loader); @@ -161,6 +162,7 @@ void RegisterGenerated_meos_posechain_transf(ExtensionLoader &loader); void RegisterGenerated_meos_quadbin(ExtensionLoader &loader); void RegisterGenerated_meos_quadbin_accessor(ExtensionLoader &loader); void RegisterGenerated_meos_quadbin_base_comp(ExtensionLoader &loader); +void RegisterGenerated_meos_quadbin_base_inout(ExtensionLoader &loader); void RegisterGenerated_meos_quadbin_comp_ever(ExtensionLoader &loader); void RegisterGenerated_meos_quadbin_comp_temp(ExtensionLoader &loader); void RegisterGenerated_meos_quadbin_conversion(ExtensionLoader &loader); @@ -176,12 +178,14 @@ void RegisterGenerated_meos_rgeo_dist(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_inout(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_modif(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_rel_ever(ExtensionLoader &loader); +void RegisterGenerated_meos_rgeo_rel_temp(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_restrict(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_spatialfuncs(ExtensionLoader &loader); void RegisterGenerated_meos_rgeo_transf(ExtensionLoader &loader); void RegisterGenerated_meos_s2cell(ExtensionLoader &loader); void RegisterGenerated_meos_s2cell_accessor(ExtensionLoader &loader); void RegisterGenerated_meos_s2cell_base_comp(ExtensionLoader &loader); +void RegisterGenerated_meos_s2cell_base_inout(ExtensionLoader &loader); void RegisterGenerated_meos_s2cell_comp_ever(ExtensionLoader &loader); void RegisterGenerated_meos_s2cell_comp_temp(ExtensionLoader &loader); void RegisterGenerated_meos_s2cell_conversion(ExtensionLoader &loader); @@ -301,6 +305,7 @@ void RegisterGeneratedTemporalUdfs(ExtensionLoader &loader) { RegisterGenerated_meos_pointcloud_base_comp(loader); RegisterGenerated_meos_pointcloud_box_accessor(loader); RegisterGenerated_meos_pointcloud_box_comp(loader); + RegisterGenerated_meos_pointcloud_box_inout(loader); RegisterGenerated_meos_pointcloud_box_pos(loader); RegisterGenerated_meos_pointcloud_box_topo(loader); RegisterGenerated_meos_pointcloud_comp_ever(loader); @@ -334,6 +339,7 @@ void RegisterGeneratedTemporalUdfs(ExtensionLoader &loader) { RegisterGenerated_meos_quadbin(loader); RegisterGenerated_meos_quadbin_accessor(loader); RegisterGenerated_meos_quadbin_base_comp(loader); + RegisterGenerated_meos_quadbin_base_inout(loader); RegisterGenerated_meos_quadbin_comp_ever(loader); RegisterGenerated_meos_quadbin_comp_temp(loader); RegisterGenerated_meos_quadbin_conversion(loader); @@ -349,12 +355,14 @@ void RegisterGeneratedTemporalUdfs(ExtensionLoader &loader) { RegisterGenerated_meos_rgeo_inout(loader); RegisterGenerated_meos_rgeo_modif(loader); RegisterGenerated_meos_rgeo_rel_ever(loader); + RegisterGenerated_meos_rgeo_rel_temp(loader); RegisterGenerated_meos_rgeo_restrict(loader); RegisterGenerated_meos_rgeo_spatialfuncs(loader); RegisterGenerated_meos_rgeo_transf(loader); RegisterGenerated_meos_s2cell(loader); RegisterGenerated_meos_s2cell_accessor(loader); RegisterGenerated_meos_s2cell_base_comp(loader); + RegisterGenerated_meos_s2cell_base_inout(loader); RegisterGenerated_meos_s2cell_comp_ever(loader); RegisterGenerated_meos_s2cell_comp_temp(loader); RegisterGenerated_meos_s2cell_conversion(loader); diff --git a/src/generated/generated_temporal_udfs_0.cpp b/src/generated/generated_temporal_udfs_0.cpp index 562e4765..738b4c2b 100644 --- a/src/generated/generated_temporal_udfs_0.cpp +++ b/src/generated/generated_temporal_udfs_0.cpp @@ -1215,398 +1215,512 @@ static void Gen_always_ne_th3index_th3index(DataChunk &args, ExpressionState &, } -// ===== @ingroup meos_posechain_comp_ever ===== -static void Gen_always_eq_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_inout ===== +static void Gen_tspatial_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2) { Temporal *t = BlobToTemporal(in); - PoseChain *a2p = BlobToPosechain(a2); - int32_t r = always_eq_tposechain_posechain(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + char * r = tspatial_as_ewkt(t, a2); + free(t); + return TakeCString(result, r); }); } -static void Gen_always_eq_tposechain_tposechain(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tspatial_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_tposechain_tposechain(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = tspatial_as_ewkt(t, 15); + free(t); + return TakeCString(result, r); }); } -static void Gen_always_ne_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tspatial_as_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2) { Temporal *t = BlobToTemporal(in); - PoseChain *a2p = BlobToPosechain(a2); - int32_t r = always_ne_tposechain_posechain(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + char * r = tspatial_as_text(t, a2); + free(t); + return TakeCString(result, r); }); } -static void Gen_always_ne_tposechain_tposechain(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tspatial_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = tspatial_as_text(t, 15); + free(t); + return TakeCString(result, r); + }); +} + + +// ===== @ingroup meos_rgeo_analytics_similarity ===== +static void Gen_trgeometry_hausdorff_distance(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_tposechain_tposechain(t1, t2); + double r = trgeometry_hausdorff_distance(t1, t2); free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + return (double) r; }); } -static void Gen_ever_eq_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_frechet_distance(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t = BlobToTemporal(in); - PoseChain *a2p = BlobToPosechain(a2); - int32_t r = ever_eq_tposechain_posechain(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + double r = trgeometry_frechet_distance(t1, t2); + free(t1); free(t2); + return (double) r; }); } -static void Gen_ever_eq_tposechain_tposechain(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_dyntimewarp_distance(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_tposechain_tposechain(t1, t2); + double r = trgeometry_dyntimewarp_distance(t1, t2); free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + return (double) r; + }); +} + +struct PathBind_trgeometry_frechet_path : public TableFunctionData { string_t a, b; }; +struct PathState_trgeometry_frechet_path : public GlobalTableFunctionState { + idx_t idx = 0; + std::vector col0; + std::vector col1; +}; +static unique_ptr PathBindFn_trgeometry_frechet_path(ClientContext &, TableFunctionBindInput &input, + vector &return_types, vector &names) { + if (input.inputs.size() != 2 || input.inputs[0].IsNull() || input.inputs[1].IsNull()) + throw BinderException("frechetDistancePath: expects two non-null temporal arguments"); + auto bind = make_uniq(); + bind->a = StringValue::Get(input.inputs[0]); + bind->b = StringValue::Get(input.inputs[1]); + return_types = {LogicalType::INTEGER, LogicalType::INTEGER}; + names = {"i", "j"}; + return std::move(bind); +} +static unique_ptr PathInit_trgeometry_frechet_path(ClientContext &, TableFunctionInitInput &input) { + EnsureMeosThreadInitialized(); + auto &bind = input.bind_data->Cast(); + auto state = make_uniq(); + Temporal *t1 = BlobToTemporal(bind.a); + Temporal *t2 = BlobToTemporal(bind.b); + int count = 0; + Match *path = trgeometry_frechet_path(t1, t2, &count); + free(t1); free(t2); + if (path) { + state->col0.reserve(count); + state->col1.reserve(count); + for (int k = 0; k < count; k++) { + state->col0.push_back(path[k].i); + state->col1.push_back(path[k].j); + } + free(path); + } + return std::move(state); +} +static void PathExec_trgeometry_frechet_path(ClientContext &, TableFunctionInput &input, DataChunk &output) { + auto &state = input.global_state->Cast(); + idx_t total = state.col0.size(); + idx_t count = MinValue(STANDARD_VECTOR_SIZE, total - state.idx); + auto out0 = FlatVector::GetData(output.data[0]); + auto out1 = FlatVector::GetData(output.data[1]); + for (idx_t k = 0; k < count; k++) { + out0[k] = state.col0[state.idx + k]; + out1[k] = state.col1[state.idx + k]; + } + state.idx += count; + output.SetCardinality(count); +} + +struct PathBind_trgeometry_dyntimewarp_path : public TableFunctionData { string_t a, b; }; +struct PathState_trgeometry_dyntimewarp_path : public GlobalTableFunctionState { + idx_t idx = 0; + std::vector col0; + std::vector col1; +}; +static unique_ptr PathBindFn_trgeometry_dyntimewarp_path(ClientContext &, TableFunctionBindInput &input, + vector &return_types, vector &names) { + if (input.inputs.size() != 2 || input.inputs[0].IsNull() || input.inputs[1].IsNull()) + throw BinderException("dynTimeWarpPath: expects two non-null temporal arguments"); + auto bind = make_uniq(); + bind->a = StringValue::Get(input.inputs[0]); + bind->b = StringValue::Get(input.inputs[1]); + return_types = {LogicalType::INTEGER, LogicalType::INTEGER}; + names = {"i", "j"}; + return std::move(bind); +} +static unique_ptr PathInit_trgeometry_dyntimewarp_path(ClientContext &, TableFunctionInitInput &input) { + EnsureMeosThreadInitialized(); + auto &bind = input.bind_data->Cast(); + auto state = make_uniq(); + Temporal *t1 = BlobToTemporal(bind.a); + Temporal *t2 = BlobToTemporal(bind.b); + int count = 0; + Match *path = trgeometry_dyntimewarp_path(t1, t2, &count); + free(t1); free(t2); + if (path) { + state->col0.reserve(count); + state->col1.reserve(count); + for (int k = 0; k < count; k++) { + state->col0.push_back(path[k].i); + state->col1.push_back(path[k].j); + } + free(path); + } + return std::move(state); +} +static void PathExec_trgeometry_dyntimewarp_path(ClientContext &, TableFunctionInput &input, DataChunk &output) { + auto &state = input.global_state->Cast(); + idx_t total = state.col0.size(); + idx_t count = MinValue(STANDARD_VECTOR_SIZE, total - state.idx); + auto out0 = FlatVector::GetData(output.data[0]); + auto out1 = FlatVector::GetData(output.data[1]); + for (idx_t k = 0; k < count; k++) { + out0[k] = state.col0[state.idx + k]; + out1[k] = state.col1[state.idx + k]; + } + state.idx += count; + output.SetCardinality(count); +} + + +// ===== @ingroup meos_temporal_bool ===== +static void Gen_tand_bool_tbool(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](bool a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tand_bool_tbool(a1, t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_ne_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tand_tbool_bool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - PoseChain *a2p = BlobToPosechain(a2); - int32_t r = ever_ne_tposechain_posechain(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + Temporal *r = tand_tbool_bool(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_ne_tposechain_tposechain(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tand_tbool_tbool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_tposechain_tposechain(t1, t2); + Temporal *r = tand_tbool_tbool(t1, t2); free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_rgeo_dist ===== -static void Gen_tdistance_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tnot_tbool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tdistance_trgeometry_geo(t, gs); - free(t); free(gs); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tnot_tbool(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdistance_trgeometry_geo_rev(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tor_bool_tbool(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 = tdistance_trgeometry_geo(t, gs); - free(t); free(gs); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](bool a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tor_bool_tbool(a1, t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdistance_trgeometry_tpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tor_tbool_bool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tdistance_trgeometry_tpoint(t1, t2); - free(t1); free(t2); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tor_tbool_bool(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdistance_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tor_tbool_tbool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tdistance_trgeometry_trgeometry(t1, t2); + Temporal *r = tor_tbool_tbool(t1, t2); free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_nad_trgeometry_tpoint(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_geo_box_comp ===== +static void Gen_stbox_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> double { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - double r = nad_trgeometry_tpoint(t1, t2); - free(t1); free(t2); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return (double) r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + STBox *s = BlobToStbox(in); + uint32_t r = stbox_hash(s); + free(s); + return r; }); } -static void Gen_nad_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> double { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - double r = nad_trgeometry_trgeometry(t1, t2); - free(t1); free(t2); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return (double) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + STBox *s = BlobToStbox(in); + uint64_t r = stbox_hash_extended(s, a2); + free(s); + return r; }); } -static void Gen_nad_trgeometry_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { - Temporal *t = BlobToTemporal(a); - STBox *bx = BlobToStbox(b); - double r = nad_trgeometry_stbox(t, bx); - free(t); free(bx); - if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } - return (double) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_eq(s1, s2); + free(s1); free(s2); + return r; }); } +static void Gen_stbox_ge(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_ge(s1, s2); + free(s1); free(s2); + return r; + }); +} -// ===== @ingroup meos_geo_comp_temp ===== -static void Gen_teq_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_gt(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 = teq_geo_tgeo(gs, t); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_teq_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = teq_tgeo_geo(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tne_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_lt(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 = tne_geo_tgeo(gs, t); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_lt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tne_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tne_tgeo_geo(t, gs); - free(t); free(gs); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_ne(s1, s2); + free(s1); free(s2); + return r; + }); +} + + +// ===== @ingroup meos_h3_hierarchy ===== +static void Gen_h3_cell_to_children(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_cell_to_children(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_th3index_cell_to_parent_next(DataChunk &args, ExpressionState &, 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); + Temporal *r = th3index_cell_to_parent_next(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } +static void Gen_th3index_cell_to_center_child(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_cell_to_center_child(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} -// ===== @ingroup meos_geo_set_inout ===== -static void Gen_spatialset_as_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cell_to_center_child_next(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Set *s = BlobToSet(a); - char *r = spatialset_as_text(s, a2); - free(s); - return TakeCString(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_cell_to_center_child_next(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spatialset_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cell_to_child_pos(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Set *s = BlobToSet(a); - char *r = spatialset_as_text(s, 15); - free(s); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_cell_to_child_pos(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spatialset_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_child_pos_to_cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Set *s = BlobToSet(a); - char *r = spatialset_as_ewkt(s, a2); - free(s); - return TakeCString(result, r); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in1, string_t in2, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = th3index_child_pos_to_cell(t1, t2, a2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spatialset_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3_uncompact_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Set *s = BlobToSet(a); - char *r = spatialset_as_ewkt(s, 15); + Set *r = h3_uncompact_cells(s, a2); free(s); - return TakeCString(result, r); + return SetToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_restrict ===== -static void Gen_tpose_at_geom(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_comp_temp ===== +static void Gen_teq_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tpose_at_geom(t, gs); - free(t); free(gs); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = teq_quadbin_tquadbin((uint64_t) a1, t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_at_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = tpose_at_pose(t, a2p); - free(a2p); free(t); + Temporal *r = teq_tquadbin_quadbin(t, (uint64_t) a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_minus_geom(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tpose_minus_geom(t, gs); - free(t); free(gs); + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = teq_tquadbin_tquadbin(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_minus_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = tpose_minus_pose(t, a2p); - free(a2p); free(t); + Temporal *r = tne_quadbin_tquadbin((uint64_t) a1, t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_at_elevation(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - Temporal *r = tpose_at_elevation(t, cc); - free(t); free(cc); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tne_tquadbin_quadbin(t, (uint64_t) a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_minus_elevation(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - Temporal *r = tpose_minus_elevation(t, cc); - free(t); free(cc); + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tne_tquadbin_tquadbin(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } @@ -1674,278 +1788,257 @@ static void Gen_adjacent_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vecto } -// ===== @ingroup meos_h3_accessor ===== -static void Gen_th3index_start_value(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_json_accessor ===== +static void Gen_tjsonb_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) -> int64_t { - Temporal *t = BlobToTemporal(in); - int64_t r = (int64_t) th3index_start_value(t); - free(t); - return r; - }); -} - -static void Gen_th3index_end_value(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) -> int64_t { - Temporal *t = BlobToTemporal(in); - int64_t r = (int64_t) th3index_end_value(t); - free(t); - return r; - }); -} - -static void Gen_th3index_value_n(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> int64_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - uint64_t v; - bool ok = th3index_value_n(t, a2, &v); + Jsonb * r = tjsonb_end_value(t); free(t); - if (!ok) { mask.SetInvalid(idx); return int64_t(); } - return (int64_t) v; - }); -} - -static void Gen_th3index_values(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - uint64_t * arr = th3index_values(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - - -// ===== @ingroup meos_h3_inspection ===== -static void Gen_h3_get_icosahedron_faces(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_get_icosahedron_faces(static_cast(a0)); - return SetToBlobN(result, r, mask, idx); + return JsonbToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_get_base_cell_number(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_start_value(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_get_base_cell_number(t); + Jsonb * r = tjsonb_start_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return JsonbToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_is_res_class_iii(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_value_at_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + auto rc = args.size(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = th3index_is_res_class_iii(t); + Jsonb *o = NULL; + bool ok = tjsonb_value_at_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true, &o); free(t); - return TemporalToBlobN(result, r, mask, idx); + if (! ok) { mask.SetInvalid(idx); return string_t(); } + return JsonbToBlob(result, o); }); } -static void Gen_th3index_is_pentagon(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_value_n(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + auto rc = args.size(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = th3index_is_pentagon(t); + Jsonb *o = NULL; + bool ok = tjsonb_value_n(t, a2, &o); free(t); - return TemporalToBlobN(result, r, mask, idx); + if (! ok) { mask.SetInvalid(idx); return string_t(); } + return JsonbToBlob(result, o); }); } -// ===== @ingroup meos_rgeo_modif ===== -static void Gen_trgeometry_delete_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_accessor ===== +static void Gen_tpcbox_hasx(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, timestamp_tz_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + bool r = tpcbox_hasx(v); + free(v); + return r; }); } -static void Gen_trgeometry_delete_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_hasz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + bool r = tpcbox_hasz(v); + free(v); + return r; }); } -static void Gen_trgeometry_merge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_hast(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = trgeometry_merge(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + bool r = tpcbox_hast(v); + free(v); + return r; }); } - -// ===== @ingroup meos_pointcloud_base_comp ===== -static void Gen_pcpoint_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), + UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Pcpoint *v = BlobToPcpoint(in); - uint32_t r = pcpoint_hash(v); + TPCBox *v = BlobToTpcbox(in); + int32_t r = tpcbox_srid(v); free(v); return r; }); } -static void Gen_pcpatch_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_pcid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Pcpatch *v = BlobToPcpatch(in); - uint32_t r = pcpatch_hash(v); + TPCBox *v = BlobToTpcbox(in); + uint32_t r = tpcbox_pcid(v); free(v); return r; }); } -static void Gen_pcpoint_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_temporal_spatial_rel_ever ===== +static void Gen_atouches_tpoint_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - Pcpoint *s = BlobToPcpoint(in); - uint64_t r = pcpoint_hash_extended(s, a2); - free(s); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = atouches_tpoint_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_pcpatch_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_etouches_tpoint_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - Pcpatch *s = BlobToPcpatch(in); - uint64_t r = pcpatch_hash_extended(s, a2); - free(s); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = etouches_tpoint_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -// ===== @ingroup meos_json_conversion ===== -static void Gen_tjsonb_to_ttext(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_conversion ===== +static void Gen_trgeometry_to_tpose(DataChunk &args, ExpressionState &, 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); - Temporal *r = tjsonb_to_ttext(t); + Temporal *r = trgeometry_to_tpose(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttext_to_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_to_tgeompoint(DataChunk &args, ExpressionState &, 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); - Temporal *r = ttext_to_tjsonb(t); + Temporal *r = trgeometry_to_tgeompoint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_h3_metrics ===== -static void Gen_th3index_edge_length(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_to_tgeometry(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_edge_length(t); + Temporal *r = trgeometry_to_tgeometry(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeogpoint_great_circle_distance(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_pose_conversion ===== +static void Gen_tpose_make(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tgeogpoint_great_circle_distance(t1, t2); + Temporal *r = tpose_make(t1, t2); free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } +static void Gen_tpose_to_tpoint(DataChunk &args, ExpressionState &, 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); + Temporal *r = tpose_to_tpoint(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} -// ===== @ingroup meos_rgeo_spatialfuncs ===== -static void Gen_trgeometry_body_point_trajectory(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_geo_box_inout ===== +static void Gen_stbox_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + STBox *s = BlobToStbox(a); + char *r = stbox_out(s, a2); + free(s); + return TakeCString(result, r); + }); +} + +static void Gen_stbox_out_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + STBox *s = BlobToStbox(a); + char *r = stbox_out(s, 15); + free(s); + return TakeCString(result, r); + }); +} + + +// ===== @ingroup meos_h3_comp ===== +static void Gen_ever_eq_h3indexset_th3index(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_s, string_t in_t, ValidityMask &mask, idx_t idx) { + Set *s = BlobToSet(in_s); 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 = trgeometry_body_point_trajectory(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + int r = ever_eq_h3indexset_th3index(s, t); + free(s); free(t); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -// ===== @ingroup meos_pose_base_transf ===== -static void Gen_pose_compose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_set_conversion ===== +static void Gen_h3index_to_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - Pose *r = pose_compose(s1, s2); - free(s1); free(s2); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return PoseToBlob(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3index_to_set(static_cast(a0)); + return SetToBlobN(result, r, mask, idx); }); } @@ -3046,94 +3139,110 @@ void RegisterGenerated_meos_h3_comp_ever(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {H3indexTypes::th3index(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_always_ne_th3index_th3index)); } -void RegisterGenerated_meos_posechain_comp_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_always_eq_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_always_eq_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_always_eq_tposechain_tposechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_always_eq_tposechain_tposechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_always_ne_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_always_ne_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_always_ne_tposechain_tposechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_always_ne_tposechain_tposechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_ever_eq_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_ever_eq_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_ever_eq_tposechain_tposechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_ever_eq_tposechain_tposechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_ever_ne_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_ever_ne_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_ever_ne_tposechain_tposechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_ever_ne_tposechain_tposechain)); -} - -void RegisterGenerated_meos_rgeo_dist(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_tpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_tpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_nad_trgeometry_tpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_nad_trgeometry_tpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_nad_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_nad_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TrgeometryTypes::trgeometry(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_trgeometry_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TrgeometryTypes::trgeometry(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_trgeometry_stbox)); -} - -void RegisterGenerated_meos_geo_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); -} - -void RegisterGenerated_meos_geo_set_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::cbufferset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::cbufferset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::npointset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::npointset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::pcpointset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::pcpatchset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::poseset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::poseset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::posechainset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::posechainset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::cbufferset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::cbufferset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {H3indexTypes::h3indexset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::npointset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::npointset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::pcpointset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::pcpatchset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::poseset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::poseset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::posechainset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::posechainset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::quadbinset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::s2cellset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); -} - -void RegisterGenerated_meos_pose_restrict(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {PoseTypes::tpose(), MobilityDuckGeometryType()}, PoseTypes::tpose(), Gen_tpose_at_geom)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_at_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {PoseTypes::tpose(), MobilityDuckGeometryType()}, PoseTypes::tpose(), Gen_tpose_minus_geom)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_minus_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atElevation", {PoseTypes::tpose(), SpanTypes::floatspan()}, PoseTypes::tpose(), Gen_tpose_at_elevation)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusElevation", {PoseTypes::tpose(), SpanTypes::floatspan()}, PoseTypes::tpose(), Gen_tpose_minus_elevation)); +void RegisterGenerated_meos_geo_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {H3indexTypes::th3index(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TPcpointTypes::tpcpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TPcpatchTypes::tpcpatch(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {NpointTypes::tnpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TgeompointType::tgeompoint()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TgeogpointType::tgeogpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TGeometryTypes::tgeometry()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TGeographyTypes::tgeography()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::tcbuffer()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {H3indexTypes::th3index()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {QuadbinTypes::tquadbin()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {S2cellTypes::ts2cell()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TPcpointTypes::tpcpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TPcpatchTypes::tpcpatch()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {NpointTypes::tnpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::tposechain()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {NpointTypes::tnpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TgeompointType::tgeompoint()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TgeogpointType::tgeogpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TGeometryTypes::tgeometry()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TGeographyTypes::tgeography()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::tcbuffer()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {NpointTypes::tnpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::tposechain()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); +} + +void RegisterGenerated_meos_rgeo_analytics_similarity(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hausdorffDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_trgeometry_hausdorff_distance)); + RegisterSerializedScalarFunction(loader, ScalarFunction("frechetDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_trgeometry_frechet_distance)); + RegisterSerializedScalarFunction(loader, ScalarFunction("dynTimeWarpDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_trgeometry_dyntimewarp_distance)); + loader.RegisterFunction(TableFunction("frechetDistancePath", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, PathExec_trgeometry_frechet_path, PathBindFn_trgeometry_frechet_path, PathInit_trgeometry_frechet_path)); + loader.RegisterFunction(TableFunction("dynTimeWarpPath", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, PathExec_trgeometry_dyntimewarp_path, PathBindFn_trgeometry_dyntimewarp_path, PathInit_trgeometry_dyntimewarp_path)); +} + +void RegisterGenerated_meos_temporal_bool(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_bool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_bool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tand_tbool_bool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tand_tbool_bool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_tbool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_tbool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNot", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tnot_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tnot_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_bool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_bool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tor_tbool_bool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tor_tbool_bool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_tbool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_tbool_tbool)); +} + +void RegisterGenerated_meos_geo_box_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {StboxType::stbox()}, LogicalType::UINTEGER, Gen_stbox_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {StboxType::stbox(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_stbox_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ne)); +} + +void RegisterGenerated_meos_h3_hierarchy(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToChildren", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_cell_to_children)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cell_to_parent_next)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToCenterChild", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_th3index_cell_to_center_child)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToCenterChild", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cell_to_center_child_next)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToChildPos", {H3indexTypes::th3index(), LogicalType::INTEGER}, TemporalTypes::tbigint(), Gen_th3index_cell_to_child_pos)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3ChildPosToCell", {H3indexTypes::th3index(), H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_th3index_child_pos_to_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("uncompactCells", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_uncompact_cells)); +} + +void RegisterGenerated_meos_quadbin_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_teq_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, TemporalTypes::tbool(), Gen_teq_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_teq_tquadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_tne_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, TemporalTypes::tbool(), Gen_tne_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_tne_tquadbin_tquadbin)); } void RegisterGenerated_meos_pointcloud_box_topo(ExtensionLoader &loader) { @@ -3149,51 +3258,50 @@ void RegisterGenerated_meos_pointcloud_box_topo(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_adjacent_tpcbox_tpcbox)); } -void RegisterGenerated_meos_h3_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {H3indexTypes::th3index()}, H3indexTypes::h3index(), Gen_th3index_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {H3indexTypes::th3index()}, H3indexTypes::h3index(), Gen_th3index_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_th3index_value_n)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getValues", {H3indexTypes::th3index()}, LogicalType::LIST(H3indexTypes::h3index()), Gen_th3index_values)); +void RegisterGenerated_meos_json_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TJsonbTypes::tjsonb()}, TJsonbTypes::jsonb(), Gen_tjsonb_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TJsonbTypes::tjsonb()}, TJsonbTypes::jsonb(), Gen_tjsonb_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueAtTimestamp", {TJsonbTypes::tjsonb(), LogicalType::TIMESTAMP_TZ}, TJsonbTypes::jsonb(), Gen_tjsonb_value_at_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, TJsonbTypes::jsonb(), Gen_tjsonb_value_n)); } -void RegisterGenerated_meos_h3_inspection(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("h3GetIcosahedronFaces", {H3indexTypes::h3index()}, SetTypes::intset(), Gen_h3_get_icosahedron_faces)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetBaseCellNumber", {H3indexTypes::th3index()}, TemporalTypes::tint(), Gen_th3index_get_base_cell_number)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3IsResClassIii", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_is_res_class_iii)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3IsPentagon", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_is_pentagon)); +void RegisterGenerated_meos_pointcloud_box_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hasX", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hasx)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hasZ", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hasz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hasT", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hast)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TpcboxType::tpcbox()}, LogicalType::INTEGER, Gen_tpcbox_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TpcboxType::tpcbox()}, LogicalType::UINTEGER, Gen_tpcbox_pcid)); } -void RegisterGenerated_meos_rgeo_modif(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_trgeometry_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("merge", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_merge)); +void RegisterGenerated_meos_temporal_spatial_rel_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("aTouches", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_atouches_tpoint_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eTouches", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_etouches_tpoint_geo)); } -void RegisterGenerated_meos_pointcloud_base_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {TPcpointTypes::pcpoint()}, LogicalType::UINTEGER, Gen_pcpoint_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {TPcpatchTypes::pcpatch()}, LogicalType::UINTEGER, Gen_pcpatch_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {TPcpointTypes::pcpoint(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_pcpoint_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {TPcpatchTypes::pcpatch(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_pcpatch_hash_extended)); +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)); } -void RegisterGenerated_meos_json_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("ttext", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonb", {TemporalTypes::ttext()}, TJsonbTypes::tjsonb(), Gen_ttext_to_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::ttext()}, TJsonbTypes::tjsonb(), Gen_ttext_to_tjsonb)); +void RegisterGenerated_meos_pose_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tpose", {PoseTypes::tpose(), PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_to_tpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_to_tpoint)); } -void RegisterGenerated_meos_h3_metrics(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("th3EdgeLength", {H3indexTypes::th3index()}, TemporalTypes::tfloat(), Gen_th3index_edge_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("greatCircleDistance", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tgeogpoint_great_circle_distance)); +void RegisterGenerated_meos_geo_box_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {StboxType::stbox(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_stbox_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {StboxType::stbox()}, LogicalType::VARCHAR, Gen_stbox_out_d)); } -void RegisterGenerated_meos_rgeo_spatialfuncs(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("bodyPointTrajectory", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TgeompointType::tgeompoint(), Gen_trgeometry_body_point_trajectory)); +void RegisterGenerated_meos_h3_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {H3indexTypes::h3indexset(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_ever_eq_h3indexset_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {H3indexTypes::h3indexset(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_ever_eq_h3indexset_th3index)); } -void RegisterGenerated_meos_pose_base_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {PoseTypes::pose(), PoseTypes::pose()}, PoseTypes::pose(), Gen_pose_compose)); +void RegisterGenerated_meos_h3_set_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("set", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3index_to_set)); } void RegisterGenerated_meos_posechain_base_srid(ExtensionLoader &loader) { diff --git a/src/generated/generated_temporal_udfs_1.cpp b/src/generated/generated_temporal_udfs_1.cpp index ca7f5644..4e3a26a1 100644 --- a/src/generated/generated_temporal_udfs_1.cpp +++ b/src/generated/generated_temporal_udfs_1.cpp @@ -345,591 +345,1767 @@ inline string_t TakeCString(Vector &result, char *s) { } -// ===== @ingroup meos_temporal_bbox_topo ===== -static void Gen_adjacent_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_setspan_pos ===== +static void Gen_after_date_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = adjacent_temporal_temporal(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = after_date_set(ToMeosDate(a1), s); + free(s); + return r; }); } -static void Gen_adjacent_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_after_set_date(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = adjacent_tnumber_tnumber(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + Set *s = BlobToSet(a); + bool r = after_set_date(s, ToMeosDate(a2)); + free(s); + return r; }); } -static void Gen_contained_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_after_set_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = contained_temporal_temporal(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + Set *s = BlobToSet(a); + bool r = after_set_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; }); } -static void Gen_contained_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_after_timestamptz_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = contained_tnumber_tnumber(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = after_timestamptz_set(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; }); } -static void Gen_contains_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_before_date_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = contains_temporal_temporal(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = before_date_set(ToMeosDate(a1), s); + free(s); + return r; }); } -static void Gen_contains_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_before_set_date(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = contains_tnumber_tnumber(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + Set *s = BlobToSet(a); + bool r = before_set_date(s, ToMeosDate(a2)); + free(s); + return r; }); } -static void Gen_overlaps_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_before_set_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = overlaps_temporal_temporal(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + Set *s = BlobToSet(a); + bool r = before_set_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; }); } -static void Gen_overlaps_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_before_timestamptz_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = overlaps_tnumber_tnumber(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = before_timestamptz_set(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; }); } -static void Gen_same_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_bigint_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = same_temporal_temporal(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = left_bigint_set(a1, s); + free(s); + return r; }); } -static void Gen_same_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_float_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - bool r = same_tnumber_tnumber(t1, t2); - free(t1); free(t2); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + Set *s = BlobToSet(b); + bool r = left_float_set(a1, s); + free(s); + return r; }); } -static void Gen_adjacent_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_int_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *bx = BlobToTbox(a); - Temporal *t = BlobToTemporal(b); - bool r = adjacent_tbox_tnumber(bx, t); - free(bx); free(t); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = left_int_set(a1, s); + free(s); + return r; }); } -static void Gen_adjacent_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_set_bigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - TBox *bx = BlobToTbox(b); - bool r = adjacent_tnumber_tbox(t, bx); - free(t); free(bx); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + Set *s = BlobToSet(a); + bool r = left_set_bigint(s, a2); + free(s); + return r; }); } -static void Gen_contained_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_set_float(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *bx = BlobToTbox(a); - Temporal *t = BlobToTemporal(b); - bool r = contained_tbox_tnumber(bx, t); - free(bx); free(t); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + Set *s = BlobToSet(a); + bool r = left_set_float(s, a2); + free(s); + return r; }); } -static void Gen_contained_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_set_int(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - TBox *bx = BlobToTbox(b); - bool r = contained_tnumber_tbox(t, bx); - free(t); free(bx); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Set *s = BlobToSet(a); + bool r = left_set_int(s, a2); + free(s); + return r; }); } -static void Gen_contains_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_set_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *bx = BlobToTbox(a); - Temporal *t = BlobToTemporal(b); - bool r = contains_tbox_tnumber(bx, t); - free(bx); free(t); - return (bool) r; + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = left_set_set(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_contains_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_set_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - TBox *bx = BlobToTbox(b); - bool r = contains_tnumber_tbox(t, bx); - free(t); free(bx); - return (bool) r; + [&](string_t a, string_t a2) { + Set *s = BlobToSet(a); + text *t2 = MakeText(a2); + bool r = left_set_text(s, t2); + free(t2); free(s); + return r; }); } -static void Gen_overlaps_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_text_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *bx = BlobToTbox(a); - Temporal *t = BlobToTemporal(b); - bool r = overlaps_tbox_tnumber(bx, t); - free(bx); free(t); - return (bool) r; + [&](string_t a1, string_t b) { + text *t1 = MakeText(a1); + Set *s = BlobToSet(b); + bool r = left_text_set(t1, s); + free(t1); free(s); + return r; }); } -static void Gen_overlaps_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overafter_date_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - TBox *bx = BlobToTbox(b); - bool r = overlaps_tnumber_tbox(t, bx); - free(t); free(bx); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overafter_date_set(ToMeosDate(a1), s); + free(s); + return r; }); } -static void Gen_same_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overafter_set_date(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *bx = BlobToTbox(a); - Temporal *t = BlobToTemporal(b); - bool r = same_tbox_tnumber(bx, t); - free(bx); free(t); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + Set *s = BlobToSet(a); + bool r = overafter_set_date(s, ToMeosDate(a2)); + free(s); + return r; }); } -static void Gen_same_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overafter_set_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - TBox *bx = BlobToTbox(b); - bool r = same_tnumber_tbox(t, bx); - free(t); free(bx); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + Set *s = BlobToSet(a); + bool r = overafter_set_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; }); } -static void Gen_adjacent_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overafter_timestamptz_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = adjacent_numspan_tnumber(cc, t); - free(cc); free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overafter_timestamptz_set(DuckDBToMeosTimestamp(a1).value, s); + free(s); return r; }); } -static void Gen_adjacent_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overbefore_date_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = adjacent_temporal_tstzspan(t, cc); - free(t); free(cc); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overbefore_date_set(ToMeosDate(a1), s); + free(s); return r; }); } -static void Gen_adjacent_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overbefore_set_date(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = adjacent_tnumber_numspan(t, cc); - free(t); free(cc); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + Set *s = BlobToSet(a); + bool r = overbefore_set_date(s, ToMeosDate(a2)); + free(s); return r; }); } -static void Gen_adjacent_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overbefore_set_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = adjacent_tstzspan_temporal(cc, t); - free(cc); free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + Set *s = BlobToSet(a); + bool r = overbefore_set_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); return r; }); } -static void Gen_contained_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overbefore_timestamptz_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = contained_numspan_tnumber(cc, t); - free(cc); free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overbefore_timestamptz_set(DuckDBToMeosTimestamp(a1).value, s); + free(s); return r; }); } -static void Gen_contained_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_bigint_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = contained_temporal_tstzspan(t, cc); - free(t); free(cc); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overleft_bigint_set(a1, s); + free(s); return r; }); } -static void Gen_contained_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_float_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = contained_tnumber_numspan(t, cc); - free(t); free(cc); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overleft_float_set(a1, s); + free(s); return r; }); } -static void Gen_contained_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_int_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = contained_tstzspan_temporal(cc, t); - free(cc); free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overleft_int_set(a1, s); + free(s); return r; }); } -static void Gen_contains_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_set_bigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = contains_numspan_tnumber(cc, t); - free(cc); free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + Set *s = BlobToSet(a); + bool r = overleft_set_bigint(s, a2); + free(s); return r; }); } -static void Gen_contains_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_set_float(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = contains_temporal_tstzspan(t, cc); - free(t); free(cc); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + Set *s = BlobToSet(a); + bool r = overleft_set_float(s, a2); + free(s); return r; }); } -static void Gen_contains_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_set_int(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = contains_tnumber_numspan(t, cc); - free(t); free(cc); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Set *s = BlobToSet(a); + bool r = overleft_set_int(s, a2); + free(s); return r; }); } -static void Gen_contains_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_set_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = contains_tstzspan_temporal(cc, t); - free(cc); free(t); + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = overleft_set_set(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_overlaps_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_set_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = overlaps_numspan_tnumber(cc, t); - free(cc); free(t); + [&](string_t a, string_t a2) { + Set *s = BlobToSet(a); + text *t2 = MakeText(a2); + bool r = overleft_set_text(s, t2); + free(t2); free(s); return r; }); } -static void Gen_overlaps_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_text_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = overlaps_temporal_tstzspan(t, cc); - free(t); free(cc); + [&](string_t a1, string_t b) { + text *t1 = MakeText(a1); + Set *s = BlobToSet(b); + bool r = overleft_text_set(t1, s); + free(t1); free(s); return r; }); } -static void Gen_overlaps_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_bigint_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = overlaps_tnumber_numspan(t, cc); - free(t); free(cc); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overright_bigint_set(a1, s); + free(s); return r; }); } -static void Gen_overlaps_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_float_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = overlaps_tstzspan_temporal(cc, t); - free(cc); free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overright_float_set(a1, s); + free(s); return r; }); } -static void Gen_same_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_int_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = same_numspan_tnumber(cc, t); - free(cc); free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = overright_int_set(a1, s); + free(s); return r; }); } -static void Gen_same_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_set_bigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = same_temporal_tstzspan(t, cc); - free(t); free(cc); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + Set *s = BlobToSet(a); + bool r = overright_set_bigint(s, a2); + free(s); return r; }); } -static void Gen_same_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_set_float(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - bool r = same_tnumber_numspan(t, cc); - free(t); free(cc); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + Set *s = BlobToSet(a); + bool r = overright_set_float(s, a2); + free(s); return r; }); } -static void Gen_same_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_set_int(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *cc = BlobToSpan(a); - Temporal *t = BlobToTemporal(b); - bool r = same_tstzspan_temporal(cc, t); - free(cc); free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Set *s = BlobToSet(a); + bool r = overright_set_int(s, a2); + free(s); return r; }); } - -// ===== @ingroup meos_setspan_accessor ===== -static void Gen_bigintset_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_set_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - int64_t r = bigintset_end_value(s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = overright_set_set(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_bigintset_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_set_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - int64_t r = bigintset_start_value(s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t a2) { + Set *s = BlobToSet(a); + text *t2 = MakeText(a2); + bool r = overright_set_text(s, t2); + free(t2); free(s); return r; }); } -static void Gen_dateset_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_text_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - DateADT r = dateset_end_value(s); - free(s); - return FromMeosDate((int32_t) r); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a1, string_t b) { + text *t1 = MakeText(a1); + Set *s = BlobToSet(b); + bool r = overright_text_set(t1, s); + free(t1); free(s); + return r; }); } -static void Gen_dateset_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_right_bigint_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - DateADT r = dateset_start_value(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = right_bigint_set(a1, s); free(s); - return FromMeosDate((int32_t) r); + return r; }); } -static void Gen_floatset_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_right_float_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - double r = floatset_end_value(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + Set *s = BlobToSet(b); + bool r = right_float_set(a1, s); free(s); return r; }); } -static void Gen_floatset_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_right_int_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - double r = floatset_start_value(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + Set *s = BlobToSet(b); + bool r = right_int_set(a1, s); free(s); return r; }); } -static void Gen_intset_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_right_set_bigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - int32_t r = intset_end_value(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + Set *s = BlobToSet(a); + bool r = right_set_bigint(s, a2); free(s); return r; }); } -static void Gen_intset_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_right_set_float(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - int32_t r = intset_start_value(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + Set *s = BlobToSet(a); + bool r = right_set_float(s, a2); free(s); return r; }); } -static void Gen_set_num_values(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_right_set_int(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - int32_t r = set_num_values(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Set *s = BlobToSet(a); + bool r = right_set_int(s, a2); free(s); return r; }); } -static void Gen_textset_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_right_set_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = right_set_set(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_right_set_text(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t a2) { + Set *s = BlobToSet(a); + text *t2 = MakeText(a2); + bool r = right_set_text(s, t2); + free(t2); free(s); + return r; + }); +} + +static void Gen_right_text_set(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a1, string_t b) { + text *t1 = MakeText(a1); + Set *s = BlobToSet(b); + bool r = right_text_set(t1, s); + free(t1); free(s); + return r; + }); +} + +static void Gen_after_date_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = after_date_span(ToMeosDate(a1), s); + free(s); + return r; + }); +} + +static void Gen_after_span_date(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + Span *s = BlobToSpan(a); + bool r = after_span_date(s, ToMeosDate(a2)); + free(s); + return r; + }); +} + +static void Gen_after_span_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + Span *s = BlobToSpan(a); + bool r = after_span_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; + }); +} + +static void Gen_after_timestamptz_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = after_timestamptz_span(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; + }); +} + +static void Gen_before_date_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = before_date_span(ToMeosDate(a1), s); + free(s); + return r; + }); +} + +static void Gen_before_span_date(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + Span *s = BlobToSpan(a); + bool r = before_span_date(s, ToMeosDate(a2)); + free(s); + return r; + }); +} + +static void Gen_before_span_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + Span *s = BlobToSpan(a); + bool r = before_span_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; + }); +} + +static void Gen_before_timestamptz_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = before_timestamptz_span(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; + }); +} + +static void Gen_left_bigint_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = left_bigint_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_left_float_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = left_float_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_left_int_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = left_int_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_left_span_bigint(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + Span *s = BlobToSpan(a); + bool r = left_span_bigint(s, a2); + free(s); + return r; + }); +} + +static void Gen_left_span_float(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + Span *s = BlobToSpan(a); + bool r = left_span_float(s, a2); + free(s); + return r; + }); +} + +static void Gen_left_span_int(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Span *s = BlobToSpan(a); + bool r = left_span_int(s, a2); + free(s); + return r; + }); +} + +static void Gen_left_span_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = left_span_span(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_left_span_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *x = BlobToSpan(a); + SpanSet *y = BlobToSpanSet(b); + bool r = left_span_spanset(x, y); + free(x); free(y); + return r; + }); +} + +static void Gen_left_spanset_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *x = BlobToSpanSet(a); + Span *y = BlobToSpan(b); + bool r = left_spanset_span(x, y); + free(x); free(y); + return r; + }); +} + +static void Gen_overafter_date_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overafter_date_span(ToMeosDate(a1), s); + free(s); + return r; + }); +} + +static void Gen_overafter_span_date(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + Span *s = BlobToSpan(a); + bool r = overafter_span_date(s, ToMeosDate(a2)); + free(s); + return r; + }); +} + +static void Gen_overafter_span_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + Span *s = BlobToSpan(a); + bool r = overafter_span_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; + }); +} + +static void Gen_overafter_timestamptz_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overafter_timestamptz_span(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; + }); +} + +static void Gen_overbefore_date_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overbefore_date_span(ToMeosDate(a1), s); + free(s); + return r; + }); +} + +static void Gen_overbefore_span_date(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + Span *s = BlobToSpan(a); + bool r = overbefore_span_date(s, ToMeosDate(a2)); + free(s); + return r; + }); +} + +static void Gen_overbefore_span_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + Span *s = BlobToSpan(a); + bool r = overbefore_span_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; + }); +} + +static void Gen_overbefore_timestamptz_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overbefore_timestamptz_span(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; + }); +} + +static void Gen_overleft_bigint_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overleft_bigint_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_overleft_float_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overleft_float_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_overleft_int_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overleft_int_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_overleft_span_bigint(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + Span *s = BlobToSpan(a); + bool r = overleft_span_bigint(s, a2); + free(s); + return r; + }); +} + +static void Gen_overleft_span_float(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + Span *s = BlobToSpan(a); + bool r = overleft_span_float(s, a2); + free(s); + return r; + }); +} + +static void Gen_overleft_span_int(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Span *s = BlobToSpan(a); + bool r = overleft_span_int(s, a2); + free(s); + return r; + }); +} + +static void Gen_overleft_span_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = overleft_span_span(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_overleft_span_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *x = BlobToSpan(a); + SpanSet *y = BlobToSpanSet(b); + bool r = overleft_span_spanset(x, y); + free(x); free(y); + return r; + }); +} + +static void Gen_overleft_spanset_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *x = BlobToSpanSet(a); + Span *y = BlobToSpan(b); + bool r = overleft_spanset_span(x, y); + free(x); free(y); + return r; + }); +} + +static void Gen_overright_bigint_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overright_bigint_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_overright_float_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overright_float_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_overright_int_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = overright_int_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_overright_span_bigint(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + Span *s = BlobToSpan(a); + bool r = overright_span_bigint(s, a2); + free(s); + return r; + }); +} + +static void Gen_overright_span_float(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + Span *s = BlobToSpan(a); + bool r = overright_span_float(s, a2); + free(s); + return r; + }); +} + +static void Gen_overright_span_int(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Span *s = BlobToSpan(a); + bool r = overright_span_int(s, a2); + free(s); + return r; + }); +} + +static void Gen_overright_span_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = overright_span_span(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_overright_span_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *x = BlobToSpan(a); + SpanSet *y = BlobToSpanSet(b); + bool r = overright_span_spanset(x, y); + free(x); free(y); + return r; + }); +} + +static void Gen_overright_spanset_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *x = BlobToSpanSet(a); + Span *y = BlobToSpan(b); + bool r = overright_spanset_span(x, y); + free(x); free(y); + return r; + }); +} + +static void Gen_right_bigint_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = right_bigint_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_right_float_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = right_float_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_right_int_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + Span *s = BlobToSpan(b); + bool r = right_int_span(a1, s); + free(s); + return r; + }); +} + +static void Gen_right_span_bigint(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + Span *s = BlobToSpan(a); + bool r = right_span_bigint(s, a2); + free(s); + return r; + }); +} + +static void Gen_right_span_float(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + Span *s = BlobToSpan(a); + bool r = right_span_float(s, a2); + free(s); + return r; + }); +} + +static void Gen_right_span_int(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Span *s = BlobToSpan(a); + bool r = right_span_int(s, a2); + free(s); + return r; + }); +} + +static void Gen_right_span_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = right_span_span(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_right_span_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *x = BlobToSpan(a); + SpanSet *y = BlobToSpanSet(b); + bool r = right_span_spanset(x, y); + free(x); free(y); + return r; + }); +} + +static void Gen_right_spanset_span(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *x = BlobToSpanSet(a); + Span *y = BlobToSpan(b); + bool r = right_spanset_span(x, y); + free(x); free(y); + return r; + }); +} + +static void Gen_after_date_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = after_date_spanset(ToMeosDate(a1), s); + free(s); + return r; + }); +} + +static void Gen_after_spanset_date(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = after_spanset_date(s, ToMeosDate(a2)); + free(s); + return r; + }); +} + +static void Gen_after_spanset_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = after_spanset_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; + }); +} + +static void Gen_after_timestamptz_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = after_timestamptz_spanset(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; + }); +} + +static void Gen_before_date_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = before_date_spanset(ToMeosDate(a1), s); + free(s); + return r; + }); +} + +static void Gen_before_spanset_date(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = before_spanset_date(s, ToMeosDate(a2)); + free(s); + return r; + }); +} + +static void Gen_before_spanset_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = before_spanset_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; + }); +} + +static void Gen_before_timestamptz_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = before_timestamptz_spanset(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; + }); +} + +static void Gen_left_bigint_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = left_bigint_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_left_float_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = left_float_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_left_int_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = left_int_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_left_spanset_bigint(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = left_spanset_bigint(s, a2); + free(s); + return r; + }); +} + +static void Gen_left_spanset_float(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = left_spanset_float(s, a2); + free(s); + return r; + }); +} + +static void Gen_left_spanset_int(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = left_spanset_int(s, a2); + free(s); + return r; + }); +} + +static void Gen_left_spanset_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = left_spanset_spanset(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_overafter_date_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overafter_date_spanset(ToMeosDate(a1), s); + free(s); + return r; + }); +} + +static void Gen_overafter_spanset_date(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overafter_spanset_date(s, ToMeosDate(a2)); + free(s); + return r; + }); +} + +static void Gen_overafter_spanset_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overafter_spanset_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; + }); +} + +static void Gen_overafter_timestamptz_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overafter_timestamptz_spanset(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; + }); +} + +static void Gen_overbefore_date_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overbefore_date_spanset(ToMeosDate(a1), s); + free(s); + return r; + }); +} + +static void Gen_overbefore_spanset_date(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, date_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overbefore_spanset_date(s, ToMeosDate(a2)); + free(s); + return r; + }); +} + +static void Gen_overbefore_spanset_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, timestamp_tz_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overbefore_spanset_timestamptz(s, DuckDBToMeosTimestamp(a2).value); + free(s); + return r; + }); +} + +static void Gen_overbefore_timestamptz_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overbefore_timestamptz_spanset(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; + }); +} + +static void Gen_overleft_bigint_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overleft_bigint_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_overleft_float_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overleft_float_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_overleft_int_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overleft_int_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_overleft_spanset_bigint(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overleft_spanset_bigint(s, a2); + free(s); + return r; + }); +} + +static void Gen_overleft_spanset_float(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overleft_spanset_float(s, a2); + free(s); + return r; + }); +} + +static void Gen_overleft_spanset_int(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overleft_spanset_int(s, a2); + free(s); + return r; + }); +} + +static void Gen_overleft_spanset_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = overleft_spanset_spanset(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_overright_bigint_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overright_bigint_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_overright_float_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overright_float_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_overright_int_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = overright_int_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_overright_spanset_bigint(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overright_spanset_bigint(s, a2); + free(s); + return r; + }); +} + +static void Gen_overright_spanset_float(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overright_spanset_float(s, a2); + free(s); + return r; + }); +} + +static void Gen_overright_spanset_int(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = overright_spanset_int(s, a2); + free(s); + return r; + }); +} + +static void Gen_overright_spanset_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = overright_spanset_spanset(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_right_bigint_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = right_bigint_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_right_float_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = right_float_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_right_int_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = right_int_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_right_spanset_bigint(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int64_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = right_spanset_bigint(s, a2); + free(s); + return r; + }); +} + +static void Gen_right_spanset_float(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, double a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = right_spanset_float(s, a2); + free(s); + return r; + }); +} + +static void Gen_right_spanset_int(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + SpanSet *s = BlobToSpanSet(a); + bool r = right_spanset_int(s, a2); + free(s); + return r; + }); +} + +static void Gen_right_spanset_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = right_spanset_spanset(s1, s2); + free(s1); free(s2); + return r; + }); +} + + +// ===== @ingroup meos_setspan_accessor ===== +static void Gen_bigintset_end_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + int64_t r = bigintset_end_value(s); + free(s); + return r; + }); +} + +static void Gen_bigintset_start_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + int64_t r = bigintset_start_value(s); + free(s); + return r; + }); +} + +static void Gen_dateset_end_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + DateADT r = dateset_end_value(s); + free(s); + return FromMeosDate((int32_t) r); + }); +} + +static void Gen_dateset_start_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + DateADT r = dateset_start_value(s); + free(s); + return FromMeosDate((int32_t) r); + }); +} + +static void Gen_floatset_end_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + double r = floatset_end_value(s); + free(s); + return r; + }); +} + +static void Gen_floatset_start_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + double r = floatset_start_value(s); + free(s); + return r; + }); +} + +static void Gen_intset_end_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + int32_t r = intset_end_value(s); + free(s); + return r; + }); +} + +static void Gen_intset_start_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + int32_t r = intset_start_value(s); + free(s); + return r; + }); +} + +static void Gen_set_num_values(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + int32_t r = set_num_values(s); + free(s); + return r; + }); +} + +static void Gen_textset_end_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { Set *s = BlobToSet(in); text * r = textset_end_value(s); @@ -1564,204 +2740,395 @@ static void Gen_tstzspanset_start_timestamptz(DataChunk &args, ExpressionState & }); } -static void Gen_tstzspanset_upper(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tstzspanset_upper(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + SpanSet *s = BlobToSpanSet(in); + TimestampTz r = tstzspanset_upper(s); + free(s); + return TakeTimestamp(r); + }); +} + + +// ===== @ingroup meos_json_json ===== +static void Gen_concat_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = concat_tjsonb_tjsonb(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_contains_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = contains_tjsonb_tjsonb(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_array_element(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + nullHandleType c2 = (nullHandleType) 0; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = null_handle_type_from_string(v.ToString().c_str()); } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_array_element(t, a2, false, c2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_array_length(DataChunk &args, ExpressionState &, 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); + Temporal *r = tjsonb_array_length(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_delete(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + text *a2t = MakeText(a2); + Temporal *r = tjsonb_delete(t, a2t); + free(a2t); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_delete_array(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Temporal *r = tjsonb_delete_array(t, elems, n); + free(t); FreeTextArr(elems, n); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_delete_index(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_delete_index(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_delete_path(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Temporal *r = tjsonb_delete_path(t, elems, n); + free(t); FreeTextArr(elems, n); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_exists(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + text *a2t = MakeText(a2); + Temporal *r = tjsonb_exists(t, a2t); + free(a2t); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_exists_all(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Temporal *r = tjsonb_exists_all(t, elems, n); + free(t); FreeTextArr(elems, n); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_exists_any(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Temporal *r = tjsonb_exists_any(t, elems, n); + free(t); FreeTextArr(elems, n); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_extract_path(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + nullHandleType c2 = (nullHandleType) 0; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = null_handle_type_from_string(v.ToString().c_str()); } + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Temporal *r = tjsonb_extract_path(t, elems, n, false, c2); + free(t); FreeTextArr(elems, n); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tjsonb_insert(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + Jsonb *c2 = NULL; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } + bool c3 = (bool) 0; + { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Temporal *r = tjsonb_insert(t, elems, n, c2, c3); + free(t); FreeTextArr(elems, n); + return TemporalToBlobN(result, r, mask, idx); + }); + free(c2); +} + +static void Gen_tjsonb_object_field(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - SpanSet *s = BlobToSpanSet(in); - TimestampTz r = tstzspanset_upper(s); - free(s); - return TakeTimestamp(r); + auto rc = args.size(); + nullHandleType c2 = (nullHandleType) 0; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = null_handle_type_from_string(v.ToString().c_str()); } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + auto p2 = MakeText(a2); + Temporal *r = tjsonb_object_field(t, p2, false, c2); + free(t); free(p2); + return TemporalToBlobN(result, r, mask, idx); }); } +static void Gen_tjsonb_path_exists(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + Jsonb *c2 = NULL; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } + bool c3 = (bool) 0; + { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + auto p2 = BlobToJsonpath(a2); + Temporal *r = tjsonb_path_exists(t, p2, c2, c3, false); + free(t); free(p2); + return TemporalToBlobN(result, r, mask, idx); + }); + free(c2); +} -// ===== @ingroup meos_geo_comp_ever ===== -static void Gen_always_eq_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_path_match(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) -> bool { - 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; - } - int r = always_eq_geo_tgeo(gs, t); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + auto rc = args.size(); + Jsonb *c2 = NULL; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } + bool c3 = (bool) 0; + { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + auto p2 = BlobToJsonpath(a2); + Temporal *r = tjsonb_path_match(t, p2, c2, c3, false); + free(t); free(p2); + return TemporalToBlobN(result, r, mask, idx); }); + free(c2); } -static void Gen_always_eq_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_path_query_array(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = always_eq_tgeo_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + auto rc = args.size(); + Jsonb *c2 = NULL; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } + bool c3 = (bool) 0; + { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + auto p2 = BlobToJsonpath(a2); + Temporal *r = tjsonb_path_query_array(t, p2, c2, c3, false); + free(t); free(p2); + return TemporalToBlobN(result, r, mask, idx); }); + free(c2); } -static void Gen_always_eq_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_path_query_first(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_tgeo_tgeo(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + auto rc = args.size(); + Jsonb *c2 = NULL; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } + bool c3 = (bool) 0; + { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + auto p2 = BlobToJsonpath(a2); + Temporal *r = tjsonb_path_query_first(t, p2, c2, c3, false); + free(t); free(p2); + return TemporalToBlobN(result, r, mask, idx); }); + free(c2); } -static void Gen_always_ne_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_pretty(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) -> bool { - 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; - } - int r = always_ne_geo_tgeo(gs, t); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_pretty(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_always_ne_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_strip_nulls(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = always_ne_tgeo_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_strip_nulls(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_always_ne_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_strip_nulls_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_tgeo_tgeo(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_strip_nulls(t, false); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_eq_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_to_tbool(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) -> bool { - 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; - } - int r = ever_eq_geo_tgeo(gs, t); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, string_t a2, string_t a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_to_tbool(t, a2.GetString().c_str(), null_handle_type_from_string(a3.GetString().c_str())); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_eq_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_to_tbool_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = ever_eq_tgeo_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_to_tbool(t, a2.GetString().c_str(), null_handle_type_from_string(string_t("raise_exception").GetString().c_str())); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_eq_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_to_tint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_tgeo_tgeo(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, string_t a2, string_t a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_to_tint(t, a2.GetString().c_str(), null_handle_type_from_string(a3.GetString().c_str())); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_ne_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_to_tint_d(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) -> bool { - 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; - } - int r = ever_ne_geo_tgeo(gs, t); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_to_tint(t, a2.GetString().c_str(), null_handle_type_from_string(string_t("raise_exception").GetString().c_str())); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_ne_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_to_ttext_key(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = ever_ne_tgeo_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, string_t a2, string_t a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_to_ttext_key(t, a2.GetString().c_str(), null_handle_type_from_string(a3.GetString().c_str())); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_ne_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_to_ttext_key_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_tgeo_tgeo(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_to_ttext_key(t, a2.GetString().c_str(), null_handle_type_from_string(string_t("raise_exception").GetString().c_str())); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } @@ -2006,376 +3373,599 @@ static void Gen_tstzspanset_out(DataChunk &args, ExpressionState &, Vector &resu } -// ===== @ingroup meos_temporal_conversion ===== -static void Gen_tbool_to_tint(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_constructor ===== +static void Gen_tsequence_make(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &arr = args.data[0]; arr.Flatten(rc); + auto &child = ListVector::GetEntry(arr); + child.Flatten(ListVector::GetListSize(arr)); + MeosType temptype = TemporalHelpers::GetTemptypeFromAlias(result.GetType().GetAlias().c_str()); + interpType interp = temptype_supports_linear(temptype) ? LINEAR : STEP; + bool lower_inc = true, upper_inc = true; + if (args.ColumnCount() > 1) { auto &c = args.data[1]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) interp = interptype_from_string(v.ToString().c_str()); } + if (args.ColumnCount() > 2) { auto &c = args.data[2]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) lower_inc = v.GetValue(); } + if (args.ColumnCount() > 3) { auto &c = args.data[3]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) upper_inc = v.GetValue(); } + UnaryExecutor::ExecuteWithNulls(arr, result, rc, + [&](list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + int n = 0; + const Temporal **a = ListToTemporalArr(child, le, &n); + TSequence *seq = tsequence_make((TInstant **) a, n, lower_inc, upper_inc, interp, true); + string_t out = TemporalToBlobN(result, (Temporal *) seq, mask, idx); + FreeTemporalArr(a, n); + return out; + }); +} + +static void Gen_tsequenceset_make(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &arr = args.data[0]; arr.Flatten(rc); + auto &child = ListVector::GetEntry(arr); + child.Flatten(ListVector::GetListSize(arr)); + UnaryExecutor::ExecuteWithNulls(arr, result, rc, + [&](list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + int n = 0; + const Temporal **a = ListToTemporalArr(child, le, &n); + TSequenceSet *ss = tsequenceset_make((TSequence **) a, n, true); + string_t out = TemporalToBlobN(result, (Temporal *) ss, mask, idx); + FreeTemporalArr(a, n); + return out; + }); +} + +static void Gen_tsequenceset_make_gaps(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &arr = args.data[0]; arr.Flatten(rc); + auto &child = ListVector::GetEntry(arr); + child.Flatten(ListVector::GetListSize(arr)); + MeosType temptype = TemporalHelpers::GetTemptypeFromAlias(result.GetType().GetAlias().c_str()); + interpType interp = temptype_supports_linear(temptype) ? LINEAR : STEP; + MeosInterval maxt_val; bool has_maxt = false; double maxdist = -1.0; + if (args.ColumnCount() > 1) { auto &c = args.data[1]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) { maxt_val = IntervaltToInterval(v.GetValue()); has_maxt = true; } } + if (args.ColumnCount() > 2) { auto &c = args.data[2]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) maxdist = v.GetValue(); } + if (args.ColumnCount() > 3) { auto &c = args.data[3]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) interp = interptype_from_string(v.ToString().c_str()); } + const MeosInterval *maxt = has_maxt ? &maxt_val : NULL; + UnaryExecutor::ExecuteWithNulls(arr, result, rc, + [&](list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + int n = 0; + const Temporal **a = ListToTemporalArr(child, le, &n); + TSequenceSet *ss = tsequenceset_make_gaps((TInstant **) a, n, interp, maxt, maxdist); + string_t out = TemporalToBlobN(result, (Temporal *) ss, mask, idx); + FreeTemporalArr(a, n); + return out; + }); +} + + +// ===== @ingroup meos_rgeo_accessor ===== +static void Gen_trgeometry_end_instant(DataChunk &args, ExpressionState &, 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); + Temporal *r = (Temporal *) trgeometry_end_instant(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_trgeometry_end_sequence(DataChunk &args, ExpressionState &, 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); + Temporal *r = (Temporal *) trgeometry_end_sequence(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_trgeometry_end_value(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_end_value(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; + }); +} + +static void Gen_trgeometry_instant_n(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = (Temporal *) trgeometry_instant_n(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_trgeometry_yaw(DataChunk &args, ExpressionState &, 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); + Temporal *r = trgeometry_yaw(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_trgeometry_pitch(DataChunk &args, ExpressionState &, 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); + Temporal *r = trgeometry_pitch(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_trgeometry_roll(DataChunk &args, ExpressionState &, 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); + Temporal *r = trgeometry_roll(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_trgeometry_sequence_n(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = (Temporal *) trgeometry_sequence_n(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_trgeometry_start_instant(DataChunk &args, ExpressionState &, 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); - Temporal *r = tbool_to_tint(t); + Temporal *r = (Temporal *) trgeometry_start_instant(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tfloat_to_tint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_start_sequence(DataChunk &args, ExpressionState &, 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); - Temporal *r = tfloat_to_tint(t); + Temporal *r = (Temporal *) trgeometry_start_sequence(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tfloat_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_start_value(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_start_value(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; + }); +} + +static void Gen_trgeometry_centroid(DataChunk &args, ExpressionState &, 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); - Temporal *r = tfloat_to_tbigint(t); + Temporal *r = trgeometry_centroid(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tint_to_tfloat(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_convex_hull(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_convex_hull(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; + }); +} + +static void Gen_trgeometry_length(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Temporal *t = BlobToTemporal(in); + double r = trgeometry_length(t); + free(t); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return (double) r; + }); +} + +static void Gen_trgeometry_cumulative_length(DataChunk &args, ExpressionState &, 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); - Temporal *r = tint_to_tfloat(t); + Temporal *r = trgeometry_cumulative_length(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tint_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_angular_speed(DataChunk &args, ExpressionState &, 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); - Temporal *r = tint_to_tbigint(t); + Temporal *r = trgeometry_angular_speed(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tbigint_to_tint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_speed(DataChunk &args, ExpressionState &, 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); - Temporal *r = tbigint_to_tint(t); + Temporal *r = trgeometry_speed(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tbigint_to_tfloat(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_twcentroid(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_twcentroid(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; + }); +} + + +// ===== @ingroup meos_json_set_json ===== +static void Gen_jsonbset_delete_array(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Set *t = BlobToSet(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Set *r = jsonbset_delete_array(t, elems, n); + free(t); FreeTextArr(elems, n); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_jsonbset_delete_path(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Set *t = BlobToSet(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Set *r = jsonbset_delete_path(t, elems, n); + free(t); FreeTextArr(elems, n); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_jsonbset_extract_path(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + nullHandleType c2 = (nullHandleType) 0; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = null_handle_type_from_string(v.ToString().c_str()); } + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Set *t = BlobToSet(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Set *r = jsonbset_extract_path(t, elems, n, false, c2); + free(t); FreeTextArr(elems, n); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_jsonbset_insert(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto rc = args.size(); + auto &lst = args.data[1]; lst.Flatten(rc); + auto &child = ListVector::GetEntry(lst); + child.Flatten(ListVector::GetListSize(lst)); + Jsonb *c2 = NULL; + { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } + bool c3 = (bool) 0; + { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } + BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, + [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { + Set *t = BlobToSet(in); + int n = 0; + text **elems = ListToTextArr(child, le, &n); + Set *r = jsonbset_insert(t, elems, n, c2, c3); + free(t); FreeTextArr(elems, n); + return SetToBlobN(result, r, mask, idx); + }); + free(c2); +} + +static void Gen_jsonbset_array_length(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_array_length(s); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_jsonbset_delete_index(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = jsonbset_delete_index(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_jsonbset_delete(DataChunk &args, ExpressionState &, 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); - Temporal *r = tbigint_to_tfloat(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + text *t2 = MakeText(a2); + Set *r = jsonbset_delete(s, t2); + free(t2); free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_temporal_to_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_jsonbset_strip_nulls(DataChunk &args, ExpressionState &, 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); - Span *r = temporal_to_tstzspan(t); - free(t); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, bool a2) { + Set *s = BlobToSet(a); + Set *r = jsonbset_strip_nulls(s, a2); + free(s); + return SetToBlob(result, r); }); } -static void Gen_tnumber_to_span(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_jsonbset_strip_nulls_d(DataChunk &args, ExpressionState &, 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); - Span *r = tnumber_to_span(t); - free(t); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Set *s = BlobToSet(a); + Set *r = jsonbset_strip_nulls(s, false); + free(s); + return SetToBlob(result, r); }); } -static void Gen_tnumber_to_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_jsonbset_pretty(DataChunk &args, ExpressionState &, 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); - TBox *r = tnumber_to_tbox(t); - free(t); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return TboxToBlob(result, r); + Set *s = BlobToSet(in); + Set *r = jsonbset_pretty(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_geo_dist ===== -static void Gen_tdistance_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_comp_ever ===== +static void Gen_always_eq_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tdistance_tgeo_geo(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + int32_t r = always_eq_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tdistance_tgeo_geo_rev(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tcbuffer_tcbuffer(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 = tdistance_tgeo_geo(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_eq_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tdistance_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tdistance_tgeo_tgeo(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + int32_t r = always_ne_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_nad_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> double { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - double r = nad_tgeo_tgeo(t1, t2); + int32_t r = always_ne_tcbuffer_tcbuffer(t1, t2); free(t1); free(t2); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return (double) r; + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_mindistance_tgeoarr_tgeoarr(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &lv1 = args.data[0]; auto &lv2 = args.data[1]; - auto &child1 = ListVector::GetEntry(lv1); child1.Flatten(ListVector::GetListSize(lv1)); - auto &child2 = ListVector::GetEntry(lv2); child2.Flatten(ListVector::GetListSize(lv2)); - BinaryExecutor::ExecuteWithNulls( - lv1, lv2, result, args.size(), - [&](list_entry_t le1, list_entry_t le2, ValidityMask &mask, idx_t idx) -> double { - int n1, n2; - const Temporal **a1 = ListToTemporalArr(child1, le1, &n1); - const Temporal **a2 = ListToTemporalArr(child2, le2, &n2); - double r = mindistance_tgeoarr_tgeoarr(a1, n1, a2, n2); - FreeTemporalArr(a1, n1); FreeTemporalArr(a2, n2); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + int32_t r = ever_eq_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_nad_tgeo_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { - Temporal *t = BlobToTemporal(a); - STBox *bx = BlobToStbox(b); - double r = nad_tgeo_stbox(t, bx); - free(t); free(bx); - if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } - return (double) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_eq_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } - -// ===== @ingroup meos_geo_bbox_split ===== -static void Gen_tgeo_stboxes(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - STBox * arr = tgeo_stboxes(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - -static void Gen_tgeo_split_each_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - STBox * arr = tgeo_split_each_n_stboxes(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + int32_t r = ever_ne_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); } -static void Gen_tgeo_split_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - STBox * arr = tgeo_split_n_stboxes(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_ne_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); } -// ===== @ingroup meos_quadbin_accessor ===== -static void Gen_quadbin_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_accessor ===== +static void Gen_s2cell_edge_neighbors_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = quadbin_grid_disk(static_cast(a0), a1); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = s2cell_edge_neighbors_set(static_cast(a0)); return SetToBlobN(result, r, mask, idx); }); } -static void Gen_quadbin_cell_to_children_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_cell_to_children_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = quadbin_cell_to_children_set(static_cast(a0), a1); + Set * r = s2cell_cell_to_children_set(static_cast(a0), a1); return SetToBlobN(result, r, mask, idx); }); } -static void Gen_quadbin_cell_to_cover(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_cell_to_cover(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = quadbin_cell_to_cover(static_cast(a0), a1); + Set * r = s2cell_cell_to_cover(static_cast(a0), a1); return SetToBlobN(result, r, mask, idx); }); } -static void Gen_tquadbin_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ts2cell_start_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) -> int64_t { Temporal *t = BlobToTemporal(in); - int64_t r = (int64_t) tquadbin_start_value(t); + int64_t r = (int64_t) ts2cell_start_value(t); free(t); return r; }); } -static void Gen_tquadbin_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ts2cell_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) -> int64_t { Temporal *t = BlobToTemporal(in); - int64_t r = (int64_t) tquadbin_end_value(t); + int64_t r = (int64_t) ts2cell_end_value(t); free(t); return r; }); } -static void Gen_tquadbin_value_n(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ts2cell_value_n(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> int64_t { Temporal *t = BlobToTemporal(in); uint64_t v; - bool ok = tquadbin_value_n(t, a2, &v); + bool ok = ts2cell_value_n(t, a2, &v); free(t); if (!ok) { mask.SetInvalid(idx); return int64_t(); } return (int64_t) v; }); } -static void Gen_tquadbin_values(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ts2cell_values(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); auto &in_vec = args.data[0]; idx_t row_count = args.size(); @@ -2388,7 +3978,7 @@ static void Gen_tquadbin_values(DataChunk &args, ExpressionState &, Vector &resu string_t blob = FlatVector::GetData(in_vec)[i]; Temporal *in = BlobToTemporal(blob); int count = 0; - uint64_t * arr = tquadbin_values(in, &count); + uint64_t * arr = ts2cell_values(in, &count); free(in); int n = (arr && count > 0) ? count : 0; ListVector::Reserve(result, off + n); @@ -2406,190 +3996,82 @@ static void Gen_tquadbin_values(DataChunk &args, ExpressionState &, Vector &resu } } -static void Gen_quadbinset_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = quadbinset_grid_disk(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_quadbinset_compact_cells(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cellset_compact_cells(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 = quadbinset_compact_cells(s); + Set *r = s2cellset_compact_cells(s); free(s); return SetToBlobN(result, r, mask, idx); }); } -static void Gen_quadbinset_uncompact_cells(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cellset_uncompact_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Set *s = BlobToSet(a); - Set *r = quadbinset_uncompact_cells(s, a2); + Set *r = s2cellset_uncompact_cells(s, a2); free(s); return SetToBlobN(result, r, mask, idx); }); } -static void Gen_quadbinset_cover_cells(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cellset_cover_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Set *s = BlobToSet(a); - Set *r = quadbinset_cover_cells(s, a2); + Set *r = s2cellset_cover_cells(s, a2); free(s); return SetToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_pose_base_comp ===== -static void Gen_pose_hash(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Pose *v = BlobToPose(in); - uint32_t r = pose_hash(v); - free(v); - return r; - }); -} - -static void Gen_pose_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - Pose *s = BlobToPose(in); - uint64_t r = pose_hash_extended(s, a2); - free(s); - return r; - }); -} - -static void Gen_pose_eq(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_eq(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_pose_ge(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_ge(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_pose_gt(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_gt(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_pose_le(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_le(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_pose_lt(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_lt(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_pose_ne(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_ne(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_pose_same(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_same(s1, s2); - free(s1); free(s2); - return r; + +// ===== @ingroup meos_geo_set_inout ===== +static void Gen_spatialset_as_text(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Set *s = BlobToSet(a); + char *r = spatialset_as_text(s, a2); + free(s); + return TakeCString(result, r); }); } - -// ===== @ingroup meos_geo_srid ===== -static void Gen_tspatial_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - int32_t r = tspatial_srid(t); - free(t); - return (int32_t) r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Set *s = BlobToSet(a); + char *r = spatialset_as_text(s, 15); + free(s); + return TakeCString(result, r); }); } -static void Gen_tspatial_set_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tspatial_set_srid(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Set *s = BlobToSet(a); + char *r = spatialset_as_ewkt(s, a2); + free(s); + return TakeCString(result, r); }); } -static void Gen_tspatial_transform(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tspatial_transform(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Set *s = BlobToSet(a); + char *r = spatialset_as_ewkt(s, 15); + free(s); + return TakeCString(result, r); }); } @@ -2677,345 +4159,317 @@ static void Gen_s2cell_hash_extended(DataChunk &args, ExpressionState &, Vector } -// ===== @ingroup meos_temporal_text ===== -static void Gen_textcat_text_ttext(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_latlng ===== +static void Gen_tgeogpoint_to_th3index(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - text *a1t = MakeText(a1); - Temporal *r = textcat_text_ttext(a1t, t); - free(a1t); free(t); + Temporal *r = tgeogpoint_to_th3index(t, a2, a3); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_textcat_ttext_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_to_th3index_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - text *a2t = MakeText(a2); - Temporal *r = textcat_ttext_text(t, a2t); - free(a2t); free(t); + Temporal *r = tgeogpoint_to_th3index(t, a2, true); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_textcat_ttext_ttext(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeompoint_to_th3index(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = textcat_ttext_ttext(t1, t2); - free(t1); free(t2); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeompoint_to_th3index(t, a2, a3); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttext_initcap(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeompoint_to_th3index_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = ttext_initcap(t); + Temporal *r = tgeompoint_to_th3index(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttext_upper(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_to_tgeogpoint(DataChunk &args, ExpressionState &, 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); - Temporal *r = ttext_upper(t); + Temporal *r = th3index_to_tgeogpoint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttext_lower(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_to_tgeompoint(DataChunk &args, ExpressionState &, 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); - Temporal *r = ttext_lower(t); + Temporal *r = th3index_to_tgeompoint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_cbuffer_restrict ===== -static void Gen_tcbuffer_at_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tcbuffer_at_cbuffer(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tcbuffer_at_geom(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tcbuffer_at_geom(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tcbuffer_minus_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_transf ===== +static void Gen_tgeo_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tcbuffer_minus_cbuffer(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tcbuffer_minus_geom(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tcbuffer_minus_geom(t, gs); - free(t); free(gs); + Temporal *r = tgeo_rotate_x(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_pointcloud_comp_temp ===== -static void Gen_teq_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeo_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - Temporal *r = teq_tpcpoint_pcpoint(t, a2p); - free(a2p); free(t); + Temporal *r = tgeo_rotate_y(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeo_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - Temporal *r = tne_tpcpoint_pcpoint(t, a2p); - free(a2p); free(t); + Temporal *r = tgeo_rotate_z(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - Temporal *r = teq_tpcpatch_pcpatch(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} -static void Gen_tne_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_accessor ===== +static void Gen_th3index_start_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) -> int64_t { Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - Temporal *r = tne_tpcpatch_pcpatch(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + int64_t r = (int64_t) th3index_start_value(t); + free(t); + return r; }); } - -// ===== @ingroup meos_cbuffer_conversion ===== -static void Gen_tcbuffer_to_tfloat(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) -> int64_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tcbuffer_to_tfloat(t); + int64_t r = (int64_t) th3index_end_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return r; }); } -static void Gen_tcbuffer_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_value_n(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> int64_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tcbuffer_to_tgeompoint(t); + uint64_t v; + bool ok = th3index_value_n(t, a2, &v); free(t); - return TemporalToBlobN(result, r, mask, idx); + if (!ok) { mask.SetInvalid(idx); return int64_t(); } + return (int64_t) v; }); } -static void Gen_tgeometry_to_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_values(DataChunk &args, ExpressionState &, 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); - Temporal *r = tgeometry_to_tcbuffer(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + uint64_t * arr = th3index_values(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -// ===== @ingroup meos_pose_base_inout ===== -static void Gen_pose_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_base_inout ===== +static void Gen_cbuffer_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - Pose *s = BlobToPose(a); - char *r = pose_as_ewkt(s, a2); + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_as_ewkt(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_pose_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - Pose *s = BlobToPose(a); - char *r = pose_as_ewkt(s, 15); + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_as_ewkt(s, 15); free(s); return TakeCString(result, r); }); } -static void Gen_pose_as_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_as_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - Pose *s = BlobToPose(a); - char *r = pose_as_text(s, a2); + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_as_text(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_pose_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - Pose *s = BlobToPose(a); - char *r = pose_as_text(s, 15); + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_as_text(s, 15); free(s); return TakeCString(result, r); }); } -// ===== @ingroup meos_npoint_restrict ===== -static void Gen_tnpoint_at_npointset(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_accessor ===== +static void Gen_tcbuffer_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Set *cc = BlobToSet(b); - Temporal *r = tnpoint_at_npointset(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer * r = tcbuffer_end_value(t); + free(t); + return CbufferToBlobN(result, r, mask, idx); }); } -static void Gen_tnpoint_minus_npointset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_convex_hull(DataChunk &args, ExpressionState &state, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Set *cc = BlobToSet(b); - Temporal *r = tnpoint_minus_npointset(t, cc); - free(t); free(cc); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + GSERIALIZED * r = tcbuffer_convex_hull(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; + }); +} + +static void Gen_tcbuffer_start_value(DataChunk &args, ExpressionState &, 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); + Cbuffer * r = tcbuffer_start_value(t); + free(t); + return CbufferToBlobN(result, r, mask, idx); + }); +} + + +// ===== @ingroup meos_internal_temporal_inout ===== +static void Gen_temporal_from_mfjson(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + MeosType temptype = TemporalHelpers::GetTemptypeFromAlias(result.GetType().GetAlias().c_str()); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *r = temporal_from_mfjson(in.GetString().c_str(), temptype); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_quadbin_set_accessor ===== -static void Gen_quadbinset_values(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_json_conversion ===== +static void Gen_tjsonb_to_ttext(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Set *in = BlobToSet(blob); - int count = 0; - uint64_t * arr = quadbinset_values(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tjsonb_to_ttext(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_ttext_to_tjsonb(DataChunk &args, ExpressionState &, 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); + Temporal *r = ttext_to_tjsonb(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); } -// ===== @ingroup meos_posechain_inout ===== -static void Gen_tposechain_as_geopose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_conversion ===== +static void Gen_tpcpoint_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tposechain_as_geopose(t, a2); + Temporal *r = tpcpoint_to_tgeompoint(t); free(t); - return TakeCString(result, r); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tposechain_as_geopose_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tposechain_as_geopose(t, -1); + Temporal *r = tpcpatch_to_tgeometry(t); free(t); - return TakeCString(result, r); + return TemporalToBlobN(result, r, mask, idx); }); } @@ -3035,580 +4489,353 @@ static void Gen_intersection_tbox_tbox(DataChunk &args, ExpressionState &, Vecto } -// ===== @ingroup meos_h3_base_inout ===== -static void Gen_h3index_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_base_accessor ===== +static void Gen_cbuffer_radius(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a0) -> int64_t { - uint64_t r = h3index_from_hexwkb(a0.GetString().c_str()); - return static_cast(r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Cbuffer *v = BlobToCbuffer(in); + double r = cbuffer_radius(v); + free(v); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return r; }); } -// ===== @ingroup meos_h3_base_metrics ===== -static void Gen_h3index_cell_area(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_inout ===== +static void Gen_th3index_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> double { - double r = h3index_cell_area(static_cast(a0)); - return (double) r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = th3index_out(t); + free(t); + return TakeCString(result, r); }); } } // anonymous -void RegisterGenerated_meos_temporal_bbox_topo(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contained_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contained_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contained_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contained_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contains_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contains_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contains_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contains_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_same_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_same_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_same_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_same_temporal_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tbox_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tnumber_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); +void RegisterGenerated_meos_setspan_pos(ExtensionLoader &loader) { + for (auto &type : SetTypes::AllTypes()) { + RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {type, type}, LogicalType::BOOLEAN, Gen_left_set_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {type, type}, LogicalType::BOOLEAN, Gen_left_set_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {type, type}, LogicalType::BOOLEAN, Gen_overleft_set_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {type, type}, LogicalType::BOOLEAN, Gen_overleft_set_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {type, type}, LogicalType::BOOLEAN, Gen_overright_set_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {type, type}, LogicalType::BOOLEAN, Gen_overright_set_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {type, type}, LogicalType::BOOLEAN, Gen_right_set_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {type, type}, LogicalType::BOOLEAN, Gen_right_set_set)); + } + RegisterSerializedScalarFunction(loader, ScalarFunction("setAfter", {LogicalType::DATE, SetTypes::dateset()}, LogicalType::BOOLEAN, Gen_after_date_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setAfter", {SetTypes::dateset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_after_set_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setAfter", {SetTypes::tstzset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_after_set_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setAfter", {LogicalType::TIMESTAMP_TZ, SetTypes::tstzset()}, LogicalType::BOOLEAN, Gen_after_timestamptz_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setBefore", {LogicalType::DATE, SetTypes::dateset()}, LogicalType::BOOLEAN, Gen_before_date_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setBefore", {SetTypes::dateset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_before_set_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setBefore", {SetTypes::tstzset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_before_set_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setBefore", {LogicalType::TIMESTAMP_TZ, SetTypes::tstzset()}, LogicalType::BOOLEAN, Gen_before_timestamptz_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_left_bigint_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_left_bigint_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_left_float_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_left_float_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_left_int_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_left_int_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_set_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_set_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_set_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_set_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_set_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_set_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_left_set_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_left_set_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_left_text_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_left_text_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverafter", {LogicalType::DATE, SetTypes::dateset()}, LogicalType::BOOLEAN, Gen_overafter_date_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverafter", {SetTypes::dateset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overafter_set_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverafter", {SetTypes::tstzset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overafter_set_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverafter", {LogicalType::TIMESTAMP_TZ, SetTypes::tstzset()}, LogicalType::BOOLEAN, Gen_overafter_timestamptz_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverbefore", {LogicalType::DATE, SetTypes::dateset()}, LogicalType::BOOLEAN, Gen_overbefore_date_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverbefore", {SetTypes::dateset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overbefore_set_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverbefore", {SetTypes::tstzset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overbefore_set_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverbefore", {LogicalType::TIMESTAMP_TZ, SetTypes::tstzset()}, LogicalType::BOOLEAN, Gen_overbefore_timestamptz_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_overleft_bigint_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_overleft_bigint_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_overleft_float_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_overleft_float_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_overleft_int_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_overleft_int_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_set_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_set_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_set_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_set_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_set_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_set_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_overleft_set_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_overleft_set_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_overleft_text_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_overleft_text_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_overright_bigint_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_overright_bigint_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_overright_float_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_overright_float_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_overright_int_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_overright_int_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_set_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_set_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_set_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_set_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_set_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_set_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_overright_set_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_overright_set_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_overright_text_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_overright_text_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_right_bigint_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_right_bigint_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_right_float_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_right_float_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_right_int_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_right_int_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_set_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_set_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_set_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_set_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_set_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_set_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_right_set_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_right_set_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_right_text_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_right_text_set)); + for (auto &type : SpanTypes::AllTypes()) { + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {type, type}, LogicalType::BOOLEAN, Gen_left_span_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {type, type}, LogicalType::BOOLEAN, Gen_left_span_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {type, type}, LogicalType::BOOLEAN, Gen_overleft_span_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {type, type}, LogicalType::BOOLEAN, Gen_overleft_span_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {type, type}, LogicalType::BOOLEAN, Gen_overright_span_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {type, type}, LogicalType::BOOLEAN, Gen_overright_span_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {type, type}, LogicalType::BOOLEAN, Gen_right_span_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {type, type}, LogicalType::BOOLEAN, Gen_right_span_span)); + } + RegisterSerializedScalarFunction(loader, ScalarFunction("spanAfter", {LogicalType::DATE, SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_after_date_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanAfter", {SpanTypes::datespan(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_after_span_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanAfter", {SpanTypes::tstzspan(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_after_span_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanAfter", {LogicalType::TIMESTAMP_TZ, SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_after_timestamptz_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanBefore", {LogicalType::DATE, SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_before_date_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanBefore", {SpanTypes::datespan(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_before_span_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanBefore", {SpanTypes::tstzspan(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_before_span_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanBefore", {LogicalType::TIMESTAMP_TZ, SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_before_timestamptz_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_bigint_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_bigint_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_float_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_float_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_int_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_int_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_span_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_span_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_span_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_span_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_span_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_span_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::datespan(), SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::datespan(), SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::tstzspan(), SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::tstzspan(), SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::datespanset(), SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::datespanset(), SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverafter", {LogicalType::DATE, SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_overafter_date_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverafter", {SpanTypes::datespan(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overafter_span_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverafter", {SpanTypes::tstzspan(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overafter_span_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverafter", {LogicalType::TIMESTAMP_TZ, SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overafter_timestamptz_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverbefore", {LogicalType::DATE, SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_overbefore_date_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverbefore", {SpanTypes::datespan(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overbefore_span_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverbefore", {SpanTypes::tstzspan(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overbefore_span_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverbefore", {LogicalType::TIMESTAMP_TZ, SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overbefore_timestamptz_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_bigint_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_bigint_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_float_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_float_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_int_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_int_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_span_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_span_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_span_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_span_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_span_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_span_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::datespan(), SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::datespan(), SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::tstzspan(), SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::tstzspan(), SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::datespanset(), SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::datespanset(), SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_bigint_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_bigint_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_float_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_float_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_int_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_int_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_span_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_span_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_span_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_span_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_span_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_span_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::datespan(), SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::datespan(), SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::tstzspan(), SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::tstzspan(), SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::datespanset(), SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::datespanset(), SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_bigint_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_bigint_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_float_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_float_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_int_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_int_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_span_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_span_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_span_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_span_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_span_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_span_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::datespan(), SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::datespan(), SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::tstzspan(), SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::tstzspan(), SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::datespanset(), SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::datespanset(), SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetAfter", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_after_date_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetAfter", {SpansetTypes::datespanset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_after_spanset_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetAfter", {SpansetTypes::tstzspanset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_after_spanset_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetAfter", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_after_timestamptz_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetBefore", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_before_date_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetBefore", {SpansetTypes::datespanset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_before_spanset_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetBefore", {SpansetTypes::tstzspanset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_before_spanset_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetBefore", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_before_timestamptz_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_left_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_left_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_left_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_left_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_left_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_left_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_spanset_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_spanset_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_spanset_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_spanset_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_spanset_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_spanset_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverafter", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_overafter_date_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverafter", {SpansetTypes::datespanset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overafter_spanset_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverafter", {SpansetTypes::tstzspanset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overafter_spanset_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverafter", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_overafter_timestamptz_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverbefore", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_overbefore_date_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverbefore", {SpansetTypes::datespanset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overbefore_spanset_date)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverbefore", {SpansetTypes::tstzspanset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overbefore_spanset_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverbefore", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_overbefore_timestamptz_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overleft_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overleft_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overleft_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overleft_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overleft_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overleft_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_spanset_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_spanset_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_spanset_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_spanset_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_spanset_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_spanset_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overright_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overright_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overright_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overright_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overright_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overright_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_spanset_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_spanset_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_spanset_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_spanset_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_spanset_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_spanset_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_right_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_right_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_right_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_right_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_right_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_right_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_spanset_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_spanset_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_spanset_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_spanset_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_spanset_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_spanset_int)); + for (auto &type : SpansetTypes::AllTypes()) { + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {type, type}, LogicalType::BOOLEAN, Gen_left_spanset_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {type, type}, LogicalType::BOOLEAN, Gen_left_spanset_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {type, type}, LogicalType::BOOLEAN, Gen_overleft_spanset_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {type, type}, LogicalType::BOOLEAN, Gen_overleft_spanset_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {type, type}, LogicalType::BOOLEAN, Gen_overright_spanset_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {type, type}, LogicalType::BOOLEAN, Gen_overright_spanset_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {type, type}, LogicalType::BOOLEAN, Gen_right_spanset_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {type, type}, LogicalType::BOOLEAN, Gen_right_spanset_spanset)); + } } void RegisterGenerated_meos_setspan_accessor(ExtensionLoader &loader) { @@ -3677,103 +4904,43 @@ void RegisterGenerated_meos_setspan_accessor(ExtensionLoader &loader) { } } -void RegisterGenerated_meos_geo_comp_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); +void RegisterGenerated_meos_json_json(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TJsonbTypes::tjsonb(), Gen_concat_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TJsonbTypes::tjsonb(), Gen_concat_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbContains", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TemporalTypes::tbool(), Gen_contains_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TemporalTypes::tbool(), Gen_contains_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TemporalTypes::tbool(), Gen_contains_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbArrayElement", {TJsonbTypes::tjsonb(), LogicalType::INTEGER, LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_array_element)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbArrayLength", {TJsonbTypes::tjsonb()}, TemporalTypes::tint(), Gen_tjsonb_array_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbDelete", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbDeleteArray", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_array)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_array)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbDeleteIndex", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbDeletePath", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_path)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbExists", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tjsonb_exists)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tjsonb_exists)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbExistsAll", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TemporalTypes::tbool(), Gen_tjsonb_exists_all)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?&", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TemporalTypes::tbool(), Gen_tjsonb_exists_all)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbExistsAny", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TemporalTypes::tbool(), Gen_tjsonb_exists_any)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?|", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TemporalTypes::tbool(), Gen_tjsonb_exists_any)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbExtractPath", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR), LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_extract_path)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbInsert", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_tjsonb_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbObjectField", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR, LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_object_field)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPathExists", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonpath(), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tjsonb_path_exists)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPathMatch", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonpath(), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tjsonb_path_match)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPathQueryArray", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonpath(), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_tjsonb_path_query_array)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPathQueryFirst", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonpath(), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_tjsonb_path_query_first)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPretty", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_pretty)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbStripNulls", {TJsonbTypes::tjsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_tjsonb_strip_nulls)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbStripNulls", {TJsonbTypes::tjsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_strip_nulls_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbool", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR, LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tjsonb_to_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbool", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tjsonb_to_tbool_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR, LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_tjsonb_to_tint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_tjsonb_to_tint_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttext", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR, LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext_key)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttext", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext_key_d)); } void RegisterGenerated_meos_setspan_inout(ExtensionLoader &loader) { @@ -3831,207 +4998,159 @@ void RegisterGenerated_meos_setspan_inout(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SpansetTypes::tstzspanset()}, LogicalType::VARCHAR, Gen_tstzspanset_out)); } -void RegisterGenerated_meos_temporal_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TemporalTypes::tbool()}, TemporalTypes::tint(), Gen_tbool_to_tint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbool()}, TemporalTypes::tint(), Gen_tbool_to_tint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TemporalTypes::tfloat()}, TemporalTypes::tint(), Gen_tfloat_to_tint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, TemporalTypes::tint(), Gen_tfloat_to_tint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {TemporalTypes::tfloat()}, TemporalTypes::tbigint(), Gen_tfloat_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, TemporalTypes::tbigint(), Gen_tfloat_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloat", {TemporalTypes::tint()}, TemporalTypes::tfloat(), Gen_tint_to_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, TemporalTypes::tfloat(), Gen_tint_to_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {TemporalTypes::tint()}, TemporalTypes::tbigint(), Gen_tint_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, TemporalTypes::tbigint(), Gen_tint_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TemporalTypes::tbigint()}, TemporalTypes::tint(), Gen_tbigint_to_tint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, TemporalTypes::tint(), Gen_tbigint_to_tint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloat", {TemporalTypes::tbigint()}, TemporalTypes::tfloat(), Gen_tbigint_to_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, TemporalTypes::tfloat(), Gen_tbigint_to_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {CbufferTypes::tcbuffer()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TGeometryTypes::tgeometry()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TGeographyTypes::tgeography()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeographyTypes::tgeography()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TgeompointType::tgeompoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeompointType::tgeompoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TgeogpointType::tgeogpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeogpointType::tgeogpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {H3indexTypes::th3index()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::th3index()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TJsonbTypes::tjsonb()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TJsonbTypes::tjsonb()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {NpointTypes::tnpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {NpointTypes::tnpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TPcpointTypes::tpcpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TPcpointTypes::tpcpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TPcpatchTypes::tpcpatch()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TPcpatchTypes::tpcpatch()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {PoseTypes::tpose()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PoseTypes::tpose()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {PosechainTypes::tposechain()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PosechainTypes::tposechain()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {QuadbinTypes::tquadbin()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {QuadbinTypes::tquadbin()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TrgeometryTypes::trgeometry()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TrgeometryTypes::trgeometry()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {S2cellTypes::ts2cell()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {S2cellTypes::ts2cell()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::tbool()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbool()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::tint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::tbigint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::tfloat()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::ttext()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::ttext()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueSpan", {TemporalTypes::tint()}, SpanTypes::intspan(), Gen_tnumber_to_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, SpanTypes::intspan(), Gen_tnumber_to_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueSpan", {TemporalTypes::tbigint()}, SpanTypes::bigintspan(), Gen_tnumber_to_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, SpanTypes::bigintspan(), Gen_tnumber_to_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueSpan", {TemporalTypes::tfloat()}, SpanTypes::floatspan(), Gen_tnumber_to_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, SpanTypes::floatspan(), Gen_tnumber_to_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbox", {TemporalTypes::tint()}, TboxType::tbox(), Gen_tnumber_to_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, TboxType::tbox(), Gen_tnumber_to_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbox", {TemporalTypes::tbigint()}, TboxType::tbox(), Gen_tnumber_to_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, TboxType::tbox(), Gen_tnumber_to_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbox", {TemporalTypes::tfloat()}, TboxType::tbox(), Gen_tnumber_to_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, TboxType::tbox(), Gen_tnumber_to_tbox)); -} - -void RegisterGenerated_meos_geo_dist(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minDistance", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::LIST(TgeompointType::tgeompoint())}, LogicalType::DOUBLE, Gen_mindistance_tgeoarr_tgeoarr)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minDistance", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::LIST(TgeogpointType::tgeogpoint())}, LogicalType::DOUBLE, Gen_mindistance_tgeoarr_tgeoarr)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minDistance", {LogicalType::LIST(TGeometryTypes::tgeometry()), LogicalType::LIST(TGeometryTypes::tgeometry())}, LogicalType::DOUBLE, Gen_mindistance_tgeoarr_tgeoarr)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minDistance", {LogicalType::LIST(TGeographyTypes::tgeography()), LogicalType::LIST(TGeographyTypes::tgeography())}, LogicalType::DOUBLE, Gen_mindistance_tgeoarr_tgeoarr)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TgeompointType::tgeompoint(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TgeompointType::tgeompoint(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TgeogpointType::tgeogpoint(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TgeogpointType::tgeogpoint(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TGeometryTypes::tgeometry(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TGeometryTypes::tgeometry(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TGeographyTypes::tgeography(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TGeographyTypes::tgeography(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); -} - -void RegisterGenerated_meos_geo_bbox_split(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {CbufferTypes::tcbuffer()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TGeometryTypes::tgeometry()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TGeographyTypes::tgeography()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TgeompointType::tgeompoint()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TgeogpointType::tgeogpoint()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {PoseTypes::tpose()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {PosechainTypes::tposechain()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); -} - -void RegisterGenerated_meos_quadbin_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {QuadbinTypes::quadbin(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbin_grid_disk)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToChildren", {QuadbinTypes::quadbin(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbin_cell_to_children_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToCover", {QuadbinTypes::quadbin(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbin_cell_to_cover)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {QuadbinTypes::tquadbin()}, QuadbinTypes::quadbin(), Gen_tquadbin_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {QuadbinTypes::tquadbin()}, QuadbinTypes::quadbin(), Gen_tquadbin_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, QuadbinTypes::quadbin(), Gen_tquadbin_value_n)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getValues", {QuadbinTypes::tquadbin()}, LogicalType::LIST(QuadbinTypes::quadbin()), Gen_tquadbin_values)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {SetTypes::quadbinset(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbinset_grid_disk)); - RegisterSerializedScalarFunction(loader, ScalarFunction("compactCells", {SetTypes::quadbinset()}, SetTypes::quadbinset(), Gen_quadbinset_compact_cells)); - RegisterSerializedScalarFunction(loader, ScalarFunction("uncompactCells", {SetTypes::quadbinset(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbinset_uncompact_cells)); - RegisterSerializedScalarFunction(loader, ScalarFunction("coverCells", {SetTypes::quadbinset(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbinset_cover_cells)); -} - -void RegisterGenerated_meos_pose_base_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {PoseTypes::pose()}, LogicalType::UINTEGER, Gen_pose_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {PoseTypes::pose(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_pose_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_same)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_same)); -} - -void RegisterGenerated_meos_geo_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TgeompointType::tgeompoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TgeogpointType::tgeogpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TGeometryTypes::tgeometry()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TGeographyTypes::tgeography()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {CbufferTypes::tcbuffer()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TPcpointTypes::tpcpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TPcpatchTypes::tpcpatch()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::tnpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PoseTypes::tpose()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TrgeometryTypes::trgeometry()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_tspatial_transform)); +void RegisterGenerated_meos_temporal_constructor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {LogicalType::LIST(TgeompointType::tgeompoint())}, TgeompointType::tgeompoint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {LogicalType::LIST(TgeogpointType::tgeogpoint())}, TgeogpointType::tgeogpoint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {LogicalType::LIST(TemporalTypes::tbool())}, TemporalTypes::tbool(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {LogicalType::LIST(TemporalTypes::tbool()), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {LogicalType::LIST(TemporalTypes::tbool()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {LogicalType::LIST(TemporalTypes::tbool()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {LogicalType::LIST(TemporalTypes::tint())}, TemporalTypes::tint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {LogicalType::LIST(TemporalTypes::tbigint())}, TemporalTypes::tbigint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {LogicalType::LIST(TemporalTypes::tfloat())}, TemporalTypes::tfloat(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {LogicalType::LIST(TemporalTypes::ttext())}, TemporalTypes::ttext(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {LogicalType::LIST(TemporalTypes::ttext()), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {LogicalType::LIST(TemporalTypes::ttext()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {LogicalType::LIST(TemporalTypes::ttext()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_tsequence_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSet", {LogicalType::LIST(TgeompointType::tgeompoint())}, TgeompointType::tgeompoint(), Gen_tsequenceset_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSet", {LogicalType::LIST(TgeogpointType::tgeogpoint())}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeqSet", {LogicalType::LIST(TemporalTypes::tbool())}, TemporalTypes::tbool(), Gen_tsequenceset_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSet", {LogicalType::LIST(TemporalTypes::tint())}, TemporalTypes::tint(), Gen_tsequenceset_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSet", {LogicalType::LIST(TemporalTypes::tbigint())}, TemporalTypes::tbigint(), Gen_tsequenceset_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSet", {LogicalType::LIST(TemporalTypes::tfloat())}, TemporalTypes::tfloat(), Gen_tsequenceset_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeqSet", {LogicalType::LIST(TemporalTypes::ttext())}, TemporalTypes::ttext(), Gen_tsequenceset_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSetGaps", {LogicalType::LIST(TgeompointType::tgeompoint())}, TgeompointType::tgeompoint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSetGaps", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::INTERVAL}, TgeompointType::tgeompoint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSetGaps", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSetGaps", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::INTERVAL, LogicalType::DOUBLE, LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSetGaps", {LogicalType::LIST(TgeogpointType::tgeogpoint())}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSetGaps", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::INTERVAL}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSetGaps", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSetGaps", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::INTERVAL, LogicalType::DOUBLE, LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbool())}, TemporalTypes::tbool(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbool()), LogicalType::INTERVAL}, TemporalTypes::tbool(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tint())}, TemporalTypes::tint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::INTERVAL}, TemporalTypes::tint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TemporalTypes::tint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbigint())}, TemporalTypes::tbigint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::INTERVAL}, TemporalTypes::tbigint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TemporalTypes::tbigint(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSetGaps", {LogicalType::LIST(TemporalTypes::tfloat())}, TemporalTypes::tfloat(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSetGaps", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::INTERVAL}, TemporalTypes::tfloat(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSetGaps", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSetGaps", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::INTERVAL, LogicalType::DOUBLE, LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeqSetGaps", {LogicalType::LIST(TemporalTypes::ttext())}, TemporalTypes::ttext(), Gen_tsequenceset_make_gaps)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeqSetGaps", {LogicalType::LIST(TemporalTypes::ttext()), LogicalType::INTERVAL}, TemporalTypes::ttext(), Gen_tsequenceset_make_gaps)); +} + +void RegisterGenerated_meos_rgeo_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("endInstant", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_end_instant)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endSequence", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_end_sequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TrgeometryTypes::trgeometry()}, MobilityDuckGeometryType(), Gen_trgeometry_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("instantN", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_trgeometry_instant_n)); + RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_yaw)); + RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_pitch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_roll)); + RegisterSerializedScalarFunction(loader, ScalarFunction("sequenceN", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_trgeometry_sequence_n)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startInstant", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_start_instant)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startSequence", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_start_sequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TrgeometryTypes::trgeometry()}, MobilityDuckGeometryType(), Gen_trgeometry_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TrgeometryTypes::trgeometry()}, TgeompointType::tgeompoint(), Gen_trgeometry_centroid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("convexHull", {TrgeometryTypes::trgeometry()}, MobilityDuckGeometryType(), Gen_trgeometry_convex_hull)); + RegisterSerializedScalarFunction(loader, ScalarFunction("length", {TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_trgeometry_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cumulativeLength", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_cumulative_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("angularSpeed", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_angular_speed)); + RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_speed)); + RegisterSerializedScalarFunction(loader, ScalarFunction("twCentroid", {TrgeometryTypes::trgeometry()}, MobilityDuckGeometryType(), Gen_trgeometry_twcentroid)); +} + +void RegisterGenerated_meos_json_set_json(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetDeleteArray", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR)}, SetTypes::jsonbset(), Gen_jsonbset_delete_array)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR)}, SetTypes::jsonbset(), Gen_jsonbset_delete_array)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetDeletePath", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR)}, SetTypes::jsonbset(), Gen_jsonbset_delete_path)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetExtractPath", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR), LogicalType::VARCHAR}, SetTypes::jsonbset(), Gen_jsonbset_extract_path)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetInsert", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, SetTypes::jsonbset(), Gen_jsonbset_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetArrayLength", {SetTypes::jsonbset()}, SetTypes::intset(), Gen_jsonbset_array_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetDeleteIndex", {SetTypes::jsonbset(), LogicalType::INTEGER}, SetTypes::jsonbset(), Gen_jsonbset_delete_index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-", {SetTypes::jsonbset(), LogicalType::INTEGER}, SetTypes::jsonbset(), Gen_jsonbset_delete_index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetDelete", {SetTypes::jsonbset(), LogicalType::VARCHAR}, SetTypes::jsonbset(), Gen_jsonbset_delete)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-", {SetTypes::jsonbset(), LogicalType::VARCHAR}, SetTypes::jsonbset(), Gen_jsonbset_delete)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetStripNulls", {SetTypes::jsonbset(), LogicalType::BOOLEAN}, SetTypes::jsonbset(), Gen_jsonbset_strip_nulls)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetStripNulls", {SetTypes::jsonbset()}, SetTypes::jsonbset(), Gen_jsonbset_strip_nulls_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetPretty", {SetTypes::jsonbset()}, SetTypes::textset(), Gen_jsonbset_pretty)); +} + +void RegisterGenerated_meos_cbuffer_comp_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_always_eq_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_always_eq_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_always_eq_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_always_eq_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_always_ne_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_always_ne_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_always_ne_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_always_ne_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_ever_eq_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_ever_eq_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_ever_eq_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_ever_eq_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_ever_ne_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_ever_ne_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_ever_ne_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_ever_ne_tcbuffer_tcbuffer)); +} + +void RegisterGenerated_meos_s2cell_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("s2EdgeNeighbors", {S2cellTypes::s2cell()}, SetTypes::s2cellset(), Gen_s2cell_edge_neighbors_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToChildren", {S2cellTypes::s2cell(), LogicalType::INTEGER}, SetTypes::s2cellset(), Gen_s2cell_cell_to_children_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToCover", {S2cellTypes::s2cell(), LogicalType::INTEGER}, SetTypes::s2cellset(), Gen_s2cell_cell_to_cover)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {S2cellTypes::ts2cell()}, S2cellTypes::s2cell(), Gen_ts2cell_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {S2cellTypes::ts2cell()}, S2cellTypes::s2cell(), Gen_ts2cell_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, S2cellTypes::s2cell(), Gen_ts2cell_value_n)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getValues", {S2cellTypes::ts2cell()}, LogicalType::LIST(S2cellTypes::s2cell()), Gen_ts2cell_values)); + RegisterSerializedScalarFunction(loader, ScalarFunction("compactCells", {SetTypes::s2cellset()}, SetTypes::s2cellset(), Gen_s2cellset_compact_cells)); + RegisterSerializedScalarFunction(loader, ScalarFunction("uncompactCells", {SetTypes::s2cellset(), LogicalType::INTEGER}, SetTypes::s2cellset(), Gen_s2cellset_uncompact_cells)); + RegisterSerializedScalarFunction(loader, ScalarFunction("coverCells", {SetTypes::s2cellset(), LogicalType::INTEGER}, SetTypes::s2cellset(), Gen_s2cellset_cover_cells)); +} + +void RegisterGenerated_meos_geo_set_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::cbufferset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::cbufferset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::npointset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::npointset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::pcpointset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::pcpatchset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::poseset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::poseset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::posechainset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::posechainset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::cbufferset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::cbufferset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {H3indexTypes::h3indexset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::npointset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::npointset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::pcpointset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::pcpatchset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::poseset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::poseset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::posechainset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::posechainset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::quadbinset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::s2cellset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); } void RegisterGenerated_meos_s2cell_base_comp(ExtensionLoader &loader) { @@ -4046,56 +5165,70 @@ void RegisterGenerated_meos_s2cell_base_comp(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {S2cellTypes::s2cell(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_s2cell_hash_extended)); } -void RegisterGenerated_meos_temporal_text(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {LogicalType::VARCHAR, TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_text_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("||", {LogicalType::VARCHAR, TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_text_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_textcat_ttext_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_textcat_ttext_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TemporalTypes::ttext(), TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_ttext_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TemporalTypes::ttext(), TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_ttext_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("initcap", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_initcap)); - RegisterSerializedScalarFunction(loader, ScalarFunction("upper", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_upper)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lower", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_lower)); +void RegisterGenerated_meos_h3_latlng(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, H3indexTypes::th3index(), Gen_tgeogpoint_to_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_tgeogpoint_to_th3index_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TgeompointType::tgeompoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, H3indexTypes::th3index(), Gen_tgeompoint_to_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_tgeompoint_to_th3index_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {H3indexTypes::th3index()}, TgeogpointType::tgeogpoint(), Gen_th3index_to_tgeogpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {H3indexTypes::th3index()}, TgeompointType::tgeompoint(), Gen_th3index_to_tgeompoint)); +} + +void RegisterGenerated_meos_geo_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_z)); } -void RegisterGenerated_meos_cbuffer_restrict(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_at_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_at_geom)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_minus_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_minus_geom)); +void RegisterGenerated_meos_h3_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {H3indexTypes::th3index()}, H3indexTypes::h3index(), Gen_th3index_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {H3indexTypes::th3index()}, H3indexTypes::h3index(), Gen_th3index_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_th3index_value_n)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getValues", {H3indexTypes::th3index()}, LogicalType::LIST(H3indexTypes::h3index()), Gen_th3index_values)); } -void RegisterGenerated_meos_pointcloud_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TemporalTypes::tbool(), Gen_teq_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TemporalTypes::tbool(), Gen_tne_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TemporalTypes::tbool(), Gen_teq_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TemporalTypes::tbool(), Gen_tne_tpcpatch_pcpatch)); +void RegisterGenerated_meos_cbuffer_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::cbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_cbuffer_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::cbuffer()}, LogicalType::VARCHAR, Gen_cbuffer_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::cbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_cbuffer_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::cbuffer()}, LogicalType::VARCHAR, Gen_cbuffer_as_text_d)); } -void RegisterGenerated_meos_cbuffer_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloat", {CbufferTypes::tcbuffer()}, TemporalTypes::tfloat(), Gen_tcbuffer_to_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, TemporalTypes::tfloat(), Gen_tcbuffer_to_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {CbufferTypes::tcbuffer()}, TgeompointType::tgeompoint(), Gen_tcbuffer_to_tgeompoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, TgeompointType::tgeompoint(), Gen_tcbuffer_to_tgeompoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tcbuffer", {TGeometryTypes::tgeometry()}, CbufferTypes::tcbuffer(), Gen_tgeometry_to_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, CbufferTypes::tcbuffer(), Gen_tgeometry_to_tcbuffer)); +void RegisterGenerated_meos_cbuffer_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {CbufferTypes::tcbuffer()}, CbufferTypes::cbuffer(), Gen_tcbuffer_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("convexHull", {CbufferTypes::tcbuffer()}, MobilityDuckGeometryType(), Gen_tcbuffer_convex_hull)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {CbufferTypes::tcbuffer()}, CbufferTypes::cbuffer(), Gen_tcbuffer_start_value)); } -void RegisterGenerated_meos_pose_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::pose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_pose_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::pose()}, LogicalType::VARCHAR, Gen_pose_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::pose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_pose_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::pose()}, LogicalType::VARCHAR, Gen_pose_as_text_d)); +void RegisterGenerated_meos_internal_temporal_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointFromMFJSON", {LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointFromMFJSON", {LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_temporal_from_mfjson)); } -void RegisterGenerated_meos_npoint_restrict(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("atValues", {NpointTypes::tnpoint(), SetTypes::npointset()}, NpointTypes::tnpoint(), Gen_tnpoint_at_npointset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValues", {NpointTypes::tnpoint(), SetTypes::npointset()}, NpointTypes::tnpoint(), Gen_tnpoint_minus_npointset)); +void RegisterGenerated_meos_json_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("ttext", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonb", {TemporalTypes::ttext()}, TJsonbTypes::tjsonb(), Gen_ttext_to_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::ttext()}, TJsonbTypes::tjsonb(), Gen_ttext_to_tjsonb)); } -void RegisterGenerated_meos_posechain_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPose", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tposechain_as_geopose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPose", {PosechainTypes::tposechain()}, LogicalType::VARCHAR, Gen_tposechain_as_geopose_d)); +void RegisterGenerated_meos_pointcloud_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {TPcpointTypes::tpcpoint()}, TgeompointType::tgeompoint(), Gen_tpcpoint_to_tgeompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TPcpatchTypes::tpcpatch()}, TGeometryTypes::tgeometry(), Gen_tpcpatch_to_tgeometry)); } void RegisterGenerated_meos_box_set(ExtensionLoader &loader) { @@ -4103,12 +5236,12 @@ void RegisterGenerated_meos_box_set(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("*", {TboxType::tbox(), TboxType::tbox()}, TboxType::tbox(), Gen_intersection_tbox_tbox)); } -void RegisterGenerated_meos_h3_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("h3indexFromHexWKB", {LogicalType::VARCHAR}, H3indexTypes::h3index(), Gen_h3index_from_hexwkb)); +void RegisterGenerated_meos_cbuffer_base_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("radius", {CbufferTypes::cbuffer()}, LogicalType::DOUBLE, Gen_cbuffer_radius)); } -void RegisterGenerated_meos_h3_base_metrics(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {H3indexTypes::h3index()}, LogicalType::DOUBLE, Gen_h3index_cell_area)); +void RegisterGenerated_meos_h3_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {H3indexTypes::th3index()}, LogicalType::VARCHAR, Gen_th3index_out)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_2.cpp b/src/generated/generated_temporal_udfs_2.cpp index 4f452503..cf789f80 100644 --- a/src/generated/generated_temporal_udfs_2.cpp +++ b/src/generated/generated_temporal_udfs_2.cpp @@ -345,1678 +345,502 @@ inline string_t TakeCString(Vector &result, char *s) { } -// ===== @ingroup meos_setspan_pos ===== -static void Gen_after_date_set(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_bbox_topo ===== +static void Gen_adjacent_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = after_date_set(ToMeosDate(a1), s); - free(s); - return r; - }); -} - -static void Gen_after_set_date(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - Set *s = BlobToSet(a); - bool r = after_set_date(s, ToMeosDate(a2)); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = adjacent_temporal_temporal(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_after_set_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_adjacent_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - Set *s = BlobToSet(a); - bool r = after_set_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = adjacent_tnumber_tnumber(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_after_timestamptz_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = after_timestamptz_set(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = contained_temporal_temporal(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_before_date_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = before_date_set(ToMeosDate(a1), s); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = contained_tnumber_tnumber(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_before_set_date(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - Set *s = BlobToSet(a); - bool r = before_set_date(s, ToMeosDate(a2)); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = contains_temporal_temporal(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_before_set_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - Set *s = BlobToSet(a); - bool r = before_set_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = contains_tnumber_tnumber(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_before_timestamptz_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = before_timestamptz_set(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = overlaps_temporal_temporal(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_left_bigint_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = left_bigint_set(a1, s); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = overlaps_tnumber_tnumber(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_left_float_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_temporal_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - Set *s = BlobToSet(b); - bool r = left_float_set(a1, s); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = same_temporal_temporal(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_left_int_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = left_int_set(a1, s); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + bool r = same_tnumber_tnumber(t1, t2); + free(t1); free(t2); + return (bool) r; }); } -static void Gen_left_set_bigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_adjacent_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - Set *s = BlobToSet(a); - bool r = left_set_bigint(s, a2); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *bx = BlobToTbox(a); + Temporal *t = BlobToTemporal(b); + bool r = adjacent_tbox_tnumber(bx, t); + free(bx); free(t); + return (bool) r; }); } -static void Gen_left_set_float(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_adjacent_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - Set *s = BlobToSet(a); - bool r = left_set_float(s, a2); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + TBox *bx = BlobToTbox(b); + bool r = adjacent_tnumber_tbox(t, bx); + free(t); free(bx); + return (bool) r; }); } -static void Gen_left_set_int(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Set *s = BlobToSet(a); - bool r = left_set_int(s, a2); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *bx = BlobToTbox(a); + Temporal *t = BlobToTemporal(b); + bool r = contained_tbox_tnumber(bx, t); + free(bx); free(t); + return (bool) r; }); } -static void Gen_left_set_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = left_set_set(s1, s2); - free(s1); free(s2); - return r; + Temporal *t = BlobToTemporal(a); + TBox *bx = BlobToTbox(b); + bool r = contained_tnumber_tbox(t, bx); + free(t); free(bx); + return (bool) r; }); } -static void Gen_left_set_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t a2) { - Set *s = BlobToSet(a); - text *t2 = MakeText(a2); - bool r = left_set_text(s, t2); - free(t2); free(s); - return r; + [&](string_t a, string_t b) { + TBox *bx = BlobToTbox(a); + Temporal *t = BlobToTemporal(b); + bool r = contains_tbox_tnumber(bx, t); + free(bx); free(t); + return (bool) r; }); } -static void Gen_left_text_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a1, string_t b) { - text *t1 = MakeText(a1); - Set *s = BlobToSet(b); - bool r = left_text_set(t1, s); - free(t1); free(s); - return r; + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + TBox *bx = BlobToTbox(b); + bool r = contains_tnumber_tbox(t, bx); + free(t); free(bx); + return (bool) r; }); } -static void Gen_overafter_date_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overafter_date_set(ToMeosDate(a1), s); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *bx = BlobToTbox(a); + Temporal *t = BlobToTemporal(b); + bool r = overlaps_tbox_tnumber(bx, t); + free(bx); free(t); + return (bool) r; }); } -static void Gen_overafter_set_date(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - Set *s = BlobToSet(a); - bool r = overafter_set_date(s, ToMeosDate(a2)); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + TBox *bx = BlobToTbox(b); + bool r = overlaps_tnumber_tbox(t, bx); + free(t); free(bx); + return (bool) r; }); } -static void Gen_overafter_set_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_tbox_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - Set *s = BlobToSet(a); - bool r = overafter_set_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *bx = BlobToTbox(a); + Temporal *t = BlobToTemporal(b); + bool r = same_tbox_tnumber(bx, t); + free(bx); free(t); + return (bool) r; }); } -static void Gen_overafter_timestamptz_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_tnumber_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overafter_timestamptz_set(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + TBox *bx = BlobToTbox(b); + bool r = same_tnumber_tbox(t, bx); + free(t); free(bx); + return (bool) r; }); } -static void Gen_overbefore_date_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_adjacent_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overbefore_date_set(ToMeosDate(a1), s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = adjacent_numspan_tnumber(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overbefore_set_date(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_adjacent_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - Set *s = BlobToSet(a); - bool r = overbefore_set_date(s, ToMeosDate(a2)); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = adjacent_temporal_tstzspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overbefore_set_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_adjacent_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - Set *s = BlobToSet(a); - bool r = overbefore_set_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = adjacent_tnumber_numspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overbefore_timestamptz_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_adjacent_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overbefore_timestamptz_set(DuckDBToMeosTimestamp(a1).value, s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = adjacent_tstzspan_temporal(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overleft_bigint_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overleft_bigint_set(a1, s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = contained_numspan_tnumber(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overleft_float_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overleft_float_set(a1, s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = contained_temporal_tstzspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overleft_int_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overleft_int_set(a1, s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = contained_tnumber_numspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overleft_set_bigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - Set *s = BlobToSet(a); - bool r = overleft_set_bigint(s, a2); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = contained_tstzspan_temporal(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overleft_set_float(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - Set *s = BlobToSet(a); - bool r = overleft_set_float(s, a2); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = contains_numspan_tnumber(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overleft_set_int(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Set *s = BlobToSet(a); - bool r = overleft_set_int(s, a2); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = contains_temporal_tstzspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overleft_set_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = overleft_set_set(s1, s2); - free(s1); free(s2); + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = contains_tnumber_numspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overleft_set_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t a2) { - Set *s = BlobToSet(a); - text *t2 = MakeText(a2); - bool r = overleft_set_text(s, t2); - free(t2); free(s); + [&](string_t a, string_t b) { + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = contains_tstzspan_temporal(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overleft_text_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a1, string_t b) { - text *t1 = MakeText(a1); - Set *s = BlobToSet(b); - bool r = overleft_text_set(t1, s); - free(t1); free(s); + [&](string_t a, string_t b) { + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = overlaps_numspan_tnumber(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overright_bigint_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overright_bigint_set(a1, s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = overlaps_temporal_tstzspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overright_float_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overright_float_set(a1, s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = overlaps_tnumber_numspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overright_int_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = overright_int_set(a1, s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = overlaps_tstzspan_temporal(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overright_set_bigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_numspan_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - Set *s = BlobToSet(a); - bool r = overright_set_bigint(s, a2); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = same_numspan_tnumber(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overright_set_float(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_temporal_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - Set *s = BlobToSet(a); - bool r = overright_set_float(s, a2); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = same_temporal_tstzspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overright_set_int(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_tnumber_numspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Set *s = BlobToSet(a); - bool r = overright_set_int(s, a2); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + bool r = same_tnumber_numspan(t, cc); + free(t); free(cc); return r; }); } -static void Gen_overright_set_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_tstzspan_temporal(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = overright_set_set(s1, s2); - free(s1); free(s2); + Span *cc = BlobToSpan(a); + Temporal *t = BlobToTemporal(b); + bool r = same_tstzspan_temporal(cc, t); + free(cc); free(t); return r; }); } -static void Gen_overright_set_text(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_setspan_dist ===== +static void Gen_distance_bigintset_bigintset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t a2) { - Set *s = BlobToSet(a); - text *t2 = MakeText(a2); - bool r = overright_set_text(s, t2); - free(t2); free(s); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a0, string_t a1) { + Set *x0 = BlobToSet(a0); + Set *x1 = BlobToSet(a1); + int64_t r = distance_bigintset_bigintset(x0, x1); + free(x0); free(x1); + return (double) r; }); } -static void Gen_overright_text_set(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a1, string_t b) { - text *t1 = MakeText(a1); - Set *s = BlobToSet(b); - bool r = overright_text_set(t1, s); - free(t1); free(s); - return r; - }); -} - -static void Gen_right_bigint_set(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = right_bigint_set(a1, s); - free(s); - return r; - }); -} - -static void Gen_right_float_set(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - Set *s = BlobToSet(b); - bool r = right_float_set(a1, s); - free(s); - return r; - }); -} - -static void Gen_right_int_set(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - Set *s = BlobToSet(b); - bool r = right_int_set(a1, s); - free(s); - return r; - }); -} - -static void Gen_right_set_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - Set *s = BlobToSet(a); - bool r = right_set_bigint(s, a2); - free(s); - return r; - }); -} - -static void Gen_right_set_float(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - Set *s = BlobToSet(a); - bool r = right_set_float(s, a2); - free(s); - return r; - }); -} - -static void Gen_right_set_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Set *s = BlobToSet(a); - bool r = right_set_int(s, a2); - free(s); - return r; - }); -} - -static void Gen_right_set_set(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = right_set_set(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_right_set_text(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t a2) { - Set *s = BlobToSet(a); - text *t2 = MakeText(a2); - bool r = right_set_text(s, t2); - free(t2); free(s); - return r; - }); -} - -static void Gen_right_text_set(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a1, string_t b) { - text *t1 = MakeText(a1); - Set *s = BlobToSet(b); - bool r = right_text_set(t1, s); - free(t1); free(s); - return r; - }); -} - -static void Gen_after_date_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = after_date_span(ToMeosDate(a1), s); - free(s); - return r; - }); -} - -static void Gen_after_span_date(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - Span *s = BlobToSpan(a); - bool r = after_span_date(s, ToMeosDate(a2)); - free(s); - return r; - }); -} - -static void Gen_after_span_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - Span *s = BlobToSpan(a); - bool r = after_span_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; - }); -} - -static void Gen_after_timestamptz_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = after_timestamptz_span(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; - }); -} - -static void Gen_before_date_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = before_date_span(ToMeosDate(a1), s); - free(s); - return r; - }); -} - -static void Gen_before_span_date(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - Span *s = BlobToSpan(a); - bool r = before_span_date(s, ToMeosDate(a2)); - free(s); - return r; - }); -} - -static void Gen_before_span_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - Span *s = BlobToSpan(a); - bool r = before_span_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; - }); -} - -static void Gen_before_timestamptz_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = before_timestamptz_span(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; - }); -} - -static void Gen_left_bigint_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = left_bigint_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_left_float_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = left_float_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_left_int_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = left_int_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_left_span_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - Span *s = BlobToSpan(a); - bool r = left_span_bigint(s, a2); - free(s); - return r; - }); -} - -static void Gen_left_span_float(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - Span *s = BlobToSpan(a); - bool r = left_span_float(s, a2); - free(s); - return r; - }); -} - -static void Gen_left_span_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Span *s = BlobToSpan(a); - bool r = left_span_int(s, a2); - free(s); - return r; - }); -} - -static void Gen_left_span_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = left_span_span(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_left_span_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *x = BlobToSpan(a); - SpanSet *y = BlobToSpanSet(b); - bool r = left_span_spanset(x, y); - free(x); free(y); - return r; - }); -} - -static void Gen_left_spanset_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *x = BlobToSpanSet(a); - Span *y = BlobToSpan(b); - bool r = left_spanset_span(x, y); - free(x); free(y); - return r; - }); -} - -static void Gen_overafter_date_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overafter_date_span(ToMeosDate(a1), s); - free(s); - return r; - }); -} - -static void Gen_overafter_span_date(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - Span *s = BlobToSpan(a); - bool r = overafter_span_date(s, ToMeosDate(a2)); - free(s); - return r; - }); -} - -static void Gen_overafter_span_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - Span *s = BlobToSpan(a); - bool r = overafter_span_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; - }); -} - -static void Gen_overafter_timestamptz_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overafter_timestamptz_span(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; - }); -} - -static void Gen_overbefore_date_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overbefore_date_span(ToMeosDate(a1), s); - free(s); - return r; - }); -} - -static void Gen_overbefore_span_date(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - Span *s = BlobToSpan(a); - bool r = overbefore_span_date(s, ToMeosDate(a2)); - free(s); - return r; - }); -} - -static void Gen_overbefore_span_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - Span *s = BlobToSpan(a); - bool r = overbefore_span_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; - }); -} - -static void Gen_overbefore_timestamptz_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overbefore_timestamptz_span(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; - }); -} - -static void Gen_overleft_bigint_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overleft_bigint_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_overleft_float_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overleft_float_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_overleft_int_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overleft_int_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_overleft_span_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - Span *s = BlobToSpan(a); - bool r = overleft_span_bigint(s, a2); - free(s); - return r; - }); -} - -static void Gen_overleft_span_float(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - Span *s = BlobToSpan(a); - bool r = overleft_span_float(s, a2); - free(s); - return r; - }); -} - -static void Gen_overleft_span_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Span *s = BlobToSpan(a); - bool r = overleft_span_int(s, a2); - free(s); - return r; - }); -} - -static void Gen_overleft_span_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = overleft_span_span(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_overleft_span_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *x = BlobToSpan(a); - SpanSet *y = BlobToSpanSet(b); - bool r = overleft_span_spanset(x, y); - free(x); free(y); - return r; - }); -} - -static void Gen_overleft_spanset_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *x = BlobToSpanSet(a); - Span *y = BlobToSpan(b); - bool r = overleft_spanset_span(x, y); - free(x); free(y); - return r; - }); -} - -static void Gen_overright_bigint_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overright_bigint_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_overright_float_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overright_float_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_overright_int_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = overright_int_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_overright_span_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - Span *s = BlobToSpan(a); - bool r = overright_span_bigint(s, a2); - free(s); - return r; - }); -} - -static void Gen_overright_span_float(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - Span *s = BlobToSpan(a); - bool r = overright_span_float(s, a2); - free(s); - return r; - }); -} - -static void Gen_overright_span_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Span *s = BlobToSpan(a); - bool r = overright_span_int(s, a2); - free(s); - return r; - }); -} - -static void Gen_overright_span_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = overright_span_span(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_overright_span_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *x = BlobToSpan(a); - SpanSet *y = BlobToSpanSet(b); - bool r = overright_span_spanset(x, y); - free(x); free(y); - return r; - }); -} - -static void Gen_overright_spanset_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *x = BlobToSpanSet(a); - Span *y = BlobToSpan(b); - bool r = overright_spanset_span(x, y); - free(x); free(y); - return r; - }); -} - -static void Gen_right_bigint_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = right_bigint_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_right_float_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = right_float_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_right_int_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - Span *s = BlobToSpan(b); - bool r = right_int_span(a1, s); - free(s); - return r; - }); -} - -static void Gen_right_span_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - Span *s = BlobToSpan(a); - bool r = right_span_bigint(s, a2); - free(s); - return r; - }); -} - -static void Gen_right_span_float(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - Span *s = BlobToSpan(a); - bool r = right_span_float(s, a2); - free(s); - return r; - }); -} - -static void Gen_right_span_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Span *s = BlobToSpan(a); - bool r = right_span_int(s, a2); - free(s); - return r; - }); -} - -static void Gen_right_span_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = right_span_span(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_right_span_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *x = BlobToSpan(a); - SpanSet *y = BlobToSpanSet(b); - bool r = right_span_spanset(x, y); - free(x); free(y); - return r; - }); -} - -static void Gen_right_spanset_span(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *x = BlobToSpanSet(a); - Span *y = BlobToSpan(b); - bool r = right_spanset_span(x, y); - free(x); free(y); - return r; - }); -} - -static void Gen_after_date_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = after_date_spanset(ToMeosDate(a1), s); - free(s); - return r; - }); -} - -static void Gen_after_spanset_date(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = after_spanset_date(s, ToMeosDate(a2)); - free(s); - return r; - }); -} - -static void Gen_after_spanset_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = after_spanset_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; - }); -} - -static void Gen_after_timestamptz_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = after_timestamptz_spanset(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; - }); -} - -static void Gen_before_date_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = before_date_spanset(ToMeosDate(a1), s); - free(s); - return r; - }); -} - -static void Gen_before_spanset_date(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = before_spanset_date(s, ToMeosDate(a2)); - free(s); - return r; - }); -} - -static void Gen_before_spanset_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = before_spanset_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; - }); -} - -static void Gen_before_timestamptz_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = before_timestamptz_spanset(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; - }); -} - -static void Gen_left_bigint_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = left_bigint_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_left_float_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = left_float_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_left_int_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = left_int_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_left_spanset_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = left_spanset_bigint(s, a2); - free(s); - return r; - }); -} - -static void Gen_left_spanset_float(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = left_spanset_float(s, a2); - free(s); - return r; - }); -} - -static void Gen_left_spanset_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = left_spanset_int(s, a2); - free(s); - return r; - }); -} - -static void Gen_left_spanset_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = left_spanset_spanset(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_overafter_date_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overafter_date_spanset(ToMeosDate(a1), s); - free(s); - return r; - }); -} - -static void Gen_overafter_spanset_date(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overafter_spanset_date(s, ToMeosDate(a2)); - free(s); - return r; - }); -} - -static void Gen_overafter_spanset_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overafter_spanset_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; - }); -} - -static void Gen_overafter_timestamptz_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overafter_timestamptz_spanset(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; - }); -} - -static void Gen_overbefore_date_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](date_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overbefore_date_spanset(ToMeosDate(a1), s); - free(s); - return r; - }); -} - -static void Gen_overbefore_spanset_date(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, date_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overbefore_spanset_date(s, ToMeosDate(a2)); - free(s); - return r; - }); -} - -static void Gen_overbefore_spanset_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, timestamp_tz_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overbefore_spanset_timestamptz(s, DuckDBToMeosTimestamp(a2).value); - free(s); - return r; - }); -} - -static void Gen_overbefore_timestamptz_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](timestamp_tz_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overbefore_timestamptz_spanset(DuckDBToMeosTimestamp(a1).value, s); - free(s); - return r; - }); -} - -static void Gen_overleft_bigint_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overleft_bigint_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_overleft_float_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overleft_float_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_overleft_int_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overleft_int_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_overleft_spanset_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overleft_spanset_bigint(s, a2); - free(s); - return r; - }); -} - -static void Gen_overleft_spanset_float(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overleft_spanset_float(s, a2); - free(s); - return r; - }); -} - -static void Gen_overleft_spanset_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overleft_spanset_int(s, a2); - free(s); - return r; - }); -} - -static void Gen_overleft_spanset_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = overleft_spanset_spanset(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_overright_bigint_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overright_bigint_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_overright_float_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overright_float_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_overright_int_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = overright_int_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_overright_spanset_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overright_spanset_bigint(s, a2); - free(s); - return r; - }); -} - -static void Gen_overright_spanset_float(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overright_spanset_float(s, a2); - free(s); - return r; - }); -} - -static void Gen_overright_spanset_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = overright_spanset_int(s, a2); - free(s); - return r; - }); -} - -static void Gen_overright_spanset_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = overright_spanset_spanset(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_right_bigint_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = right_bigint_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_right_float_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](double a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = right_float_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_right_int_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int32_t a1, string_t b) { - SpanSet *s = BlobToSpanSet(b); - bool r = right_int_spanset(a1, s); - free(s); - return r; - }); -} - -static void Gen_right_spanset_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int64_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = right_spanset_bigint(s, a2); - free(s); - return r; - }); -} - -static void Gen_right_spanset_float(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, double a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = right_spanset_float(s, a2); - free(s); - return r; - }); -} - -static void Gen_right_spanset_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - SpanSet *s = BlobToSpanSet(a); - bool r = right_spanset_int(s, a2); - free(s); - return r; - }); -} - -static void Gen_right_spanset_spanset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = right_spanset_spanset(s1, s2); - free(s1); free(s2); - return r; - }); -} - - -// ===== @ingroup meos_setspan_dist ===== -static void Gen_distance_bigintset_bigintset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a0, string_t a1) { - Set *x0 = BlobToSet(a0); - Set *x1 = BlobToSet(a1); - int64_t r = distance_bigintset_bigintset(x0, x1); - free(x0); free(x1); - return (double) r; - }); -} - -static void Gen_distance_bigintspan_bigintspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_distance_bigintspan_bigintspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a0, string_t a1) { @@ -2575,827 +1399,1126 @@ static void Gen_distance_tstzspanset_tstzspanset(DataChunk &args, ExpressionStat } -// ===== @ingroup meos_json_json ===== -static void Gen_concat_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_bbox_split ===== +static void Gen_temporal_spans(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + Span * arr = temporal_spans(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + +static void Gen_temporal_split_each_n_spans(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + Span * arr = temporal_split_each_n_spans(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + +static void Gen_temporal_split_n_spans(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + Span * arr = temporal_split_n_spans(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + +static void Gen_tnumber_split_each_n_tboxes(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + TBox * arr = tnumber_split_each_n_tboxes(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(TBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + +static void Gen_tnumber_split_n_tboxes(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + TBox * arr = tnumber_split_n_tboxes(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(TBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + +static void Gen_tnumber_tboxes(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + TBox * arr = tnumber_tboxes(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(TBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + + +// ===== @ingroup meos_setspan_transf ===== +static void Gen_floatset_ceil(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 = floatset_ceil(s); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_floatset_degrees(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, bool a2) { + Set *s = BlobToSet(a); + Set *r = floatset_degrees(s, a2); + free(s); + return SetToBlob(result, r); + }); +} + +static void Gen_floatset_degrees_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Set *s = BlobToSet(a); + Set *r = floatset_degrees(s, false); + free(s); + return SetToBlob(result, r); + }); +} + +static void Gen_floatset_floor(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 = floatset_floor(s); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_floatset_radians(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 = floatset_radians(s); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_set_round(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = set_round(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_set_round_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Set *s = BlobToSet(a); + Set *r = set_round(s, 0); + free(s); + return SetToBlob(result, r); + }); +} + +static void Gen_textcat_text_textset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = concat_tjsonb_tjsonb(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + [&](string_t a1, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + text *t1 = MakeText(a1); + Set *s = BlobToSet(b); + Set *r = textcat_text_textset(t1, s); + free(t1); free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_contains_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_textcat_textset_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = contains_tjsonb_tjsonb(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + [&](string_t a, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + text *t2 = MakeText(a2); + Set *r = textcat_textset_text(s, t2); + free(t2); free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_array_element(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_textset_initcap(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - nullHandleType c2 = (nullHandleType) 0; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = null_handle_type_from_string(v.ToString().c_str()); } - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_array_element(t, a2, false, c2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + 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_initcap(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_array_length(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_textset_lower(DataChunk &args, ExpressionState &, 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); - Temporal *r = tjsonb_array_length(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Set *s = BlobToSet(in); + Set *r = textset_lower(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_delete(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_textset_upper(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - text *a2t = MakeText(a2); - Temporal *r = tjsonb_delete(t, a2t); - free(a2t); free(t); - return TemporalToBlobN(result, r, mask, idx); + 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_upper(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_delete_array(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_bigintspan_expand(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Temporal *r = tjsonb_delete_array(t, elems, n); - free(t); FreeTextArr(elems, n); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Span *s = BlobToSpan(in); + Span *r = bigintspan_expand(s, a2); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); + }); +} + +static void Gen_floatspan_expand(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Span *s = BlobToSpan(in); + Span *r = floatspan_expand(s, a2); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_tjsonb_delete_index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_intspan_expand(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_delete_index(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Span *s = BlobToSpan(in); + Span *r = intspan_expand(s, a2); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_tjsonb_delete_path(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspan_ceil(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Temporal *r = tjsonb_delete_path(t, elems, n); - free(t); FreeTextArr(elems, n); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Span *s = BlobToSpan(in); + Span *r = floatspan_ceil(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_tjsonb_exists(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspan_degrees(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - text *a2t = MakeText(a2); - Temporal *r = tjsonb_exists(t, a2t); - free(a2t); free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { + Span *s = BlobToSpan(in); + Span *r = floatspan_degrees(s, a2); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_tjsonb_exists_all(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspan_degrees_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Temporal *r = tjsonb_exists_all(t, elems, n); - free(t); FreeTextArr(elems, n); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Span *s = BlobToSpan(a); + Span *r = floatspan_degrees(s, false); + free(s); + return SpanToBlob(result, r); }); } -static void Gen_tjsonb_exists_any(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspan_floor(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Temporal *r = tjsonb_exists_any(t, elems, n); - free(t); FreeTextArr(elems, n); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Span *s = BlobToSpan(in); + Span *r = floatspan_floor(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_tjsonb_extract_path(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspan_radians(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - nullHandleType c2 = (nullHandleType) 0; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = null_handle_type_from_string(v.ToString().c_str()); } - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Temporal *r = tjsonb_extract_path(t, elems, n, false, c2); - free(t); FreeTextArr(elems, n); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Span *s = BlobToSpan(in); + Span *r = floatspan_radians(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_tjsonb_insert(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspan_round(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - Jsonb *c2 = NULL; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } - bool c3 = (bool) 0; - { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Temporal *r = tjsonb_insert(t, elems, n, c2, c3); - free(t); FreeTextArr(elems, n); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Span *s = BlobToSpan(in); + Span *r = floatspan_round(s, a2); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); - free(c2); } -static void Gen_tjsonb_object_field(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspan_round_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - nullHandleType c2 = (nullHandleType) 0; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = null_handle_type_from_string(v.ToString().c_str()); } - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - auto p2 = MakeText(a2); - Temporal *r = tjsonb_object_field(t, p2, false, c2); - free(t); free(p2); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Span *s = BlobToSpan(a); + Span *r = floatspan_round(s, 0); + free(s); + return SpanToBlob(result, r); }); } -static void Gen_tjsonb_path_exists(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspanset_ceil(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - Jsonb *c2 = NULL; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } - bool c3 = (bool) 0; - { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - auto p2 = BlobToJsonpath(a2); - Temporal *r = tjsonb_path_exists(t, p2, c2, c3, false); - free(t); free(p2); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + SpanSet *s = BlobToSpanSet(in); + SpanSet *r = floatspanset_ceil(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanSetToBlob(result, r); }); - free(c2); } -static void Gen_tjsonb_path_match(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspanset_floor(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - Jsonb *c2 = NULL; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } - bool c3 = (bool) 0; - { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - auto p2 = BlobToJsonpath(a2); - Temporal *r = tjsonb_path_match(t, p2, c2, c3, false); - free(t); free(p2); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + SpanSet *s = BlobToSpanSet(in); + SpanSet *r = floatspanset_floor(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanSetToBlob(result, r); }); - free(c2); } -static void Gen_tjsonb_path_query_array(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspanset_degrees(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - Jsonb *c2 = NULL; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } - bool c3 = (bool) 0; - { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - auto p2 = BlobToJsonpath(a2); - Temporal *r = tjsonb_path_query_array(t, p2, c2, c3, false); - free(t); free(p2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { + SpanSet *s = BlobToSpanSet(in); + SpanSet *r = floatspanset_degrees(s, a2); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanSetToBlob(result, r); }); - free(c2); } -static void Gen_tjsonb_path_query_first(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspanset_degrees_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - Jsonb *c2 = NULL; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } - bool c3 = (bool) 0; - { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - auto p2 = BlobToJsonpath(a2); - Temporal *r = tjsonb_path_query_first(t, p2, c2, c3, false); - free(t); free(p2); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + SpanSet *s = BlobToSpanSet(a); + SpanSet *r = floatspanset_degrees(s, false); + free(s); + return SpanSetToBlob(result, r); }); - free(c2); } -static void Gen_tjsonb_pretty(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspanset_radians(DataChunk &args, ExpressionState &, 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); - Temporal *r = tjsonb_pretty(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + SpanSet *s = BlobToSpanSet(in); + SpanSet *r = floatspanset_radians(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanSetToBlob(result, r); }); } -static void Gen_tjsonb_strip_nulls(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspanset_round(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_strip_nulls(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + SpanSet *s = BlobToSpanSet(in); + SpanSet *r = floatspanset_round(s, a2); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanSetToBlob(result, r); }); } -static void Gen_tjsonb_strip_nulls_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspanset_round_d(DataChunk &args, ExpressionState &, 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); - Temporal *r = tjsonb_strip_nulls(t, false); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + SpanSet *s = BlobToSpanSet(a); + SpanSet *r = floatspanset_round(s, 0); + free(s); + return SpanSetToBlob(result, r); }); } -static void Gen_tjsonb_to_tbool(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_rgeo_comp_ever ===== +static void Gen_always_eq_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, string_t a2, string_t a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_to_tbool(t, a2.GetString().c_str(), null_handle_type_from_string(a3.GetString().c_str())); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, string_t in_t, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = always_eq_geo_trgeometry(gs, t); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_tjsonb_to_tbool_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_to_tbool(t, a2.GetString().c_str(), null_handle_type_from_string(string_t("raise_exception").GetString().c_str())); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = always_eq_trgeometry_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_tjsonb_to_tint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, string_t a2, string_t a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_to_tint(t, a2.GetString().c_str(), null_handle_type_from_string(a3.GetString().c_str())); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_eq_trgeometry_trgeometry(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tjsonb_to_tint_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_to_tint(t, a2.GetString().c_str(), null_handle_type_from_string(string_t("raise_exception").GetString().c_str())); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, string_t in_t, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = always_ne_geo_trgeometry(gs, t); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_tjsonb_to_ttext_key(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, string_t a2, string_t a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_to_ttext_key(t, a2.GetString().c_str(), null_handle_type_from_string(a3.GetString().c_str())); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = always_ne_trgeometry_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_tjsonb_to_ttext_key_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_to_ttext_key(t, a2.GetString().c_str(), null_handle_type_from_string(string_t("raise_exception").GetString().c_str())); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_ne_trgeometry_trgeometry(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } - -// ===== @ingroup meos_temporal_modif ===== -static void Gen_temporal_delete_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, timestamp_tz_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = temporal_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, string_t in_t, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = ever_eq_geo_trgeometry(gs, t); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_temporal_delete_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = temporal_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = ever_eq_trgeometry_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_temporal_insert(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in1, string_t in2, bool a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - Temporal *r = temporal_insert(t1, t2, a2); + int32_t r = ever_eq_trgeometry_trgeometry(t1, t2); free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_temporal_merge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = temporal_merge(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, string_t in_t, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = ever_ne_geo_trgeometry(gs, t); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; + }); +} + +static void Gen_ever_ne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = ever_ne_trgeometry_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_temporal_update(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in1, string_t in2, bool a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - Temporal *r = temporal_update(t1, t2, a2); + int32_t r = ever_ne_trgeometry_trgeometry(t1, t2); free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -// ===== @ingroup meos_temporal_inout ===== -static void Gen_tbool_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_dist ===== +static void Gen_tdistance_tfloat_float(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tbool_out(t); + Temporal *r = tdistance_tfloat_float(t, a2); free(t); - return TakeCString(result, r); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_temporal_as_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - if (args.ColumnCount() > 1) { - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t endian, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *x = BlobToTemporal(in); - uint8_t variant = wkb_variant_from_endian(endian.GetString().c_str()); - size_t sz = 0; - char *hex = temporal_as_hexwkb(x, variant, &sz); - free(x); - if (!hex) { mask.SetInvalid(idx); return string_t(); } - string_t out = StringVector::AddString(result, hex); - free(hex); - return out; - }); - } else { - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *x = BlobToTemporal(in); - size_t sz = 0; - char *hex = temporal_as_hexwkb(x, (uint8_t) 0, &sz); - free(x); - if (!hex) { mask.SetInvalid(idx); return string_t(); } - string_t out = StringVector::AddString(result, hex); - free(hex); - return out; - }); - } +static void Gen_tdistance_tint_int(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tdistance_tint_int(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); } -static void Gen_temporal_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdistance_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *r = temporal_from_hexwkb(in.GetString().c_str()); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tdistance_tnumber_tnumber(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tfloat_out(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tfloat_float(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2) { Temporal *t = BlobToTemporal(in); - char * r = tfloat_out(t, a2); + double r = nad_tfloat_float(t, a2); free(t); - return TakeCString(result, r); + return (double) r; }); } -static void Gen_tfloat_out_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tfloat_tfloat(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = tfloat_out(t, 15); - free(t); - return TakeCString(result, r); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + double r = nad_tfloat_tfloat(t1, t2); + free(t1); free(t2); + return (double) r; }); } -static void Gen_tint_out(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tbigint_bigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { Temporal *t = BlobToTemporal(in); - char * r = tint_out(t); + int64_t r = nad_tbigint_bigint(t, a2); free(t); - return TakeCString(result, r); + return (double) r; }); } -static void Gen_tbigint_out(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tbigint_tbigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = tbigint_out(t); - free(t); - return TakeCString(result, r); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int64_t r = nad_tbigint_tbigint(t1, t2); + free(t1); free(t2); + return (double) r; }); } -static void Gen_ttext_out(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tint_int(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2) { Temporal *t = BlobToTemporal(in); - char * r = ttext_out(t); + int32_t r = nad_tint_int(t, a2); free(t); - return TakeCString(result, r); + return (double) r; }); } - -// ===== @ingroup meos_rgeo_accessor ===== -static void Gen_trgeometry_end_instant(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tint_tint(DataChunk &args, ExpressionState &, 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); - Temporal *r = (Temporal *) trgeometry_end_instant(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = nad_tint_tint(t1, t2); + free(t1); free(t2); + return (double) r; }); } -static void Gen_trgeometry_end_sequence(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tfloat_tbox(DataChunk &args, ExpressionState &, 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); - Temporal *r = (Temporal *) trgeometry_end_sequence(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { + Temporal *t = BlobToTemporal(a); + TBox *bx = BlobToTbox(b); + double r = nad_tfloat_tbox(t, bx); + free(t); free(bx); + if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -static void Gen_trgeometry_end_value(DataChunk &args, ExpressionState &state, Vector &result) { +static void Gen_nad_tbigint_tbox(DataChunk &args, ExpressionState &, 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_end_value(t); - free(t); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { + Temporal *t = BlobToTemporal(a); + TBox *bx = BlobToTbox(b); + int64_t r = nad_tbigint_tbox(t, bx); + free(t); free(bx); + if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -static void Gen_trgeometry_instant_n(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tint_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = (Temporal *) trgeometry_instant_n(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { + Temporal *t = BlobToTemporal(a); + TBox *bx = BlobToTbox(b); + int32_t r = nad_tint_tbox(t, bx); + free(t); free(bx); + if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -static void Gen_trgeometry_yaw(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_setspan_conversion ===== +static void Gen_dateset_to_tstzset(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_yaw(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Set *s = BlobToSet(in); + Set *r = dateset_to_tstzset(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_pitch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatset_to_intset(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_pitch(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Set *s = BlobToSet(in); + Set *r = floatset_to_intset(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_roll(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_intset_to_floatset(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_roll(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Set *s = BlobToSet(in); + Set *r = intset_to_floatset(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_sequence_n(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tstzset_to_dateset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = (Temporal *) trgeometry_sequence_n(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(in); + Set *r = tstzset_to_dateset(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_start_instant(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_datespan_to_tstzspan(DataChunk &args, ExpressionState &, 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); - Temporal *r = (Temporal *) trgeometry_start_instant(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Span *s = BlobToSpan(in); + Span *r = datespan_to_tstzspan(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_trgeometry_start_sequence(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspan_to_intspan(DataChunk &args, ExpressionState &, 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); - Temporal *r = (Temporal *) trgeometry_start_sequence(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Span *s = BlobToSpan(in); + Span *r = floatspan_to_intspan(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_trgeometry_start_value(DataChunk &args, ExpressionState &state, Vector &result) { +static void Gen_intspan_to_floatspan(DataChunk &args, ExpressionState &, 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_start_value(t); - free(t); + Span *s = BlobToSpan(in); + Span *r = intspan_to_floatspan(s); + free(s); if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; + return SpanToBlob(result, r); }); } -static void Gen_trgeometry_centroid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tstzspan_to_datespan(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_centroid(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Span *s = BlobToSpan(in); + Span *r = tstzspan_to_datespan(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_trgeometry_convex_hull(DataChunk &args, ExpressionState &state, Vector &result) { +static void Gen_datespanset_to_tstzspanset(DataChunk &args, ExpressionState &, 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_convex_hull(t); - free(t); + SpanSet *s = BlobToSpanSet(in); + SpanSet *r = datespanset_to_tstzspanset(s); + free(s); if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; + return SpanSetToBlob(result, r); }); } -static void Gen_trgeometry_length(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_floatspanset_to_intspanset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Temporal *t = BlobToTemporal(in); - double r = trgeometry_length(t); - free(t); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return (double) r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + SpanSet *s = BlobToSpanSet(in); + SpanSet *r = floatspanset_to_intspanset(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanSetToBlob(result, r); }); } -static void Gen_trgeometry_cumulative_length(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_intspanset_to_floatspanset(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_cumulative_length(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + SpanSet *s = BlobToSpanSet(in); + SpanSet *r = intspanset_to_floatspanset(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanSetToBlob(result, r); }); } -static void Gen_trgeometry_angular_speed(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tstzspanset_to_datespanset(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_angular_speed(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + SpanSet *s = BlobToSpanSet(in); + SpanSet *r = tstzspanset_to_datespanset(s); + free(s); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanSetToBlob(result, r); }); } -static void Gen_trgeometry_speed(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_pose_comp_ever ===== +static void Gen_always_eq_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_speed(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Pose *a2p = BlobToPose(a2); + int32_t r = always_eq_tpose_pose(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_trgeometry_twcentroid(DataChunk &args, ExpressionState &state, Vector &result) { +static void Gen_always_eq_tpose_tpose(DataChunk &args, ExpressionState &, 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_twcentroid(t); - free(t); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_eq_tpose_tpose(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } - -// ===== @ingroup meos_geo_inout ===== -static void Gen_tspatial_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - char * r = tspatial_as_ewkt(t, a2); - free(t); - return TakeCString(result, r); + Pose *a2p = BlobToPose(a2); + int32_t r = always_ne_tpose_pose(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tspatial_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tpose_tpose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = tspatial_as_ewkt(t, 15); - free(t); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_ne_tpose_tpose(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tspatial_as_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - char * r = tspatial_as_text(t, a2); - free(t); - return TakeCString(result, r); + Pose *a2p = BlobToPose(a2); + int32_t r = ever_eq_tpose_pose(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tspatial_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tpose_tpose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = tspatial_as_text(t, 15); - free(t); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_eq_tpose_tpose(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } - -// ===== @ingroup meos_pose_dist ===== -static void Gen_tdistance_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); Pose *a2p = BlobToPose(a2); - Temporal *r = tdistance_tpose_pose(t, a2p); + int32_t r = ever_ne_tpose_pose(t, a2p); free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} + +static void Gen_ever_ne_tpose_tpose(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_ne_tpose_tpose(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tdistance_tpose_geo(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_rgeo_dist ===== +static void Gen_tdistance_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> string_t { @@ -3405,13 +2528,13 @@ static void Gen_tdistance_tpose_geo(DataChunk &args, ExpressionState &, Vector & GSERIALIZED *gs_geog = geom_to_geog(gs); free(gs); gs = gs_geog; } - Temporal *r = tdistance_tpose_geo(t, gs); + Temporal *r = tdistance_trgeometry_geo(t, gs); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdistance_tpose_geo_rev(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdistance_trgeometry_geo_rev(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 { @@ -3421,449 +2544,346 @@ static void Gen_tdistance_tpose_geo_rev(DataChunk &args, ExpressionState &, Vect GSERIALIZED *gs_geog = geom_to_geog(gs); free(gs); gs = gs_geog; } - Temporal *r = tdistance_tpose_geo(t, gs); + Temporal *r = tdistance_trgeometry_geo(t, gs); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdistance_tpose_tpose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdistance_trgeometry_tpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tdistance_tpose_tpose(t1, t2); + Temporal *r = tdistance_trgeometry_tpoint(t1, t2); free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_nad_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdistance_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> double { - Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - double r = nad_tpose_pose(t, a2p); - free(a2p); free(t); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return (double) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tdistance_trgeometry_trgeometry(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_nad_tpose_tpose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_trgeometry_tpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> double { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - double r = nad_tpose_tpose(t1, t2); + double r = nad_trgeometry_tpoint(t1, t2); free(t1); free(t2); if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return (double) r; }); } -static void Gen_nai_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = (Temporal *) nai_tpose_pose(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_nad_tpose_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { - Temporal *t = BlobToTemporal(a); - STBox *bx = BlobToStbox(b); - double r = nad_tpose_stbox(t, bx); - free(t); free(bx); - if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } - return (double) r; - }); -} - - -// ===== @ingroup meos_posechain_base_comp ===== -static void Gen_posechain_hash(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - PoseChain *v = BlobToPosechain(in); - uint32_t r = posechain_hash(v); - free(v); - return r; - }); -} - -static void Gen_posechain_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - PoseChain *s = BlobToPosechain(in); - uint64_t r = posechain_hash_extended(s, a2); - free(s); - return r; - }); -} - -static void Gen_posechain_eq(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - PoseChain *s1 = BlobToPosechain(a); - PoseChain *s2 = BlobToPosechain(b); - bool r = posechain_eq(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_posechain_ne(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - PoseChain *s1 = BlobToPosechain(a); - PoseChain *s2 = BlobToPosechain(b); - bool r = posechain_ne(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_posechain_same(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - PoseChain *s1 = BlobToPosechain(a); - PoseChain *s2 = BlobToPosechain(b); - bool r = posechain_same(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_posechain_lt(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - PoseChain *s1 = BlobToPosechain(a); - PoseChain *s2 = BlobToPosechain(b); - bool r = posechain_lt(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_posechain_le(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - PoseChain *s1 = BlobToPosechain(a); - PoseChain *s2 = BlobToPosechain(b); - bool r = posechain_le(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_posechain_gt(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - PoseChain *s1 = BlobToPosechain(a); - PoseChain *s2 = BlobToPosechain(b); - bool r = posechain_gt(s1, s2); - free(s1); free(s2); - return r; + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> double { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + double r = nad_trgeometry_trgeometry(t1, t2); + free(t1); free(t2); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -static void Gen_posechain_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_trgeometry_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - PoseChain *s1 = BlobToPosechain(a); - PoseChain *s2 = BlobToPosechain(b); - bool r = posechain_ge(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { + Temporal *t = BlobToTemporal(a); + STBox *bx = BlobToStbox(b); + double r = nad_trgeometry_stbox(t, bx); + free(t); free(bx); + if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -// ===== @ingroup meos_npoint_base_comp ===== -static void Gen_npoint_eq(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_conversion ===== +static void Gen_tbigint_to_th3index(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_eq(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tbigint_to_th3index(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_npoint_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_ge(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_to_tbigint(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_npoint_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_cell_to_cover(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_gt(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3index_cell_to_cover(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_npoint_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_le(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + STBox * r = h3index_to_stbox(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } -static void Gen_npoint_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_timestamptz_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_lt(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, timestamp_tz_t a1, ValidityMask &mask, idx_t idx) -> string_t { + STBox * r = h3index_timestamptz_to_stbox(static_cast(a0), DuckDBToMeosTimestamp(a1).value); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } -static void Gen_npoint_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_tstzspan_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_ne(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, string_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Span *p1 = BlobToSpan(a1); + STBox * r = h3index_tstzspan_to_stbox(static_cast(a0), p1); + free(p1); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } -static void Gen_npoint_same(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3indexset_cover_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_same(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = h3indexset_cover_cells(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_h3_hierarchy ===== -static void Gen_h3_cell_to_children(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_conversion ===== +static void Gen_tgeogpoint_to_tgeography(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_cell_to_children(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeogpoint_to_tgeography(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_cell_to_parent_next(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeography_to_tgeogpoint(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_cell_to_parent_next(t); + Temporal *r = tgeography_to_tgeogpoint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_cell_to_center_child(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeography_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = th3index_cell_to_center_child(t, a2); + Temporal *r = tgeography_to_tgeometry(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_cell_to_center_child_next(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeometry_to_tgeography(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_cell_to_center_child_next(t); + Temporal *r = tgeometry_to_tgeography(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_cell_to_child_pos(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeometry_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = th3index_cell_to_child_pos(t, a2); + Temporal *r = tgeometry_to_tgeompoint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_child_pos_to_cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeompoint_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in1, string_t in2, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_child_pos_to_cell(t1, t2, a2); - free(t1); free(t2); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeompoint_to_tgeometry(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_h3_uncompact_cells(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_rgeo_transf ===== +static void Gen_trgeometry_round(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = h3_uncompact_cells(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = trgeometry_round(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_quadbin_comp_temp ===== -static void Gen_teq_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_round_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = teq_quadbin_tquadbin((uint64_t) a1, t); + Temporal *r = trgeometry_round(t, 0); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = teq_tquadbin_quadbin(t, (uint64_t) a2); + Temporal *r = trgeometry_rotate_x(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = teq_tquadbin_tquadbin(t1, t2); - free(t1); free(t2); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = trgeometry_rotate_y(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tne_quadbin_tquadbin((uint64_t) a1, t); + Temporal *r = trgeometry_rotate_z(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_as_tinstant(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tne_tquadbin_quadbin(t, (uint64_t) a2); + Temporal *r = (Temporal *) trgeometry_as_tinstant(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_box_bbox_topo ===== +static void Gen_adjacent_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tne_tquadbin_tquadbin(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = adjacent_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; }); } +static void Gen_contained_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = contained_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; + }); +} -// ===== @ingroup meos_geo_transf ===== -static void Gen_tgeo_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeo_rotate_x(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = contains_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tgeo_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeo_rotate_y(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overlaps_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tgeo_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeo_rotate_z(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = same_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; }); } @@ -3964,37 +2984,48 @@ static void Gen_trgeometry_as_ewkt_d(DataChunk &args, ExpressionState &, Vector } -// ===== @ingroup meos_cbuffer_transf ===== -static void Gen_tcbuffer_expand(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_base_comp ===== +static void Gen_pcpoint_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tcbuffer_expand(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Pcpoint *v = BlobToPcpoint(in); + uint32_t r = pcpoint_hash(v); + free(v); + return r; }); } -static void Gen_tcbuffer_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pcpatch_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tcbuffer_rotate_z(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Pcpatch *v = BlobToPcpatch(in); + uint32_t r = pcpatch_hash(v); + free(v); + return r; }); } -static void Gen_tcbuffer_translate(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pcpoint_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, double a2, double a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tcbuffer_translate(t, a2, a3); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + Pcpoint *s = BlobToPcpoint(in); + uint64_t r = pcpoint_hash_extended(s, a2); + free(s); + return r; + }); +} + +static void Gen_pcpatch_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + Pcpatch *s = BlobToPcpatch(in); + uint64_t r = pcpatch_hash_extended(s, a2); + free(s); + return r; }); } @@ -4028,378 +3059,676 @@ static void Gen_h3_is_valid_vertex(DataChunk &args, ExpressionState &, Vector &r } -// ===== @ingroup meos_pose_conversion ===== -static void Gen_tpose_make(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_base_latlng ===== +static void Gen_h3index_cell_to_point(DataChunk &args, ExpressionState &state, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tpose_make(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + GSERIALIZED * r = h3index_cell_to_point(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; }); } -static void Gen_tpose_to_tpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_cell_to_boundary(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); - Temporal *r = tpose_to_tpoint(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + GSERIALIZED * r = h3index_cell_to_boundary(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; }); } -// ===== @ingroup meos_geo_box_inout ===== -static void Gen_stbox_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_set_accessor ===== +static void Gen_s2cellset_values(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Set *in = BlobToSet(blob); + int count = 0; + uint64_t * arr = s2cellset_values(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + + +// ===== @ingroup meos_npoint_base_srid ===== +static void Gen_npoint_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - STBox *s = BlobToStbox(a); - char *r = stbox_out(s, a2); - free(s); - return TakeCString(result, r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Npoint *v = BlobToNpoint(in); + int32_t r = npoint_srid(v); + free(v); + return r; }); } -static void Gen_stbox_out_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nsegment_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - STBox *s = BlobToStbox(a); - char *r = stbox_out(s, 15); - free(s); - return TakeCString(result, r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Nsegment *v = BlobToNsegment(in); + int32_t r = nsegment_srid(v); + free(v); + return r; }); } -// ===== @ingroup meos_npoint_set_accessor ===== -static void Gen_npointset_routes(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_accessor ===== +static void Gen_tposechain_num_poses(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 = npointset_routes(s); - free(s); - return SetToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + int32_t r = tposechain_num_poses(t); + free(t); + return (int32_t) r; }); } -// ===== @ingroup meos_h3_set_conversion ===== -static void Gen_h3index_to_set(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_base_inout ===== +static void Gen_h3index_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3index_to_set(static_cast(a0)); - return SetToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = h3index_from_hexwkb(a0.GetString().c_str()); + return static_cast(r); }); } -// ===== @ingroup meos_h3_base_inspection ===== -static void Gen_h3index_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_base_metrics ===== +static void Gen_h3index_cell_area(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> uint32_t { - uint32_t r = h3index_get_resolution(static_cast(a0)); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> double { + double r = h3index_cell_area(static_cast(a0)); + return (double) r; }); } } // anonymous -void RegisterGenerated_meos_setspan_pos(ExtensionLoader &loader) { - for (auto &type : SetTypes::AllTypes()) { - RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {type, type}, LogicalType::BOOLEAN, Gen_left_set_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {type, type}, LogicalType::BOOLEAN, Gen_left_set_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {type, type}, LogicalType::BOOLEAN, Gen_overleft_set_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {type, type}, LogicalType::BOOLEAN, Gen_overleft_set_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {type, type}, LogicalType::BOOLEAN, Gen_overright_set_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {type, type}, LogicalType::BOOLEAN, Gen_overright_set_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {type, type}, LogicalType::BOOLEAN, Gen_right_set_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {type, type}, LogicalType::BOOLEAN, Gen_right_set_set)); - } - RegisterSerializedScalarFunction(loader, ScalarFunction("setAfter", {LogicalType::DATE, SetTypes::dateset()}, LogicalType::BOOLEAN, Gen_after_date_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setAfter", {SetTypes::dateset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_after_set_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setAfter", {SetTypes::tstzset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_after_set_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setAfter", {LogicalType::TIMESTAMP_TZ, SetTypes::tstzset()}, LogicalType::BOOLEAN, Gen_after_timestamptz_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setBefore", {LogicalType::DATE, SetTypes::dateset()}, LogicalType::BOOLEAN, Gen_before_date_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setBefore", {SetTypes::dateset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_before_set_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setBefore", {SetTypes::tstzset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_before_set_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setBefore", {LogicalType::TIMESTAMP_TZ, SetTypes::tstzset()}, LogicalType::BOOLEAN, Gen_before_timestamptz_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_left_bigint_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_left_bigint_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_left_float_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_left_float_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_left_int_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_left_int_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_set_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_set_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_set_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_set_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_set_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_set_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_left_set_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_left_set_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setLeft", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_left_text_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_left_text_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverafter", {LogicalType::DATE, SetTypes::dateset()}, LogicalType::BOOLEAN, Gen_overafter_date_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverafter", {SetTypes::dateset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overafter_set_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverafter", {SetTypes::tstzset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overafter_set_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverafter", {LogicalType::TIMESTAMP_TZ, SetTypes::tstzset()}, LogicalType::BOOLEAN, Gen_overafter_timestamptz_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverbefore", {LogicalType::DATE, SetTypes::dateset()}, LogicalType::BOOLEAN, Gen_overbefore_date_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverbefore", {SetTypes::dateset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overbefore_set_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverbefore", {SetTypes::tstzset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overbefore_set_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverbefore", {LogicalType::TIMESTAMP_TZ, SetTypes::tstzset()}, LogicalType::BOOLEAN, Gen_overbefore_timestamptz_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_overleft_bigint_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_overleft_bigint_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_overleft_float_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_overleft_float_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_overleft_int_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_overleft_int_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_set_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_set_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_set_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_set_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_set_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_set_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_overleft_set_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_overleft_set_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverleft", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_overleft_text_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_overleft_text_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_overright_bigint_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_overright_bigint_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_overright_float_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_overright_float_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_overright_int_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_overright_int_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_set_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_set_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_set_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_set_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_set_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_set_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_overright_set_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_overright_set_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setOverright", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_overright_text_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_overright_text_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_right_bigint_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::BIGINT, SetTypes::bigintset()}, LogicalType::BOOLEAN, Gen_right_bigint_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_right_float_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::DOUBLE, SetTypes::floatset()}, LogicalType::BOOLEAN, Gen_right_float_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_right_int_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::INTEGER, SetTypes::intset()}, LogicalType::BOOLEAN, Gen_right_int_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_set_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SetTypes::bigintset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_set_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_set_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SetTypes::floatset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_set_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_set_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_set_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_right_set_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SetTypes::textset(), LogicalType::VARCHAR}, LogicalType::BOOLEAN, Gen_right_set_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setRight", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_right_text_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::VARCHAR, SetTypes::textset()}, LogicalType::BOOLEAN, Gen_right_text_set)); - for (auto &type : SpanTypes::AllTypes()) { - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {type, type}, LogicalType::BOOLEAN, Gen_left_span_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {type, type}, LogicalType::BOOLEAN, Gen_left_span_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {type, type}, LogicalType::BOOLEAN, Gen_overleft_span_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {type, type}, LogicalType::BOOLEAN, Gen_overleft_span_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {type, type}, LogicalType::BOOLEAN, Gen_overright_span_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {type, type}, LogicalType::BOOLEAN, Gen_overright_span_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {type, type}, LogicalType::BOOLEAN, Gen_right_span_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {type, type}, LogicalType::BOOLEAN, Gen_right_span_span)); - } - RegisterSerializedScalarFunction(loader, ScalarFunction("spanAfter", {LogicalType::DATE, SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_after_date_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanAfter", {SpanTypes::datespan(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_after_span_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanAfter", {SpanTypes::tstzspan(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_after_span_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanAfter", {LogicalType::TIMESTAMP_TZ, SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_after_timestamptz_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanBefore", {LogicalType::DATE, SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_before_date_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanBefore", {SpanTypes::datespan(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_before_span_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanBefore", {SpanTypes::tstzspan(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_before_span_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanBefore", {LogicalType::TIMESTAMP_TZ, SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_before_timestamptz_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_bigint_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_bigint_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_float_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_float_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_int_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_int_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_span_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_span_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_span_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_span_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_span_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_span_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanLeft", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_left_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverafter", {LogicalType::DATE, SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_overafter_date_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverafter", {SpanTypes::datespan(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overafter_span_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverafter", {SpanTypes::tstzspan(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overafter_span_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverafter", {LogicalType::TIMESTAMP_TZ, SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overafter_timestamptz_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverbefore", {LogicalType::DATE, SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_overbefore_date_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverbefore", {SpanTypes::datespan(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overbefore_span_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverbefore", {SpanTypes::tstzspan(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overbefore_span_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverbefore", {LogicalType::TIMESTAMP_TZ, SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overbefore_timestamptz_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_bigint_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_bigint_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_float_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_float_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_int_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_int_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_span_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_span_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_span_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_span_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_span_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_span_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverleft", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overleft_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_bigint_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_bigint_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_float_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_float_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_int_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_int_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_span_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_span_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_span_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_span_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_span_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_span_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanOverright", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overright_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_bigint_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::BIGINT, SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_bigint_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_float_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::DOUBLE, SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_float_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_int_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::INTEGER, SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_int_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_span_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::bigintspan(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_span_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_span_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::floatspan(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_span_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_span_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::intspan(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_span_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::intspan(), SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::bigintspan(), SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spanRight", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpanTypes::floatspan(), SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_right_span_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::intspanset(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::bigintspanset(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::floatspanset(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_spanset_span)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetAfter", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_after_date_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetAfter", {SpansetTypes::datespanset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_after_spanset_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetAfter", {SpansetTypes::tstzspanset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_after_spanset_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetAfter", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_after_timestamptz_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetBefore", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_before_date_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetBefore", {SpansetTypes::datespanset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_before_spanset_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetBefore", {SpansetTypes::tstzspanset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_before_spanset_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetBefore", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_before_timestamptz_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_left_bigint_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_left_bigint_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_left_float_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_left_float_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_left_int_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_left_int_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_spanset_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_left_spanset_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_spanset_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_left_spanset_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_spanset_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_left_spanset_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverafter", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_overafter_date_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverafter", {SpansetTypes::datespanset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overafter_spanset_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverafter", {SpansetTypes::tstzspanset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overafter_spanset_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverafter", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_overafter_timestamptz_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverbefore", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_overbefore_date_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverbefore", {SpansetTypes::datespanset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_overbefore_spanset_date)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverbefore", {SpansetTypes::tstzspanset(), LogicalType::TIMESTAMP_TZ}, LogicalType::BOOLEAN, Gen_overbefore_spanset_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverbefore", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_overbefore_timestamptz_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overleft_bigint_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overleft_bigint_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overleft_float_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overleft_float_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overleft_int_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overleft_int_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_spanset_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overleft_spanset_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_spanset_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overleft_spanset_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_spanset_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overleft_spanset_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overright_bigint_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_overright_bigint_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overright_float_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_overright_float_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overright_int_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_overright_int_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_spanset_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_overright_spanset_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_spanset_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_overright_spanset_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_spanset_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_overright_spanset_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_right_bigint_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_right_bigint_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_right_float_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_right_float_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_right_int_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_right_int_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_spanset_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_right_spanset_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_spanset_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::floatspanset(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_right_spanset_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_spanset_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::BOOLEAN, Gen_right_spanset_int)); - for (auto &type : SpansetTypes::AllTypes()) { - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetLeft", {type, type}, LogicalType::BOOLEAN, Gen_left_spanset_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {type, type}, LogicalType::BOOLEAN, Gen_left_spanset_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverleft", {type, type}, LogicalType::BOOLEAN, Gen_overleft_spanset_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {type, type}, LogicalType::BOOLEAN, Gen_overleft_spanset_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetOverright", {type, type}, LogicalType::BOOLEAN, Gen_overright_spanset_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {type, type}, LogicalType::BOOLEAN, Gen_overright_spanset_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spansetRight", {type, type}, LogicalType::BOOLEAN, Gen_right_spanset_spanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {type, type}, LogicalType::BOOLEAN, Gen_right_spanset_spanset)); - } +void RegisterGenerated_meos_temporal_bbox_topo(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contained_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contained_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contained_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contained_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contains_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contains_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contains_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contains_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_same_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbool(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_same_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_same_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::ttext(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_same_temporal_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TboxType::tbox(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TboxType::tbox(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tbox_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tnumber_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_adjacent_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contained_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contains_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overlaps_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::intspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::bigintspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::floatspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_numspan_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {CbufferTypes::tcbuffer(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TGeometryTypes::tgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TGeographyTypes::tgeography(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TgeompointType::tgeompoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TgeogpointType::tgeogpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {H3indexTypes::th3index(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TJsonbTypes::tjsonb(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {NpointTypes::tnpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TPcpointTypes::tpcpoint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TPcpatchTypes::tpcpatch(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PoseTypes::tpose(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PosechainTypes::tposechain(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {QuadbinTypes::tquadbin(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {S2cellTypes::ts2cell(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbool(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbigint(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tfloat(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::ttext(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_temporal_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tint(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tbigint(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TemporalTypes::tfloat(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_same_tnumber_numspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), NpointTypes::tnpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::tbool()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::tint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::tbigint()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::tfloat()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TemporalTypes::ttext()}, LogicalType::BOOLEAN, Gen_same_tstzspan_temporal)); } void RegisterGenerated_meos_setspan_dist(ExtensionLoader &loader) { @@ -4505,337 +3834,284 @@ void RegisterGenerated_meos_setspan_dist(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {SpansetTypes::tstzspanset(), SpansetTypes::tstzspanset()}, LogicalType::DOUBLE, Gen_distance_tstzspanset_tstzspanset)); } -void RegisterGenerated_meos_json_json(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TJsonbTypes::tjsonb(), Gen_concat_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TJsonbTypes::tjsonb(), Gen_concat_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbContains", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TemporalTypes::tbool(), Gen_contains_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TemporalTypes::tbool(), Gen_contains_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, TemporalTypes::tbool(), Gen_contains_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbArrayElement", {TJsonbTypes::tjsonb(), LogicalType::INTEGER, LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_array_element)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbArrayLength", {TJsonbTypes::tjsonb()}, TemporalTypes::tint(), Gen_tjsonb_array_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbDelete", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbDeleteArray", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_array)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_array)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbDeleteIndex", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbDeletePath", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TJsonbTypes::tjsonb(), Gen_tjsonb_delete_path)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbExists", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tjsonb_exists)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tjsonb_exists)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbExistsAll", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TemporalTypes::tbool(), Gen_tjsonb_exists_all)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?&", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TemporalTypes::tbool(), Gen_tjsonb_exists_all)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbExistsAny", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TemporalTypes::tbool(), Gen_tjsonb_exists_any)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?|", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR)}, TemporalTypes::tbool(), Gen_tjsonb_exists_any)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbExtractPath", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR), LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_extract_path)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbInsert", {TJsonbTypes::tjsonb(), LogicalType::LIST(LogicalType::VARCHAR), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_tjsonb_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbObjectField", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR, LogicalType::VARCHAR}, TJsonbTypes::tjsonb(), Gen_tjsonb_object_field)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPathExists", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonpath(), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tjsonb_path_exists)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPathMatch", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonpath(), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tjsonb_path_match)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPathQueryArray", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonpath(), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_tjsonb_path_query_array)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPathQueryFirst", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonpath(), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_tjsonb_path_query_first)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbPretty", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_pretty)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbStripNulls", {TJsonbTypes::tjsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_tjsonb_strip_nulls)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonbStripNulls", {TJsonbTypes::tjsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_strip_nulls_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbool", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR, LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tjsonb_to_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbool", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tjsonb_to_tbool_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR, LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_tjsonb_to_tint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_tjsonb_to_tint_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttext", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR, LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext_key)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttext", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext_key_d)); -} - -void RegisterGenerated_meos_temporal_modif(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tbigint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tbool(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tfloat(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::ttext(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TgeompointType::tgeompoint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TgeogpointType::tgeogpoint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TGeometryTypes::tgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TGeographyTypes::tgeography(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TGeographyTypes::tgeography(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {CbufferTypes::tcbuffer(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, CbufferTypes::tcbuffer(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {H3indexTypes::th3index(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, H3indexTypes::th3index(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {QuadbinTypes::tquadbin(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {S2cellTypes::ts2cell(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TJsonbTypes::tjsonb(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TPcpointTypes::tpcpoint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TPcpointTypes::tpcpoint(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TPcpatchTypes::tpcpatch(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TPcpatchTypes::tpcpatch(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {NpointTypes::tnpoint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, NpointTypes::tnpoint(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {PoseTypes::tpose(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, PoseTypes::tpose(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {PosechainTypes::tposechain(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, PosechainTypes::tposechain(), Gen_temporal_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tint(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::tint(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tbigint(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::tbigint(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tbool(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::tbool(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tfloat(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::tfloat(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::ttext(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::ttext(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TgeompointType::tgeompoint(), LogicalType::TIMESTAMP_TZ}, TgeompointType::tgeompoint(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TgeogpointType::tgeogpoint(), LogicalType::TIMESTAMP_TZ}, TgeogpointType::tgeogpoint(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TGeometryTypes::tgeometry(), LogicalType::TIMESTAMP_TZ}, TGeometryTypes::tgeometry(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TGeographyTypes::tgeography(), LogicalType::TIMESTAMP_TZ}, TGeographyTypes::tgeography(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {CbufferTypes::tcbuffer(), LogicalType::TIMESTAMP_TZ}, CbufferTypes::tcbuffer(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {H3indexTypes::th3index(), LogicalType::TIMESTAMP_TZ}, H3indexTypes::th3index(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {QuadbinTypes::tquadbin(), LogicalType::TIMESTAMP_TZ}, QuadbinTypes::tquadbin(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {S2cellTypes::ts2cell(), LogicalType::TIMESTAMP_TZ}, S2cellTypes::ts2cell(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TJsonbTypes::tjsonb(), LogicalType::TIMESTAMP_TZ}, TJsonbTypes::tjsonb(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TPcpointTypes::tpcpoint(), LogicalType::TIMESTAMP_TZ}, TPcpointTypes::tpcpoint(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TPcpatchTypes::tpcpatch(), LogicalType::TIMESTAMP_TZ}, TPcpatchTypes::tpcpatch(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {NpointTypes::tnpoint(), LogicalType::TIMESTAMP_TZ}, NpointTypes::tnpoint(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {PoseTypes::tpose(), LogicalType::TIMESTAMP_TZ}, PoseTypes::tpose(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {PosechainTypes::tposechain(), LogicalType::TIMESTAMP_TZ}, PosechainTypes::tposechain(), Gen_temporal_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::tint(), TemporalTypes::tint(), LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::tbigint(), TemporalTypes::tbigint(), LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::tbool(), TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::tfloat(), TemporalTypes::tfloat(), LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::ttext(), TemporalTypes::ttext(), LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint(), LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint(), LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry(), LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography(), LogicalType::BOOLEAN}, TGeographyTypes::tgeography(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer(), LogicalType::BOOLEAN}, CbufferTypes::tcbuffer(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {H3indexTypes::th3index(), H3indexTypes::th3index(), LogicalType::BOOLEAN}, H3indexTypes::th3index(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin(), LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell(), LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint(), LogicalType::BOOLEAN}, TPcpointTypes::tpcpoint(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch(), LogicalType::BOOLEAN}, TPcpatchTypes::tpcpatch(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {NpointTypes::tnpoint(), NpointTypes::tnpoint(), LogicalType::BOOLEAN}, NpointTypes::tnpoint(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {PoseTypes::tpose(), PoseTypes::tpose(), LogicalType::BOOLEAN}, PoseTypes::tpose(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry(), LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {PosechainTypes::tposechain(), PosechainTypes::tposechain(), LogicalType::BOOLEAN}, PosechainTypes::tposechain(), Gen_temporal_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("merge", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_temporal_merge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::tint(), TemporalTypes::tint(), LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::tbigint(), TemporalTypes::tbigint(), LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::tbool(), TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::tfloat(), TemporalTypes::tfloat(), LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::ttext(), TemporalTypes::ttext(), LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint(), LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint(), LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry(), LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography(), LogicalType::BOOLEAN}, TGeographyTypes::tgeography(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer(), LogicalType::BOOLEAN}, CbufferTypes::tcbuffer(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {H3indexTypes::th3index(), H3indexTypes::th3index(), LogicalType::BOOLEAN}, H3indexTypes::th3index(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin(), LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell(), LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint(), LogicalType::BOOLEAN}, TPcpointTypes::tpcpoint(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch(), LogicalType::BOOLEAN}, TPcpatchTypes::tpcpatch(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {NpointTypes::tnpoint(), NpointTypes::tnpoint(), LogicalType::BOOLEAN}, NpointTypes::tnpoint(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {PoseTypes::tpose(), PoseTypes::tpose(), LogicalType::BOOLEAN}, PoseTypes::tpose(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry(), LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_temporal_update)); - RegisterSerializedScalarFunction(loader, ScalarFunction("update", {PosechainTypes::tposechain(), PosechainTypes::tposechain(), LogicalType::BOOLEAN}, PosechainTypes::tposechain(), Gen_temporal_update)); -} - -void RegisterGenerated_meos_temporal_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tbool()}, LogicalType::VARCHAR, Gen_tbool_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {CbufferTypes::tcbuffer()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {CbufferTypes::tcbuffer(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TGeometryTypes::tgeometry()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TGeometryTypes::tgeometry(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TGeographyTypes::tgeography()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TGeographyTypes::tgeography(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TgeompointType::tgeompoint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TgeompointType::tgeompoint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TgeogpointType::tgeogpoint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TgeogpointType::tgeogpoint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {H3indexTypes::th3index()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {H3indexTypes::th3index(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TJsonbTypes::tjsonb()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {NpointTypes::tnpoint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {NpointTypes::tnpoint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TPcpointTypes::tpcpoint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TPcpointTypes::tpcpoint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TPcpatchTypes::tpcpatch()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TPcpatchTypes::tpcpatch(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {PoseTypes::tpose(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {PosechainTypes::tposechain()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {PosechainTypes::tposechain(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {QuadbinTypes::tquadbin()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {QuadbinTypes::tquadbin(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TrgeometryTypes::trgeometry()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TrgeometryTypes::trgeometry(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {S2cellTypes::ts2cell()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {S2cellTypes::ts2cell(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tbool()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tbool(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tbigint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tbigint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tfloat()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tfloat(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::ttext()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::ttext(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointFromHexEWKB", {LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_from_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointFromHexEWKB", {LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_from_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_temporal_from_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_temporal_from_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_temporal_from_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_from_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_temporal_from_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tfloat_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tfloat()}, LogicalType::VARCHAR, Gen_tfloat_out_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tint()}, LogicalType::VARCHAR, Gen_tint_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tbigint()}, LogicalType::VARCHAR, Gen_tbigint_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::ttext()}, LogicalType::VARCHAR, Gen_ttext_out)); -} - -void RegisterGenerated_meos_rgeo_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("endInstant", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_end_instant)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endSequence", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_end_sequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TrgeometryTypes::trgeometry()}, MobilityDuckGeometryType(), Gen_trgeometry_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("instantN", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_trgeometry_instant_n)); - RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_yaw)); - RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_pitch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_roll)); - RegisterSerializedScalarFunction(loader, ScalarFunction("sequenceN", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_trgeometry_sequence_n)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startInstant", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_start_instant)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startSequence", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_start_sequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TrgeometryTypes::trgeometry()}, MobilityDuckGeometryType(), Gen_trgeometry_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TrgeometryTypes::trgeometry()}, TgeompointType::tgeompoint(), Gen_trgeometry_centroid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("convexHull", {TrgeometryTypes::trgeometry()}, MobilityDuckGeometryType(), Gen_trgeometry_convex_hull)); - RegisterSerializedScalarFunction(loader, ScalarFunction("length", {TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_trgeometry_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cumulativeLength", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_cumulative_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("angularSpeed", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_angular_speed)); - RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_trgeometry_speed)); - RegisterSerializedScalarFunction(loader, ScalarFunction("twCentroid", {TrgeometryTypes::trgeometry()}, MobilityDuckGeometryType(), Gen_trgeometry_twcentroid)); -} - -void RegisterGenerated_meos_geo_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {H3indexTypes::th3index(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TPcpointTypes::tpcpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TPcpatchTypes::tpcpatch(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {NpointTypes::tnpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TgeompointType::tgeompoint()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TgeogpointType::tgeogpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TGeometryTypes::tgeometry()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TGeographyTypes::tgeography()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::tcbuffer()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {H3indexTypes::th3index()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {QuadbinTypes::tquadbin()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {S2cellTypes::ts2cell()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TPcpointTypes::tpcpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TPcpatchTypes::tpcpatch()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {NpointTypes::tnpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::tposechain()}, LogicalType::VARCHAR, Gen_tspatial_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {NpointTypes::tnpoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tspatial_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TgeompointType::tgeompoint()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TgeogpointType::tgeogpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TGeometryTypes::tgeometry()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TGeographyTypes::tgeography()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::tcbuffer()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {NpointTypes::tnpoint()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::tposechain()}, LogicalType::VARCHAR, Gen_tspatial_as_text_d)); -} - -void RegisterGenerated_meos_pose_dist(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {PoseTypes::tpose(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {PoseTypes::tpose(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_geo_rev)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {PoseTypes::tpose(), PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {PoseTypes::tpose(), PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::DOUBLE, Gen_nad_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::DOUBLE, Gen_nad_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::DOUBLE, Gen_nad_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::DOUBLE, Gen_nad_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachInstant", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_nai_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {PoseTypes::tpose(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tpose_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {PoseTypes::tpose(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tpose_stbox)); -} - -void RegisterGenerated_meos_posechain_base_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {PosechainTypes::posechain()}, LogicalType::UINTEGER, Gen_posechain_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {PosechainTypes::posechain(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_posechain_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_same)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_same)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_ge)); -} - -void RegisterGenerated_meos_npoint_base_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_same)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_same)); -} - -void RegisterGenerated_meos_h3_hierarchy(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToChildren", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_cell_to_children)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cell_to_parent_next)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToCenterChild", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_th3index_cell_to_center_child)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToCenterChild", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cell_to_center_child_next)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToChildPos", {H3indexTypes::th3index(), LogicalType::INTEGER}, TemporalTypes::tbigint(), Gen_th3index_cell_to_child_pos)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3ChildPosToCell", {H3indexTypes::th3index(), H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_th3index_child_pos_to_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("uncompactCells", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_uncompact_cells)); -} - -void RegisterGenerated_meos_quadbin_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_teq_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, TemporalTypes::tbool(), Gen_teq_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_teq_tquadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_tne_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, TemporalTypes::tbool(), Gen_tne_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_tne_tquadbin_tquadbin)); -} - -void RegisterGenerated_meos_geo_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_z)); +void RegisterGenerated_meos_temporal_bbox_split(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {CbufferTypes::tcbuffer()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TGeometryTypes::tgeometry()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TGeographyTypes::tgeography()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TgeompointType::tgeompoint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TgeogpointType::tgeogpoint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {H3indexTypes::th3index()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TJsonbTypes::tjsonb()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {NpointTypes::tnpoint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TPcpointTypes::tpcpoint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TPcpatchTypes::tpcpatch()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {PoseTypes::tpose()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {QuadbinTypes::tquadbin()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TrgeometryTypes::trgeometry()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {S2cellTypes::ts2cell()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::tbool()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::tint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::tbigint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::tfloat()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::ttext()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {H3indexTypes::th3index(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {NpointTypes::tnpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TPcpointTypes::tpcpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TPcpatchTypes::tpcpatch(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::tbool(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::tbigint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::ttext(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {H3indexTypes::th3index(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {NpointTypes::tnpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TPcpointTypes::tpcpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TPcpatchTypes::tpcpatch(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::tbool(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::tbigint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::ttext(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNTboxes", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_each_n_tboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNTboxes", {TemporalTypes::tbigint(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_each_n_tboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNTboxes", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_each_n_tboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNTboxes", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_n_tboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNTboxes", {TemporalTypes::tbigint(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_n_tboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNTboxes", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_n_tboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxes", {TemporalTypes::tint()}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_tboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxes", {TemporalTypes::tbigint()}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_tboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxes", {TemporalTypes::tfloat()}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_tboxes)); +} + +void RegisterGenerated_meos_setspan_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("ceil", {SetTypes::floatset()}, SetTypes::floatset(), Gen_floatset_ceil)); + RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SetTypes::floatset(), LogicalType::BOOLEAN}, SetTypes::floatset(), Gen_floatset_degrees)); + RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SetTypes::floatset()}, SetTypes::floatset(), Gen_floatset_degrees_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("floor", {SetTypes::floatset()}, SetTypes::floatset(), Gen_floatset_floor)); + RegisterSerializedScalarFunction(loader, ScalarFunction("radians", {SetTypes::floatset()}, SetTypes::floatset(), Gen_floatset_radians)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_set_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::npointset(), LogicalType::INTEGER}, SetTypes::npointset(), Gen_set_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_set_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_set_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::floatset(), LogicalType::INTEGER}, SetTypes::floatset(), Gen_set_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::cbufferset()}, SetTypes::cbufferset(), Gen_set_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::npointset()}, SetTypes::npointset(), Gen_set_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::poseset()}, SetTypes::poseset(), Gen_set_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::posechainset()}, SetTypes::posechainset(), Gen_set_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::floatset()}, SetTypes::floatset(), Gen_set_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setConcat", {LogicalType::VARCHAR, SetTypes::textset()}, SetTypes::textset(), Gen_textcat_text_textset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("||", {LogicalType::VARCHAR, SetTypes::textset()}, SetTypes::textset(), Gen_textcat_text_textset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setConcat", {SetTypes::textset(), LogicalType::VARCHAR}, SetTypes::textset(), Gen_textcat_textset_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("||", {SetTypes::textset(), LogicalType::VARCHAR}, SetTypes::textset(), Gen_textcat_textset_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("initcap", {SetTypes::textset()}, SetTypes::textset(), Gen_textset_initcap)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lower", {SetTypes::textset()}, SetTypes::textset(), Gen_textset_lower)); + RegisterSerializedScalarFunction(loader, ScalarFunction("upper", {SetTypes::textset()}, SetTypes::textset(), Gen_textset_upper)); + RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {SpanTypes::bigintspan(), LogicalType::BIGINT}, SpanTypes::bigintspan(), Gen_bigintspan_expand)); + RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {SpanTypes::floatspan(), LogicalType::DOUBLE}, SpanTypes::floatspan(), Gen_floatspan_expand)); + RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {SpanTypes::intspan(), LogicalType::INTEGER}, SpanTypes::intspan(), Gen_intspan_expand)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ceil", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_ceil)); + RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SpanTypes::floatspan(), LogicalType::BOOLEAN}, SpanTypes::floatspan(), Gen_floatspan_degrees)); + RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_degrees_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("floor", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_floor)); + RegisterSerializedScalarFunction(loader, ScalarFunction("radians", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_radians)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SpanTypes::floatspan(), LogicalType::INTEGER}, SpanTypes::floatspan(), Gen_floatspan_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ceil", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_ceil)); + RegisterSerializedScalarFunction(loader, ScalarFunction("floor", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_floor)); + RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SpansetTypes::floatspanset(), LogicalType::BOOLEAN}, SpansetTypes::floatspanset(), Gen_floatspanset_degrees)); + RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_degrees_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("radians", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_radians)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SpansetTypes::floatspanset(), LogicalType::INTEGER}, SpansetTypes::floatspanset(), Gen_floatspanset_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_round_d)); +} + +void RegisterGenerated_meos_rgeo_comp_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_trgeometry_trgeometry)); +} + +void RegisterGenerated_meos_temporal_dist(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tdistance_tfloat_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tdistance_tfloat_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TemporalTypes::tint(), LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tdistance_tint_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TemporalTypes::tint(), LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tdistance_tint_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TemporalTypes::tint(), TemporalTypes::tint()}, TemporalTypes::tint(), Gen_tdistance_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TemporalTypes::tint(), TemporalTypes::tint()}, TemporalTypes::tint(), Gen_tdistance_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tdistance_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tdistance_tnumber_tnumber)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, LogicalType::DOUBLE, Gen_nad_tfloat_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, LogicalType::DOUBLE, Gen_nad_tfloat_float)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::DOUBLE, Gen_nad_tfloat_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::DOUBLE, Gen_nad_tfloat_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tbigint(), LogicalType::BIGINT}, LogicalType::DOUBLE, Gen_nad_tbigint_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tbigint(), LogicalType::BIGINT}, LogicalType::DOUBLE, Gen_nad_tbigint_bigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::DOUBLE, Gen_nad_tbigint_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::DOUBLE, Gen_nad_tbigint_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::DOUBLE, Gen_nad_tint_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::DOUBLE, Gen_nad_tint_int)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::DOUBLE, Gen_nad_tint_tint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::DOUBLE, Gen_nad_tint_tint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tfloat_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tfloat_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tbigint(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tbigint_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tbigint(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tbigint_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tint_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tint_tbox)); +} + +void RegisterGenerated_meos_setspan_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tstzset", {SetTypes::dateset()}, SetTypes::tstzset(), Gen_dateset_to_tstzset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SetTypes::dateset()}, SetTypes::tstzset(), Gen_dateset_to_tstzset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("intset", {SetTypes::floatset()}, SetTypes::intset(), Gen_floatset_to_intset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SetTypes::floatset()}, SetTypes::intset(), Gen_floatset_to_intset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("floatset", {SetTypes::intset()}, SetTypes::floatset(), Gen_intset_to_floatset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SetTypes::intset()}, SetTypes::floatset(), Gen_intset_to_floatset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("dateset", {SetTypes::tstzset()}, SetTypes::dateset(), Gen_tstzset_to_dateset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SetTypes::tstzset()}, SetTypes::dateset(), Gen_tstzset_to_dateset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tstzspan", {SpanTypes::datespan()}, SpanTypes::tstzspan(), Gen_datespan_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpanTypes::datespan()}, SpanTypes::tstzspan(), Gen_datespan_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("intspan", {SpanTypes::floatspan()}, SpanTypes::intspan(), Gen_floatspan_to_intspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpanTypes::floatspan()}, SpanTypes::intspan(), Gen_floatspan_to_intspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("floatspan", {SpanTypes::intspan()}, SpanTypes::floatspan(), Gen_intspan_to_floatspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpanTypes::intspan()}, SpanTypes::floatspan(), Gen_intspan_to_floatspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("datespan", {SpanTypes::tstzspan()}, SpanTypes::datespan(), Gen_tstzspan_to_datespan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpanTypes::tstzspan()}, SpanTypes::datespan(), Gen_tstzspan_to_datespan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tstzspanset", {SpansetTypes::datespanset()}, SpansetTypes::tstzspanset(), Gen_datespanset_to_tstzspanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpansetTypes::datespanset()}, SpansetTypes::tstzspanset(), Gen_datespanset_to_tstzspanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("intspanset", {SpansetTypes::floatspanset()}, SpansetTypes::intspanset(), Gen_floatspanset_to_intspanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpansetTypes::floatspanset()}, SpansetTypes::intspanset(), Gen_floatspanset_to_intspanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("floatspanset", {SpansetTypes::intspanset()}, SpansetTypes::floatspanset(), Gen_intspanset_to_floatspanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpansetTypes::intspanset()}, SpansetTypes::floatspanset(), Gen_intspanset_to_floatspanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("datespanset", {SpansetTypes::tstzspanset()}, SpansetTypes::datespanset(), Gen_tstzspanset_to_datespanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpansetTypes::tstzspanset()}, SpansetTypes::datespanset(), Gen_tstzspanset_to_datespanset)); +} + +void RegisterGenerated_meos_pose_comp_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_always_eq_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_always_eq_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_always_eq_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_always_eq_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_always_ne_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_always_ne_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_always_ne_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_always_ne_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_ever_eq_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_ever_eq_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_ever_eq_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_ever_eq_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_ever_ne_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_ever_ne_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_ever_ne_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_ever_ne_tpose_tpose)); +} + +void RegisterGenerated_meos_rgeo_dist(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_tpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_tpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_nad_trgeometry_tpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_nad_trgeometry_tpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_nad_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_nad_trgeometry_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TrgeometryTypes::trgeometry(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_trgeometry_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TrgeometryTypes::trgeometry(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_trgeometry_stbox)); +} + +void RegisterGenerated_meos_h3_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TemporalTypes::tbigint()}, H3indexTypes::th3index(), Gen_tbigint_to_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, H3indexTypes::th3index(), Gen_tbigint_to_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToCover", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3index_cell_to_cover)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index()}, StboxType::stbox(), Gen_h3index_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::h3index()}, StboxType::stbox(), Gen_h3index_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index(), LogicalType::TIMESTAMP_TZ}, StboxType::stbox(), Gen_h3index_timestamptz_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index(), SpanTypes::tstzspan()}, StboxType::stbox(), Gen_h3index_tstzspan_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("coverCells", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3indexset_cover_cells)); +} + +void RegisterGenerated_meos_geo_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeography", {TgeogpointType::tgeogpoint()}, TGeographyTypes::tgeography(), Gen_tgeogpoint_to_tgeography)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeogpointType::tgeogpoint()}, TGeographyTypes::tgeography(), Gen_tgeogpoint_to_tgeography)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpoint", {TGeographyTypes::tgeography()}, TgeogpointType::tgeogpoint(), Gen_tgeography_to_tgeogpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeographyTypes::tgeography()}, TgeogpointType::tgeogpoint(), Gen_tgeography_to_tgeogpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TGeographyTypes::tgeography()}, TGeometryTypes::tgeometry(), Gen_tgeography_to_tgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeographyTypes::tgeography()}, TGeometryTypes::tgeometry(), Gen_tgeography_to_tgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeography", {TGeometryTypes::tgeometry()}, TGeographyTypes::tgeography(), Gen_tgeometry_to_tgeography)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, TGeographyTypes::tgeography(), Gen_tgeometry_to_tgeography)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {TGeometryTypes::tgeometry()}, TgeompointType::tgeompoint(), Gen_tgeometry_to_tgeompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, TgeompointType::tgeompoint(), Gen_tgeometry_to_tgeompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TgeompointType::tgeompoint()}, TGeometryTypes::tgeometry(), Gen_tgeompoint_to_tgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeompointType::tgeompoint()}, TGeometryTypes::tgeometry(), Gen_tgeompoint_to_tgeometry)); +} + +void RegisterGenerated_meos_rgeo_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_trgeometry_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TrgeometryTypes::trgeometry(), Gen_trgeometry_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TrgeometryTypes::trgeometry(), Gen_trgeometry_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TrgeometryTypes::trgeometry(), Gen_trgeometry_rotate_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("trgeometryInst", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_as_tinstant)); +} + +void RegisterGenerated_meos_box_bbox_topo(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tbox_tbox)); } void RegisterGenerated_meos_pointcloud_restrict(ExtensionLoader &loader) { @@ -4852,10 +4128,11 @@ void RegisterGenerated_meos_rgeo_inout(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TrgeometryTypes::trgeometry()}, LogicalType::VARCHAR, Gen_trgeometry_as_ewkt_d)); } -void RegisterGenerated_meos_cbuffer_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_expand)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_rotate_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("translate", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE, LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_translate)); +void RegisterGenerated_meos_pointcloud_base_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {TPcpointTypes::pcpoint()}, LogicalType::UINTEGER, Gen_pcpoint_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {TPcpatchTypes::pcpatch()}, LogicalType::UINTEGER, Gen_pcpatch_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {TPcpointTypes::pcpoint(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_pcpoint_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {TPcpatchTypes::pcpatch(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_pcpatch_hash_extended)); } void RegisterGenerated_meos_h3_base_accessor(ExtensionLoader &loader) { @@ -4864,27 +4141,26 @@ void RegisterGenerated_meos_h3_base_accessor(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("isValidVertex", {H3indexTypes::h3index()}, LogicalType::BOOLEAN, Gen_h3_is_valid_vertex)); } -void RegisterGenerated_meos_pose_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tpose", {PoseTypes::tpose(), PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_to_tpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_to_tpoint)); +void RegisterGenerated_meos_h3_base_latlng(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {H3indexTypes::h3index()}, MobilityDuckGeometryType(), Gen_h3index_cell_to_point)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {H3indexTypes::h3index()}, MobilityDuckGeometryType(), Gen_h3index_cell_to_boundary)); } -void RegisterGenerated_meos_geo_box_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {StboxType::stbox(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_stbox_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {StboxType::stbox()}, LogicalType::VARCHAR, Gen_stbox_out_d)); +void RegisterGenerated_meos_npoint_base_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::npoint()}, LogicalType::INTEGER, Gen_npoint_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::nsegment()}, LogicalType::INTEGER, Gen_nsegment_srid)); } -void RegisterGenerated_meos_npoint_set_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("routes", {SetTypes::npointset()}, SetTypes::bigintset(), Gen_npointset_routes)); +void RegisterGenerated_meos_posechain_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("numPoses", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tposechain_num_poses)); } -void RegisterGenerated_meos_h3_set_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("set", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3index_to_set)); +void RegisterGenerated_meos_h3_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("h3indexFromHexWKB", {LogicalType::VARCHAR}, H3indexTypes::h3index(), Gen_h3index_from_hexwkb)); } -void RegisterGenerated_meos_h3_base_inspection(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {H3indexTypes::h3index()}, LogicalType::UINTEGER, Gen_h3index_get_resolution)); +void RegisterGenerated_meos_h3_base_metrics(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {H3indexTypes::h3index()}, LogicalType::DOUBLE, Gen_h3index_cell_area)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_3.cpp b/src/generated/generated_temporal_udfs_3.cpp index d1158455..44a2c9fe 100644 --- a/src/generated/generated_temporal_udfs_3.cpp +++ b/src/generated/generated_temporal_udfs_3.cpp @@ -2681,916 +2681,832 @@ static void Gen_adwithin_trgeometry_trgeometry(DataChunk &args, ExpressionState } -// ===== @ingroup meos_rgeo_restrict ===== -static void Gen_trgeometry_after_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_modif ===== +static void Gen_temporal_delete_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), [&](string_t in, timestamp_tz_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_after_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); + Temporal *r = temporal_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_after_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_delete_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_after_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); + Temporal *r = temporal_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_before_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_insert(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, timestamp_tz_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_before_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_trgeometry_before_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_before_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_trgeometry_at_geom(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = trgeometry_at_geom(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_trgeometry_minus_geom(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = trgeometry_minus_geom(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_trgeometry_at_value(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = trgeometry_at_value(t, a2p); - free(a2p); free(t); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in1, string_t in2, bool a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = temporal_insert(t1, t2, a2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_minus_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_merge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = trgeometry_minus_value(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_trgeometry_at_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_at_timestamptz(t, DuckDBToMeosTimestamp(a2).value); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_trgeometry_minus_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_minus_timestamptz(t, DuckDBToMeosTimestamp(a2).value); - free(t); + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = temporal_merge(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_at_values(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_update(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Set *cc = BlobToSet(b); - Temporal *r = trgeometry_at_values(t, cc); - free(t); free(cc); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in1, string_t in2, bool a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = temporal_update(t1, t2, a2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_minus_values(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Set *cc = BlobToSet(b); - Temporal *r = trgeometry_minus_values(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); - }); -} -static void Gen_trgeometry_at_tstzset(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_setspan_bbox_split ===== +static void Gen_set_spans(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Set *cc = BlobToSet(b); - Temporal *r = trgeometry_at_tstzset(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Set *in = BlobToSet(blob); + int count = 0; + Span * arr = set_spans(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_trgeometry_minus_tstzset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_split_each_n_spans(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Set *cc = BlobToSet(b); - Temporal *r = trgeometry_minus_tstzset(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Set *in = BlobToSet(blob); + int count = 0; + Span * arr = set_split_each_n_spans(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_trgeometry_at_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_split_n_spans(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - Temporal *r = trgeometry_at_tstzspan(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Set *in = BlobToSet(blob); + int count = 0; + Span * arr = set_split_n_spans(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_trgeometry_minus_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_spans(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - Temporal *r = trgeometry_minus_tstzspan(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + SpanSet *in = BlobToSpanSet(blob); + int count = 0; + Span * arr = spanset_spans(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_trgeometry_at_tstzspanset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_split_each_n_spans(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - SpanSet *cc = BlobToSpanSet(b); - Temporal *r = trgeometry_at_tstzspanset(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + SpanSet *in = BlobToSpanSet(blob); + int count = 0; + Span * arr = spanset_split_each_n_spans(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_trgeometry_minus_tstzspanset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_split_n_spans(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - SpanSet *cc = BlobToSpanSet(b); - Temporal *r = trgeometry_minus_tstzspanset(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + SpanSet *in = BlobToSpanSet(blob); + int count = 0; + Span * arr = spanset_split_n_spans(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_trgeometry_at_elevation(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - Temporal *r = trgeometry_at_elevation(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); - }); -} -static void Gen_trgeometry_minus_elevation(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_comp_ever ===== +static void Gen_ever_eq_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - Temporal *r = trgeometry_minus_elevation(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in) { + Temporal *t = BlobToTemporal(in); + int32_t r = ever_eq_quadbin_tquadbin((uint64_t) a1, t); + free(t); + return (r != 0); }); } - -// ===== @ingroup meos_pointcloud_comp_ever ===== -static void Gen_ever_eq_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - int32_t r = ever_eq_tpcpoint_pcpoint(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + int32_t r = ever_eq_tquadbin_quadbin(t, (uint64_t) a2); + free(t); return (r != 0); }); } -static void Gen_ever_eq_tpcpoint_tpcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_tpcpoint_tpcpoint(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in) { + Temporal *t = BlobToTemporal(in); + int32_t r = ever_ne_quadbin_tquadbin((uint64_t) a1, t); + free(t); return (r != 0); }); } -static void Gen_ever_ne_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - int32_t r = ever_ne_tpcpoint_pcpoint(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + int32_t r = ever_ne_tquadbin_quadbin(t, (uint64_t) a2); + free(t); return (r != 0); }); } -static void Gen_ever_ne_tpcpoint_tpcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_tpcpoint_tpcpoint(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in) { + Temporal *t = BlobToTemporal(in); + int32_t r = always_eq_quadbin_tquadbin((uint64_t) a1, t); + free(t); return (r != 0); }); } -static void Gen_always_eq_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - int32_t r = always_eq_tpcpoint_pcpoint(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + int32_t r = always_eq_tquadbin_quadbin(t, (uint64_t) a2); + free(t); return (r != 0); }); } -static void Gen_always_eq_tpcpoint_tpcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_tpcpoint_tpcpoint(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in) { + Temporal *t = BlobToTemporal(in); + int32_t r = always_ne_quadbin_tquadbin((uint64_t) a1, t); + free(t); return (r != 0); }); } -static void Gen_always_ne_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - int32_t r = always_ne_tpcpoint_pcpoint(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + int32_t r = always_ne_tquadbin_quadbin(t, (uint64_t) a2); + free(t); return (r != 0); }); } -static void Gen_always_ne_tpcpoint_tpcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_tpcpoint_tpcpoint(t1, t2); + int32_t r = ever_eq_tquadbin_tquadbin(t1, t2); free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_eq_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - int32_t r = ever_eq_tpcpatch_pcpatch(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); - }); -} - -static void Gen_ever_eq_tpcpatch_tpcpatch(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_tpcpatch_tpcpatch(t1, t2); + int32_t r = ever_ne_tquadbin_tquadbin(t1, t2); free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_ne_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - int32_t r = ever_ne_tpcpatch_pcpatch(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_eq_tquadbin_tquadbin(t1, t2); + free(t1); free(t2); return (r != 0); }); } -static void Gen_ever_ne_tpcpatch_tpcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_tpcpatch_tpcpatch(t1, t2); + int32_t r = always_ne_tquadbin_tquadbin(t1, t2); free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_eq_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_s2cell_comp_ever ===== +static void Gen_ever_eq_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in) { Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - int32_t r = always_eq_tpcpatch_pcpatch(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + int32_t r = ever_eq_s2cell_ts2cell((uint64_t) a1, t); + free(t); return (r != 0); }); } -static void Gen_always_eq_tpcpatch_tpcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_tpcpatch_tpcpatch(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { + Temporal *t = BlobToTemporal(in); + int32_t r = ever_eq_ts2cell_s2cell(t, (uint64_t) a2); + free(t); return (r != 0); }); } -static void Gen_always_ne_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in) { Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - int32_t r = always_ne_tpcpatch_pcpatch(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + int32_t r = ever_ne_s2cell_ts2cell((uint64_t) a1, t); + free(t); return (r != 0); }); } -static void Gen_always_ne_tpcpatch_tpcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_tpcpatch_tpcpatch(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { + Temporal *t = BlobToTemporal(in); + int32_t r = ever_ne_ts2cell_s2cell(t, (uint64_t) a2); + free(t); return (r != 0); }); } - -// ===== @ingroup meos_temporal_dist ===== -static void Gen_tdistance_tfloat_float(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in) { Temporal *t = BlobToTemporal(in); - Temporal *r = tdistance_tfloat_float(t, a2); + int32_t r = always_eq_s2cell_ts2cell((uint64_t) a1, t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return (r != 0); }); } -static void Gen_tdistance_tint_int(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { Temporal *t = BlobToTemporal(in); - Temporal *r = tdistance_tint_int(t, a2); + int32_t r = always_eq_ts2cell_s2cell(t, (uint64_t) a2); free(t); - return TemporalToBlobN(result, r, mask, idx); + return (r != 0); }); } -static void Gen_tdistance_tnumber_tnumber(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tdistance_tnumber_tnumber(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in) { + Temporal *t = BlobToTemporal(in); + int32_t r = always_ne_s2cell_ts2cell((uint64_t) a1, t); + free(t); + return (r != 0); }); } -static void Gen_nad_tfloat_float(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2) { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { Temporal *t = BlobToTemporal(in); - double r = nad_tfloat_float(t, a2); + int32_t r = always_ne_ts2cell_s2cell(t, (uint64_t) a2); free(t); - return (double) r; + return (r != 0); }); } -static void Gen_nad_tfloat_tfloat(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2) { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - double r = nad_tfloat_tfloat(t1, t2); + int32_t r = ever_eq_ts2cell_ts2cell(t1, t2); free(t1); free(t2); - return (double) r; - }); -} - -static void Gen_nad_tbigint_bigint(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int64_t r = nad_tbigint_bigint(t, a2); - free(t); - return (double) r; + return (r != 0); }); } -static void Gen_nad_tbigint_tbigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2) { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int64_t r = nad_tbigint_tbigint(t1, t2); + int32_t r = ever_ne_ts2cell_ts2cell(t1, t2); free(t1); free(t2); - return (double) r; - }); -} - -static void Gen_nad_tint_int(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = nad_tint_int(t, a2); - free(t); - return (double) r; + return (r != 0); }); } -static void Gen_nad_tint_tint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2) { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = nad_tint_tint(t1, t2); + int32_t r = always_eq_ts2cell_ts2cell(t1, t2); free(t1); free(t2); - return (double) r; - }); -} - -static void Gen_nad_tfloat_tbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { - Temporal *t = BlobToTemporal(a); - TBox *bx = BlobToTbox(b); - double r = nad_tfloat_tbox(t, bx); - free(t); free(bx); - if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } - return (double) r; - }); -} - -static void Gen_nad_tbigint_tbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { - Temporal *t = BlobToTemporal(a); - TBox *bx = BlobToTbox(b); - int64_t r = nad_tbigint_tbox(t, bx); - free(t); free(bx); - if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } - return (double) r; + return (r != 0); }); } -static void Gen_nad_tint_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { - Temporal *t = BlobToTemporal(a); - TBox *bx = BlobToTbox(b); - int32_t r = nad_tint_tbox(t, bx); - free(t); free(bx); - if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } - return (double) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2) { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_ne_ts2cell_ts2cell(t1, t2); + free(t1); free(t2); + return (r != 0); }); } -// ===== @ingroup meos_setspan_conversion ===== -static void Gen_dateset_to_tstzset(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_accessor ===== +static void Gen_tgeo_centroid(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 = dateset_to_tstzset(s); - free(s); - return SetToBlobN(result, r, mask, idx); + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeo_centroid(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatset_to_intset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpoint_angular_difference(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 = floatset_to_intset(s); - free(s); - return SetToBlobN(result, r, mask, idx); + Temporal *t = BlobToTemporal(in); + Temporal *r = tpoint_angular_difference(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_intset_to_floatset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpoint_azimuth(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 = intset_to_floatset(s); - free(s); - return SetToBlobN(result, r, mask, idx); + Temporal *t = BlobToTemporal(in); + Temporal *r = tpoint_azimuth(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tstzset_to_dateset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpoint_cumulative_length(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 = tstzset_to_dateset(s); - free(s); - return SetToBlobN(result, r, mask, idx); + Temporal *t = BlobToTemporal(in); + Temporal *r = tpoint_cumulative_length(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_datespan_to_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpoint_get_x(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = datespan_to_tstzspan(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tpoint_get_x(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspan_to_intspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpoint_get_y(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = floatspan_to_intspan(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tpoint_get_y(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_intspan_to_floatspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpoint_get_z(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = intspan_to_floatspan(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tpoint_get_z(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tstzspan_to_datespan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpoint_is_simple(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = tstzspan_to_datespan(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + bool r = tpoint_is_simple(t); + free(t); + return (bool) r; }); } -static void Gen_datespanset_to_tstzspanset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpoint_length(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = datespanset_to_tstzspanset(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Temporal *t = BlobToTemporal(in); + double r = tpoint_length(t); + free(t); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -static void Gen_floatspanset_to_intspanset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpoint_speed(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = floatspanset_to_intspanset(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tpoint_speed(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_intspanset_to_floatspanset(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_cellindex ===== +static void Gen_tcellindex_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = intspanset_to_floatspanset(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_get_resolution(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tstzspanset_to_datespanset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_is_valid_cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = tstzspanset_to_datespanset(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_is_valid_cell(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_pose_comp_ever ===== -static void Gen_always_eq_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - int32_t r = always_eq_tpose_pose(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + Temporal *r = tcellindex_cell_to_parent(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_always_eq_tpose_tpose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_cell_to_point(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_tpose_tpose(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_cell_to_point(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_always_ne_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_cell_to_boundary(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - int32_t r = always_ne_tpose_pose(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + Temporal *r = tcellindex_cell_to_boundary(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_always_ne_tpose_tpose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_cell_area(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_tpose_tpose(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_cell_area(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_eq_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tquadbin_cell_to_quadkey(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - int32_t r = ever_eq_tpose_pose(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + Temporal *r = tquadbin_cell_to_quadkey(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_eq_tpose_tpose(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_tpose_tpose(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); - }); -} -static void Gen_ever_ne_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_box_comp ===== +static void Gen_tbox_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - int32_t r = ever_ne_tpose_pose(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TBox *s = BlobToTbox(in); + uint32_t r = tbox_hash(s); + free(s); + return r; }); } -static void Gen_ever_ne_tpose_tpose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_tpose_tpose(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + TBox *s = BlobToTbox(in); + uint64_t r = tbox_hash_extended(s, a2); + free(s); + return r; }); } - -// ===== @ingroup meos_s2cell_accessor ===== -static void Gen_s2cell_edge_neighbors_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = s2cell_edge_neighbors_set(static_cast(a0)); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_s2cell_cell_to_children_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = s2cell_cell_to_children_set(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_s2cell_cell_to_cover(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = s2cell_cell_to_cover(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_ts2cell_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) -> int64_t { - Temporal *t = BlobToTemporal(in); - int64_t r = (int64_t) ts2cell_start_value(t); - free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_le(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_ts2cell_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) -> int64_t { - Temporal *t = BlobToTemporal(in); - int64_t r = (int64_t) ts2cell_end_value(t); - free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_lt(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_ts2cell_value_n(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> int64_t { - Temporal *t = BlobToTemporal(in); - uint64_t v; - bool ok = ts2cell_value_n(t, a2, &v); - free(t); - if (!ok) { mask.SetInvalid(idx); return int64_t(); } - return (int64_t) v; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_ne(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_ts2cell_values(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_rgeo_bbox_split ===== +static void Gen_trgeometry_stboxes(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); auto &in_vec = args.data[0]; idx_t row_count = args.size(); @@ -3602,198 +3518,159 @@ static void Gen_ts2cell_values(DataChunk &args, ExpressionState &, Vector &resul if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } string_t blob = FlatVector::GetData(in_vec)[i]; Temporal *in = BlobToTemporal(blob); - int count = 0; - uint64_t * arr = ts2cell_values(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - -static void Gen_s2cellset_compact_cells(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 = s2cellset_compact_cells(s); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_s2cellset_uncompact_cells(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = s2cellset_uncompact_cells(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_s2cellset_cover_cells(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = s2cellset_cover_cells(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - - -// ===== @ingroup meos_h3_traversal ===== -static void Gen_h3_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_grid_disk(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_h3_grid_ring(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_grid_ring(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_h3_grid_path_cells(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_grid_path_cells(static_cast(a0), static_cast(a1)); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_th3index_grid_distance(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_grid_distance(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_th3index_cell_to_local_ij(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_cell_to_local_ij(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); + int count = 0; + STBox * arr = trgeometry_stboxes(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_th3index_local_ij_to_cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_split_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_local_ij_to_cell(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + STBox * arr = trgeometry_split_n_stboxes(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_h3indexset_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_split_each_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = h3indexset_grid_disk(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + STBox * arr = trgeometry_split_each_n_stboxes(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -// ===== @ingroup meos_geo_conversion ===== -static void Gen_tgeogpoint_to_tgeography(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_comp_temp ===== +static void Gen_teq_h3index_th3index(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeogpoint_to_tgeography(t); + Temporal *r = teq_h3index_th3index((uint64_t) a1, t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeography_to_tgeogpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_th3index_h3index(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeography_to_tgeogpoint(t); + Temporal *r = teq_th3index_h3index(t, (uint64_t) a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeography_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_th3index_th3index(DataChunk &args, ExpressionState &, 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); - Temporal *r = tgeography_to_tgeometry(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = teq_th3index_th3index(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeometry_to_tgeography(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_h3index_th3index(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeometry_to_tgeography(t); + Temporal *r = tne_h3index_th3index((uint64_t) a1, t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeometry_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_th3index_h3index(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeometry_to_tgeompoint(t); + Temporal *r = tne_th3index_h3index(t, (uint64_t) a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_th3index_th3index(DataChunk &args, ExpressionState &, 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); - Temporal *r = tgeompoint_to_tgeometry(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tne_th3index_th3index(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } @@ -3869,68 +3746,6 @@ static void Gen_tpose_rotate_z(DataChunk &args, ExpressionState &, Vector &resul } -// ===== @ingroup meos_geo_box_topo ===== -static void Gen_adjacent_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = adjacent_stbox_stbox(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_contained_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = contained_stbox_stbox(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_contains_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = contains_stbox_stbox(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_overlaps_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = overlaps_stbox_stbox(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_same_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = same_stbox_stbox(s1, s2); - free(s1); free(s2); - return r; - }); -} - - // ===== @ingroup meos_h3_vertex ===== static void Gen_h3_cell_to_vertexes(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); @@ -3975,171 +3790,215 @@ static void Gen_th3index_is_valid_vertex(DataChunk &args, ExpressionState &, Vec } -// ===== @ingroup meos_pointcloud_accessor ===== -static void Gen_tpcpoint_start_value(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_inspection ===== +static void Gen_h3_get_icosahedron_faces(DataChunk &args, ExpressionState &, 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); - Pcpoint * r = tpcpoint_start_value(t); - free(t); - return PcpointToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_get_icosahedron_faces(static_cast(a0)); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_tpcpoint_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_get_base_cell_number(DataChunk &args, ExpressionState &, 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); - Pcpoint * r = tpcpoint_end_value(t); + Temporal *r = th3index_get_base_cell_number(t); free(t); - return PcpointToBlobN(result, r, mask, idx); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcpatch_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_is_res_class_iii(DataChunk &args, ExpressionState &, 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); - Pcpatch * r = tpcpatch_start_value(t); + Temporal *r = th3index_is_res_class_iii(t); free(t); - return PcpatchToBlobN(result, r, mask, idx); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcpatch_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_is_pentagon(DataChunk &args, ExpressionState &, 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); - Pcpatch * r = tpcpatch_end_value(t); + Temporal *r = th3index_is_pentagon(t); free(t); - return PcpatchToBlobN(result, r, mask, idx); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_temporal_spatial_rel_ever ===== -static void Gen_atouches_tpoint_geo(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_npoint_base_inout ===== +static void Gen_npoint_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = atouches_tpoint_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Npoint *s = BlobToNpoint(a); + char *r = npoint_as_ewkt(s, a2); + free(s); + return TakeCString(result, r); }); } -static void Gen_etouches_tpoint_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = etouches_tpoint_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Npoint *s = BlobToNpoint(a); + char *r = npoint_as_ewkt(s, 15); + free(s); + return TakeCString(result, r); + }); +} + +static void Gen_npoint_as_text(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Npoint *s = BlobToNpoint(a); + char *r = npoint_as_text(s, a2); + free(s); + return TakeCString(result, r); + }); +} + +static void Gen_npoint_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Npoint *s = BlobToNpoint(a); + char *r = npoint_as_text(s, 15); + free(s); + return TakeCString(result, r); }); } -// ===== @ingroup meos_internal_temporal_inout ===== -static void Gen_temporal_from_mfjson(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_npoint_conversion ===== +static void Gen_tgeompoint_to_tnpoint(DataChunk &args, ExpressionState &, 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); + Temporal *r = tgeompoint_to_tnpoint(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tnpoint_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - MeosType temptype = TemporalHelpers::GetTemptypeFromAlias(result.GetType().GetAlias().c_str()); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *r = temporal_from_mfjson(in.GetString().c_str(), temptype); + Temporal *t = BlobToTemporal(in); + Temporal *r = tnpoint_to_tgeompoint(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_comp_temp ===== -static void Gen_teq_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_comp_temp ===== +static void Gen_teq_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = teq_tpose_pose(t, a2p); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = teq_tcbuffer_cbuffer(t, a2p); free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = tne_tpose_pose(t, a2p); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = tne_tcbuffer_cbuffer(t, a2p); free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_npoint_base_srid ===== -static void Gen_npoint_srid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_inout ===== +static void Gen_tposechain_as_geopose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Npoint *v = BlobToNpoint(in); - int32_t r = npoint_srid(v); - free(v); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2) { + Temporal *t = BlobToTemporal(in); + char * r = tposechain_as_geopose(t, a2); + free(t); + return TakeCString(result, r); }); } -static void Gen_nsegment_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tposechain_as_geopose_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), + UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Nsegment *v = BlobToNsegment(in); - int32_t r = nsegment_srid(v); - free(v); - return r; + Temporal *t = BlobToTemporal(in); + char * r = tposechain_as_geopose(t, -1); + free(t); + return TakeCString(result, r); }); } -// ===== @ingroup meos_posechain_conversion ===== -static void Gen_tposechain_to_tpose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_box_inout ===== +static void Gen_tbox_out(DataChunk &args, ExpressionState &, 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); - Temporal *r = tposechain_to_tpose(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + TBox *s = BlobToTbox(a); + char *r = tbox_out(s, a2); + free(s); + return TakeCString(result, r); + }); +} + +static void Gen_tbox_out_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + TBox *s = BlobToTbox(a); + char *r = tbox_out(s, 15); + free(s); + return TakeCString(result, r); }); } -// ===== @ingroup meos_quadbin_inout ===== -static void Gen_tquadbin_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_set_inout ===== +static void Gen_quadbinset_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = tquadbin_out(t); - free(t); + Set *s = BlobToSet(in); + char * r = quadbinset_out(s); + free(s); + return TakeCString(result, r); + }); +} + + +// ===== @ingroup meos_s2cell_set_inout ===== +static void Gen_s2cellset_out(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + char * r = s2cellset_out(s); + free(s); return TakeCString(result, r); }); } @@ -4610,177 +4469,253 @@ void RegisterGenerated_meos_rgeo_rel_ever(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("aDwithin", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, LogicalType::BOOLEAN, Gen_adwithin_trgeometry_trgeometry)); } -void RegisterGenerated_meos_rgeo_restrict(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("afterTimestamp", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_trgeometry_after_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("afterTimestamp", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_after_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("beforeTimestamp", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_trgeometry_before_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("beforeTimestamp", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_before_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_geom)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_geom)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TrgeometryTypes::trgeometry(), PoseTypes::pose()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TrgeometryTypes::trgeometry(), PoseTypes::pose()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atValues", {TrgeometryTypes::trgeometry(), SetTypes::poseset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_values)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValues", {TrgeometryTypes::trgeometry(), SetTypes::poseset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_values)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atTime", {TrgeometryTypes::trgeometry(), SetTypes::tstzset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_tstzset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusTime", {TrgeometryTypes::trgeometry(), SetTypes::tstzset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_tstzset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atTime", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusTime", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atTime", {TrgeometryTypes::trgeometry(), SpansetTypes::tstzspanset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_tstzspanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusTime", {TrgeometryTypes::trgeometry(), SpansetTypes::tstzspanset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_tstzspanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atElevation", {TrgeometryTypes::trgeometry(), SpanTypes::floatspan()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_elevation)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusElevation", {TrgeometryTypes::trgeometry(), SpanTypes::floatspan()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_elevation)); -} - -void RegisterGenerated_meos_pointcloud_comp_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpoint_tpcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpoint_tpcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpoint_tpcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpoint_tpcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpoint_tpcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpoint_tpcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpoint_tpcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpoint_tpcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpatch_tpcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpatch_tpcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpatch_tpcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpatch_tpcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpatch_tpcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpatch_tpcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpatch_tpcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpatch_tpcpatch)); -} - -void RegisterGenerated_meos_temporal_dist(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tdistance_tfloat_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tdistance_tfloat_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TemporalTypes::tint(), LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tdistance_tint_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TemporalTypes::tint(), LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tdistance_tint_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TemporalTypes::tint(), TemporalTypes::tint()}, TemporalTypes::tint(), Gen_tdistance_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TemporalTypes::tint(), TemporalTypes::tint()}, TemporalTypes::tint(), Gen_tdistance_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tdistance_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tdistance_tnumber_tnumber)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, LogicalType::DOUBLE, Gen_nad_tfloat_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, LogicalType::DOUBLE, Gen_nad_tfloat_float)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::DOUBLE, Gen_nad_tfloat_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tfloat(), TemporalTypes::tfloat()}, LogicalType::DOUBLE, Gen_nad_tfloat_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tbigint(), LogicalType::BIGINT}, LogicalType::DOUBLE, Gen_nad_tbigint_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tbigint(), LogicalType::BIGINT}, LogicalType::DOUBLE, Gen_nad_tbigint_bigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::DOUBLE, Gen_nad_tbigint_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tbigint(), TemporalTypes::tbigint()}, LogicalType::DOUBLE, Gen_nad_tbigint_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::DOUBLE, Gen_nad_tint_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::DOUBLE, Gen_nad_tint_int)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::DOUBLE, Gen_nad_tint_tint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tint(), TemporalTypes::tint()}, LogicalType::DOUBLE, Gen_nad_tint_tint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tfloat_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tfloat(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tfloat_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tbigint(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tbigint_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tbigint(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tbigint_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tint_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TemporalTypes::tint(), TboxType::tbox()}, LogicalType::DOUBLE, Gen_nad_tint_tbox)); -} - -void RegisterGenerated_meos_setspan_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tstzset", {SetTypes::dateset()}, SetTypes::tstzset(), Gen_dateset_to_tstzset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SetTypes::dateset()}, SetTypes::tstzset(), Gen_dateset_to_tstzset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("intset", {SetTypes::floatset()}, SetTypes::intset(), Gen_floatset_to_intset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SetTypes::floatset()}, SetTypes::intset(), Gen_floatset_to_intset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("floatset", {SetTypes::intset()}, SetTypes::floatset(), Gen_intset_to_floatset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SetTypes::intset()}, SetTypes::floatset(), Gen_intset_to_floatset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("dateset", {SetTypes::tstzset()}, SetTypes::dateset(), Gen_tstzset_to_dateset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SetTypes::tstzset()}, SetTypes::dateset(), Gen_tstzset_to_dateset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tstzspan", {SpanTypes::datespan()}, SpanTypes::tstzspan(), Gen_datespan_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpanTypes::datespan()}, SpanTypes::tstzspan(), Gen_datespan_to_tstzspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("intspan", {SpanTypes::floatspan()}, SpanTypes::intspan(), Gen_floatspan_to_intspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpanTypes::floatspan()}, SpanTypes::intspan(), Gen_floatspan_to_intspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("floatspan", {SpanTypes::intspan()}, SpanTypes::floatspan(), Gen_intspan_to_floatspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpanTypes::intspan()}, SpanTypes::floatspan(), Gen_intspan_to_floatspan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("datespan", {SpanTypes::tstzspan()}, SpanTypes::datespan(), Gen_tstzspan_to_datespan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpanTypes::tstzspan()}, SpanTypes::datespan(), Gen_tstzspan_to_datespan)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tstzspanset", {SpansetTypes::datespanset()}, SpansetTypes::tstzspanset(), Gen_datespanset_to_tstzspanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpansetTypes::datespanset()}, SpansetTypes::tstzspanset(), Gen_datespanset_to_tstzspanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("intspanset", {SpansetTypes::floatspanset()}, SpansetTypes::intspanset(), Gen_floatspanset_to_intspanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpansetTypes::floatspanset()}, SpansetTypes::intspanset(), Gen_floatspanset_to_intspanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("floatspanset", {SpansetTypes::intspanset()}, SpansetTypes::floatspanset(), Gen_intspanset_to_floatspanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpansetTypes::intspanset()}, SpansetTypes::floatspanset(), Gen_intspanset_to_floatspanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("datespanset", {SpansetTypes::tstzspanset()}, SpansetTypes::datespanset(), Gen_tstzspanset_to_datespanset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {SpansetTypes::tstzspanset()}, SpansetTypes::datespanset(), Gen_tstzspanset_to_datespanset)); -} - -void RegisterGenerated_meos_pose_comp_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_always_eq_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_always_eq_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_always_eq_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_always_eq_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_always_ne_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_always_ne_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_always_ne_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_always_ne_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_ever_eq_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_ever_eq_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_ever_eq_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_ever_eq_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_ever_ne_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_ever_ne_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_ever_ne_tpose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::BOOLEAN, Gen_ever_ne_tpose_tpose)); -} - -void RegisterGenerated_meos_s2cell_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("s2EdgeNeighbors", {S2cellTypes::s2cell()}, SetTypes::s2cellset(), Gen_s2cell_edge_neighbors_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToChildren", {S2cellTypes::s2cell(), LogicalType::INTEGER}, SetTypes::s2cellset(), Gen_s2cell_cell_to_children_set)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToCover", {S2cellTypes::s2cell(), LogicalType::INTEGER}, SetTypes::s2cellset(), Gen_s2cell_cell_to_cover)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {S2cellTypes::ts2cell()}, S2cellTypes::s2cell(), Gen_ts2cell_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {S2cellTypes::ts2cell()}, S2cellTypes::s2cell(), Gen_ts2cell_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, S2cellTypes::s2cell(), Gen_ts2cell_value_n)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getValues", {S2cellTypes::ts2cell()}, LogicalType::LIST(S2cellTypes::s2cell()), Gen_ts2cell_values)); - RegisterSerializedScalarFunction(loader, ScalarFunction("compactCells", {SetTypes::s2cellset()}, SetTypes::s2cellset(), Gen_s2cellset_compact_cells)); - RegisterSerializedScalarFunction(loader, ScalarFunction("uncompactCells", {SetTypes::s2cellset(), LogicalType::INTEGER}, SetTypes::s2cellset(), Gen_s2cellset_uncompact_cells)); - RegisterSerializedScalarFunction(loader, ScalarFunction("coverCells", {SetTypes::s2cellset(), LogicalType::INTEGER}, SetTypes::s2cellset(), Gen_s2cellset_cover_cells)); -} - -void RegisterGenerated_meos_h3_traversal(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_grid_disk)); - RegisterSerializedScalarFunction(loader, ScalarFunction("h3GridRing", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_grid_ring)); - RegisterSerializedScalarFunction(loader, ScalarFunction("h3GridPathCells", {H3indexTypes::h3index(), H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3_grid_path_cells)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3GridDistance", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToLocalIj", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TgeompointType::tgeompoint(), Gen_th3index_cell_to_local_ij)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3LocalIjToCell", {H3indexTypes::th3index(), H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_local_ij_to_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3indexset_grid_disk)); -} - -void RegisterGenerated_meos_geo_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TgeogpointType::tgeogpoint()}, TGeographyTypes::tgeography(), Gen_tgeogpoint_to_tgeography)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeogpointType::tgeogpoint()}, TGeographyTypes::tgeography(), Gen_tgeogpoint_to_tgeography)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {TGeographyTypes::tgeography()}, TgeogpointType::tgeogpoint(), Gen_tgeography_to_tgeogpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeographyTypes::tgeography()}, TgeogpointType::tgeogpoint(), Gen_tgeography_to_tgeogpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TGeographyTypes::tgeography()}, TGeometryTypes::tgeometry(), Gen_tgeography_to_tgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeographyTypes::tgeography()}, TGeometryTypes::tgeometry(), Gen_tgeography_to_tgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeography", {TGeometryTypes::tgeometry()}, TGeographyTypes::tgeography(), Gen_tgeometry_to_tgeography)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, TGeographyTypes::tgeography(), Gen_tgeometry_to_tgeography)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {TGeometryTypes::tgeometry()}, TgeompointType::tgeompoint(), Gen_tgeometry_to_tgeompoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, TgeompointType::tgeompoint(), Gen_tgeometry_to_tgeompoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TgeompointType::tgeompoint()}, TGeometryTypes::tgeometry(), Gen_tgeompoint_to_tgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeompointType::tgeompoint()}, TGeometryTypes::tgeometry(), Gen_tgeompoint_to_tgeometry)); +void RegisterGenerated_meos_temporal_modif(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tbigint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tbool(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tfloat(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::ttext(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TgeompointType::tgeompoint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TgeogpointType::tgeogpoint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TGeometryTypes::tgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TGeographyTypes::tgeography(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TGeographyTypes::tgeography(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {CbufferTypes::tcbuffer(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, CbufferTypes::tcbuffer(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {H3indexTypes::th3index(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, H3indexTypes::th3index(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {QuadbinTypes::tquadbin(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {S2cellTypes::ts2cell(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TJsonbTypes::tjsonb(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TPcpointTypes::tpcpoint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TPcpointTypes::tpcpoint(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TPcpatchTypes::tpcpatch(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TPcpatchTypes::tpcpatch(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {NpointTypes::tnpoint(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, NpointTypes::tnpoint(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {PoseTypes::tpose(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, PoseTypes::tpose(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {PosechainTypes::tposechain(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, PosechainTypes::tposechain(), Gen_temporal_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tint(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::tint(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tbigint(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::tbigint(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tbool(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::tbool(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::tfloat(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::tfloat(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TemporalTypes::ttext(), LogicalType::TIMESTAMP_TZ}, TemporalTypes::ttext(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TgeompointType::tgeompoint(), LogicalType::TIMESTAMP_TZ}, TgeompointType::tgeompoint(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TgeogpointType::tgeogpoint(), LogicalType::TIMESTAMP_TZ}, TgeogpointType::tgeogpoint(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TGeometryTypes::tgeometry(), LogicalType::TIMESTAMP_TZ}, TGeometryTypes::tgeometry(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TGeographyTypes::tgeography(), LogicalType::TIMESTAMP_TZ}, TGeographyTypes::tgeography(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {CbufferTypes::tcbuffer(), LogicalType::TIMESTAMP_TZ}, CbufferTypes::tcbuffer(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {H3indexTypes::th3index(), LogicalType::TIMESTAMP_TZ}, H3indexTypes::th3index(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {QuadbinTypes::tquadbin(), LogicalType::TIMESTAMP_TZ}, QuadbinTypes::tquadbin(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {S2cellTypes::ts2cell(), LogicalType::TIMESTAMP_TZ}, S2cellTypes::ts2cell(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TJsonbTypes::tjsonb(), LogicalType::TIMESTAMP_TZ}, TJsonbTypes::tjsonb(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TPcpointTypes::tpcpoint(), LogicalType::TIMESTAMP_TZ}, TPcpointTypes::tpcpoint(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TPcpatchTypes::tpcpatch(), LogicalType::TIMESTAMP_TZ}, TPcpatchTypes::tpcpatch(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {NpointTypes::tnpoint(), LogicalType::TIMESTAMP_TZ}, NpointTypes::tnpoint(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {PoseTypes::tpose(), LogicalType::TIMESTAMP_TZ}, PoseTypes::tpose(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {PosechainTypes::tposechain(), LogicalType::TIMESTAMP_TZ}, PosechainTypes::tposechain(), Gen_temporal_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::tint(), TemporalTypes::tint(), LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::tbigint(), TemporalTypes::tbigint(), LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::tbool(), TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::tfloat(), TemporalTypes::tfloat(), LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TemporalTypes::ttext(), TemporalTypes::ttext(), LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint(), LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint(), LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry(), LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography(), LogicalType::BOOLEAN}, TGeographyTypes::tgeography(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer(), LogicalType::BOOLEAN}, CbufferTypes::tcbuffer(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {H3indexTypes::th3index(), H3indexTypes::th3index(), LogicalType::BOOLEAN}, H3indexTypes::th3index(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin(), LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell(), LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint(), LogicalType::BOOLEAN}, TPcpointTypes::tpcpoint(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch(), LogicalType::BOOLEAN}, TPcpatchTypes::tpcpatch(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {NpointTypes::tnpoint(), NpointTypes::tnpoint(), LogicalType::BOOLEAN}, NpointTypes::tnpoint(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {PoseTypes::tpose(), PoseTypes::tpose(), LogicalType::BOOLEAN}, PoseTypes::tpose(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry(), LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("insert", {PosechainTypes::tposechain(), PosechainTypes::tposechain(), LogicalType::BOOLEAN}, PosechainTypes::tposechain(), Gen_temporal_insert)); + RegisterSerializedScalarFunction(loader, ScalarFunction("merge", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_temporal_merge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::tint(), TemporalTypes::tint(), LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::tbigint(), TemporalTypes::tbigint(), LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::tbool(), TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::tfloat(), TemporalTypes::tfloat(), LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TemporalTypes::ttext(), TemporalTypes::ttext(), LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint(), LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint(), LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry(), LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography(), LogicalType::BOOLEAN}, TGeographyTypes::tgeography(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer(), LogicalType::BOOLEAN}, CbufferTypes::tcbuffer(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {H3indexTypes::th3index(), H3indexTypes::th3index(), LogicalType::BOOLEAN}, H3indexTypes::th3index(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin(), LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell(), LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb(), LogicalType::BOOLEAN}, TJsonbTypes::tjsonb(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint(), LogicalType::BOOLEAN}, TPcpointTypes::tpcpoint(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch(), LogicalType::BOOLEAN}, TPcpatchTypes::tpcpatch(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {NpointTypes::tnpoint(), NpointTypes::tnpoint(), LogicalType::BOOLEAN}, NpointTypes::tnpoint(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {PoseTypes::tpose(), PoseTypes::tpose(), LogicalType::BOOLEAN}, PoseTypes::tpose(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry(), LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_temporal_update)); + RegisterSerializedScalarFunction(loader, ScalarFunction("update", {PosechainTypes::tposechain(), PosechainTypes::tposechain(), LogicalType::BOOLEAN}, PosechainTypes::tposechain(), Gen_temporal_update)); +} + +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)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SpansetTypes::floatspanset()}, LogicalType::LIST(SpanTypes::floatspan()), Gen_spanset_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SpansetTypes::datespanset()}, LogicalType::LIST(SpanTypes::datespan()), Gen_spanset_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SpansetTypes::tstzspanset()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_spanset_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::intspan()), Gen_spanset_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::bigintspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_spanset_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::floatspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::floatspan()), Gen_spanset_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::datespanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::datespan()), Gen_spanset_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::tstzspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_spanset_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::intspan()), Gen_spanset_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::bigintspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_spanset_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::floatspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::floatspan()), Gen_spanset_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::datespanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::datespan()), Gen_spanset_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::tstzspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_spanset_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::intset()}, LogicalType::LIST(SpanTypes::intspan()), Gen_set_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::bigintset()}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_set_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::floatset()}, LogicalType::LIST(SpanTypes::floatspan()), Gen_set_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::dateset()}, LogicalType::LIST(SpanTypes::datespan()), Gen_set_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::tstzset()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_set_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::intspan()), Gen_set_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::bigintset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_set_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::floatset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::floatspan()), Gen_set_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::dateset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::datespan()), Gen_set_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::tstzset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_set_split_each_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::intspan()), Gen_set_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::bigintset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_set_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::floatset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::floatspan()), Gen_set_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::dateset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::datespan()), Gen_set_split_n_spans)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::tstzset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_set_split_n_spans)); +} + +void RegisterGenerated_meos_quadbin_comp_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_eq_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_eq_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_always_eq_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_always_eq_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_ne_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_ne_quadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_always_ne_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_always_ne_tquadbin_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_tquadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_tquadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_tquadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_tquadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_eq_tquadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_eq_tquadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_ne_tquadbin_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_ne_tquadbin_tquadbin)); +} + +void RegisterGenerated_meos_s2cell_comp_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_eq_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_eq_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_always_eq_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_always_eq_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_ne_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_ne_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_always_ne_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_always_ne_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_ts2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_ts2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_ts2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_ts2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_eq_ts2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_eq_ts2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_ne_ts2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_ne_ts2cell_ts2cell)); +} + +void RegisterGenerated_meos_geo_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_tgeo_centroid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_tgeo_centroid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TGeometryTypes::tgeometry()}, TgeompointType::tgeompoint(), Gen_tgeo_centroid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TGeographyTypes::tgeography()}, TgeogpointType::tgeogpoint(), Gen_tgeo_centroid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("angularDifference", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_angular_difference)); + RegisterSerializedScalarFunction(loader, ScalarFunction("angularDifference", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_angular_difference)); + RegisterSerializedScalarFunction(loader, ScalarFunction("azimuth", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_azimuth)); + RegisterSerializedScalarFunction(loader, ScalarFunction("azimuth", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_azimuth)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cumulativeLength", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_cumulative_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cumulativeLength", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_cumulative_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getX", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getX", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getY", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getY", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getZ", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getZ", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isSimple", {TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_tpoint_is_simple)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isSimple", {TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_tpoint_is_simple)); + RegisterSerializedScalarFunction(loader, ScalarFunction("length", {TgeompointType::tgeompoint()}, LogicalType::DOUBLE, Gen_tpoint_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("length", {TgeogpointType::tgeogpoint()}, LogicalType::DOUBLE, Gen_tpoint_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_speed)); + RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_speed)); +} + +void RegisterGenerated_meos_cellindex(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {H3indexTypes::th3index()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {QuadbinTypes::tquadbin()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {S2cellTypes::ts2cell()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_tcellindex_cell_to_parent)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, QuadbinTypes::tquadbin(), Gen_tcellindex_cell_to_parent)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tcellindex_cell_to_parent)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {QuadbinTypes::tquadbin()}, TgeompointType::tgeompoint(), Gen_tcellindex_cell_to_point)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {S2cellTypes::ts2cell()}, TgeogpointType::tgeogpoint(), Gen_tcellindex_cell_to_point)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {H3indexTypes::th3index()}, TGeographyTypes::tgeography(), Gen_tcellindex_cell_to_boundary)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {QuadbinTypes::tquadbin()}, TGeometryTypes::tgeometry(), Gen_tcellindex_cell_to_boundary)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {S2cellTypes::ts2cell()}, TGeographyTypes::tgeography(), Gen_tcellindex_cell_to_boundary)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {H3indexTypes::th3index()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {QuadbinTypes::tquadbin()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {S2cellTypes::ts2cell()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbinCellToQuadkey", {QuadbinTypes::tquadbin()}, TemporalTypes::ttext(), Gen_tquadbin_cell_to_quadkey)); +} + +void RegisterGenerated_meos_box_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {TboxType::tbox()}, LogicalType::UINTEGER, Gen_tbox_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {TboxType::tbox(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_tbox_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ne)); +} + +void RegisterGenerated_meos_rgeo_bbox_split(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TrgeometryTypes::trgeometry()}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_split_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_split_each_n_stboxes)); +} + +void RegisterGenerated_meos_h3_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {H3indexTypes::h3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_teq_h3index_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {H3indexTypes::th3index(), H3indexTypes::h3index()}, TemporalTypes::tbool(), Gen_teq_th3index_h3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_teq_th3index_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {H3indexTypes::h3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_tne_h3index_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {H3indexTypes::th3index(), H3indexTypes::h3index()}, TemporalTypes::tbool(), Gen_tne_th3index_h3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_tne_th3index_th3index)); } void RegisterGenerated_meos_pose_transf(ExtensionLoader &loader) { @@ -4792,19 +4727,6 @@ void RegisterGenerated_meos_pose_transf(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_tpose_rotate_z)); } -void RegisterGenerated_meos_geo_box_topo(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_adjacent_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_adjacent_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contained_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contained_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contains_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contains_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_overlaps_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_overlaps_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_same_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_same_stbox_stbox)); -} - void RegisterGenerated_meos_h3_vertex(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("h3CellToVertexes", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3_cell_to_vertexes)); RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToVertex", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_th3index_cell_to_vertex)); @@ -4812,45 +4734,48 @@ void RegisterGenerated_meos_h3_vertex(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("isValidVertex", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_is_valid_vertex)); } -void RegisterGenerated_meos_pointcloud_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TPcpointTypes::tpcpoint()}, TPcpointTypes::pcpoint(), Gen_tpcpoint_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TPcpointTypes::tpcpoint()}, TPcpointTypes::pcpoint(), Gen_tpcpoint_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TPcpatchTypes::tpcpatch()}, TPcpatchTypes::pcpatch(), Gen_tpcpatch_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TPcpatchTypes::tpcpatch()}, TPcpatchTypes::pcpatch(), Gen_tpcpatch_end_value)); +void RegisterGenerated_meos_h3_inspection(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("h3GetIcosahedronFaces", {H3indexTypes::h3index()}, SetTypes::intset(), Gen_h3_get_icosahedron_faces)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetBaseCellNumber", {H3indexTypes::th3index()}, TemporalTypes::tint(), Gen_th3index_get_base_cell_number)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3IsResClassIii", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_is_res_class_iii)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3IsPentagon", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_is_pentagon)); +} + +void RegisterGenerated_meos_npoint_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {NpointTypes::npoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_npoint_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {NpointTypes::npoint()}, LogicalType::VARCHAR, Gen_npoint_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {NpointTypes::npoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_npoint_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {NpointTypes::npoint()}, LogicalType::VARCHAR, Gen_npoint_as_text_d)); } -void RegisterGenerated_meos_temporal_spatial_rel_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("aTouches", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_atouches_tpoint_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eTouches", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_etouches_tpoint_geo)); +void RegisterGenerated_meos_npoint_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tnpoint", {TgeompointType::tgeompoint()}, NpointTypes::tnpoint(), Gen_tgeompoint_to_tnpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeompointType::tgeompoint()}, NpointTypes::tnpoint(), Gen_tgeompoint_to_tnpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {NpointTypes::tnpoint()}, TgeompointType::tgeompoint(), Gen_tnpoint_to_tgeompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {NpointTypes::tnpoint()}, TgeompointType::tgeompoint(), Gen_tnpoint_to_tgeompoint)); } -void RegisterGenerated_meos_internal_temporal_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointFromMFJSON", {LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointFromMFJSON", {LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_temporal_from_mfjson)); +void RegisterGenerated_meos_cbuffer_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_teq_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tne_tcbuffer_cbuffer)); } -void RegisterGenerated_meos_pose_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tbool(), Gen_teq_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tbool(), Gen_tne_tpose_pose)); +void RegisterGenerated_meos_posechain_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPose", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tposechain_as_geopose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPose", {PosechainTypes::tposechain()}, LogicalType::VARCHAR, Gen_tposechain_as_geopose_d)); } -void RegisterGenerated_meos_npoint_base_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::npoint()}, LogicalType::INTEGER, Gen_npoint_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::nsegment()}, LogicalType::INTEGER, Gen_nsegment_srid)); +void RegisterGenerated_meos_box_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TboxType::tbox(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tbox_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TboxType::tbox()}, LogicalType::VARCHAR, Gen_tbox_out_d)); } -void RegisterGenerated_meos_posechain_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tpose", {PosechainTypes::tposechain()}, PoseTypes::tpose(), Gen_tposechain_to_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PosechainTypes::tposechain()}, PoseTypes::tpose(), Gen_tposechain_to_tpose)); +void RegisterGenerated_meos_quadbin_set_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::quadbinset()}, LogicalType::VARCHAR, Gen_quadbinset_out)); } -void RegisterGenerated_meos_quadbin_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {QuadbinTypes::tquadbin()}, LogicalType::VARCHAR, Gen_tquadbin_out)); +void RegisterGenerated_meos_s2cell_set_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::s2cellset()}, LogicalType::VARCHAR, Gen_s2cellset_out)); } void RegisterGenerated_meos_cbuffer_base_srid(ExtensionLoader &loader) { diff --git a/src/generated/generated_temporal_udfs_4.cpp b/src/generated/generated_temporal_udfs_4.cpp index 75a56de1..40b5d05c 100644 --- a/src/generated/generated_temporal_udfs_4.cpp +++ b/src/generated/generated_temporal_udfs_4.cpp @@ -1475,1224 +1475,1408 @@ static void Gen_tdisjoint_tgeoarr_tgeoarr(DataChunk &args, ExpressionState &, Ve } -// ===== @ingroup meos_temporal_transf ===== -static void Gen_temporal_round(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_setspan_comp ===== +static void Gen_set_cmp(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = temporal_round(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a0, string_t a1) { + Set *x0 = BlobToSet(a0); + Set *x1 = BlobToSet(a1); + int32_t r = set_cmp(x0, x1); + free(x0); free(x1); + return (int32_t) r; }); } -static void Gen_temporal_round_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_span_cmp(DataChunk &args, ExpressionState &, 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); - Temporal *r = temporal_round(t, 0); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a0, string_t a1) { + Span *x0 = BlobToSpan(a0); + Span *x1 = BlobToSpan(a1); + int32_t r = span_cmp(x0, x1); + free(x0); free(x1); + return (int32_t) r; }); } -static void Gen_temporal_as_tinstant(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_cmp(DataChunk &args, ExpressionState &, 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); - Temporal *r = (Temporal *) temporal_as_tinstant(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a0, string_t a1) { + SpanSet *x0 = BlobToSpanSet(a0); + SpanSet *x1 = BlobToSpanSet(a1); + int32_t r = spanset_cmp(x0, x1); + free(x0); free(x1); + return (int32_t) r; }); } -static void Gen_temporal_as_tsequence(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - interpType interp = INTERP_NONE; - if (args.ColumnCount() > 1) { auto &c = args.data[1]; c.Flatten(args.size()); Value v = c.GetValue(0); if (!v.IsNull()) interp = interptype_from_string(v.ToString().c_str()); } - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = (Temporal *) temporal_as_tsequence(t, interp); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Set *s = BlobToSet(in); + uint32_t r = set_hash(s); + free(s); + return r; }); } -static void Gen_temporal_as_tsequenceset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - interpType interp = INTERP_NONE; - if (args.ColumnCount() > 1) { auto &c = args.data[1]; c.Flatten(args.size()); Value v = c.GetValue(0); if (!v.IsNull()) interp = interptype_from_string(v.ToString().c_str()); } - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = (Temporal *) temporal_as_tsequenceset(t, interp); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, uint64_t a2) { + Set *s = BlobToSet(a); + uint64_t r = set_hash_extended(s, a2); + free(s); + return r; }); } -static void Gen_tfloat_ceil(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_eq(DataChunk &args, ExpressionState &, 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); - Temporal *r = tfloat_ceil(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = set_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tfloat_degrees(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tfloat_degrees(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = set_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tfloat_degrees_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_gt(DataChunk &args, ExpressionState &, 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); - Temporal *r = tfloat_degrees(t, false); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = set_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tfloat_floor(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_le(DataChunk &args, ExpressionState &, 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); - Temporal *r = tfloat_floor(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = set_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tfloat_radians(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_lt(DataChunk &args, ExpressionState &, 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); - Temporal *r = tfloat_radians(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = set_lt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tfloat_scale_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_set_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tfloat_scale_value(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Set *s1 = BlobToSet(a); + Set *s2 = BlobToSet(b); + bool r = set_ne(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tfloat_shift_scale_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_span_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, double a2, double a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tfloat_shift_scale_value(t, a2, a3); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Span *s = BlobToSpan(in); + uint32_t r = span_hash(s); + free(s); + return r; }); } -static void Gen_tfloat_shift_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_span_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tfloat_shift_value(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + Span *s = BlobToSpan(in); + uint64_t r = span_hash_extended(s, a2); + free(s); + return r; }); } -static void Gen_tint_scale_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_span_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tint_scale_value(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = span_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tbigint_scale_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_span_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tbigint_scale_value(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = span_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tint_shift_scale_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_span_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, int32_t a2, int32_t a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tint_shift_scale_value(t, a2, a3); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = span_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tbigint_shift_scale_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_span_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, int64_t a2, int64_t a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tbigint_shift_scale_value(t, a2, a3); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = span_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tint_shift_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_span_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tint_shift_value(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = span_lt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tbigint_shift_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_span_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tbigint_shift_value(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Span *s1 = BlobToSpan(a); + Span *s2 = BlobToSpan(b); + bool r = span_ne(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_spanset_hash(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + SpanSet *s = BlobToSpanSet(in); + uint32_t r = spanset_hash(s); + free(s); + return r; + }); +} + +static void Gen_spanset_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + SpanSet *s = BlobToSpanSet(in); + uint64_t r = spanset_hash_extended(s, a2); + free(s); + return r; }); } +static void Gen_spanset_eq(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = spanset_eq(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_spanset_ge(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = spanset_ge(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_spanset_gt(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = spanset_gt(s1, s2); + free(s1); free(s2); + return r; + }); +} -// ===== @ingroup meos_temporal_constructor ===== -static void Gen_tsequence_make(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &arr = args.data[0]; arr.Flatten(rc); - auto &child = ListVector::GetEntry(arr); - child.Flatten(ListVector::GetListSize(arr)); - MeosType temptype = TemporalHelpers::GetTemptypeFromAlias(result.GetType().GetAlias().c_str()); - interpType interp = temptype_supports_linear(temptype) ? LINEAR : STEP; - bool lower_inc = true, upper_inc = true; - if (args.ColumnCount() > 1) { auto &c = args.data[1]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) interp = interptype_from_string(v.ToString().c_str()); } - if (args.ColumnCount() > 2) { auto &c = args.data[2]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) lower_inc = v.GetValue(); } - if (args.ColumnCount() > 3) { auto &c = args.data[3]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) upper_inc = v.GetValue(); } - UnaryExecutor::ExecuteWithNulls(arr, result, rc, - [&](list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - int n = 0; - const Temporal **a = ListToTemporalArr(child, le, &n); - TSequence *seq = tsequence_make((TInstant **) a, n, lower_inc, upper_inc, interp, true); - string_t out = TemporalToBlobN(result, (Temporal *) seq, mask, idx); - FreeTemporalArr(a, n); - return out; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = spanset_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tsequenceset_make(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &arr = args.data[0]; arr.Flatten(rc); - auto &child = ListVector::GetEntry(arr); - child.Flatten(ListVector::GetListSize(arr)); - UnaryExecutor::ExecuteWithNulls(arr, result, rc, - [&](list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - int n = 0; - const Temporal **a = ListToTemporalArr(child, le, &n); - TSequenceSet *ss = tsequenceset_make((TSequence **) a, n, true); - string_t out = TemporalToBlobN(result, (Temporal *) ss, mask, idx); - FreeTemporalArr(a, n); - return out; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = spanset_lt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tsequenceset_make_gaps(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &arr = args.data[0]; arr.Flatten(rc); - auto &child = ListVector::GetEntry(arr); - child.Flatten(ListVector::GetListSize(arr)); - MeosType temptype = TemporalHelpers::GetTemptypeFromAlias(result.GetType().GetAlias().c_str()); - interpType interp = temptype_supports_linear(temptype) ? LINEAR : STEP; - MeosInterval maxt_val; bool has_maxt = false; double maxdist = -1.0; - if (args.ColumnCount() > 1) { auto &c = args.data[1]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) { maxt_val = IntervaltToInterval(v.GetValue()); has_maxt = true; } } - if (args.ColumnCount() > 2) { auto &c = args.data[2]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) maxdist = v.GetValue(); } - if (args.ColumnCount() > 3) { auto &c = args.data[3]; c.Flatten(rc); Value v = c.GetValue(0); if (!v.IsNull()) interp = interptype_from_string(v.ToString().c_str()); } - const MeosInterval *maxt = has_maxt ? &maxt_val : NULL; - UnaryExecutor::ExecuteWithNulls(arr, result, rc, - [&](list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - int n = 0; - const Temporal **a = ListToTemporalArr(child, le, &n); - TSequenceSet *ss = tsequenceset_make_gaps((TInstant **) a, n, interp, maxt, maxdist); - string_t out = TemporalToBlobN(result, (Temporal *) ss, mask, idx); - FreeTemporalArr(a, n); - return out; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = spanset_ne(s1, s2); + free(s1); free(s2); + return r; }); } -// ===== @ingroup meos_quadbin_comp_ever ===== -static void Gen_ever_eq_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_comp_ever ===== +static void Gen_ever_eq_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - int32_t r = ever_eq_quadbin_tquadbin((uint64_t) a1, t); - free(t); + Pcpoint *a2p = BlobToPcpoint(a2); + int32_t r = ever_eq_tpcpoint_pcpoint(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_eq_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tpcpoint_tpcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = ever_eq_tquadbin_quadbin(t, (uint64_t) a2); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_eq_tpcpoint_tpcpoint(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_ne_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - int32_t r = ever_ne_quadbin_tquadbin((uint64_t) a1, t); - free(t); + Pcpoint *a2p = BlobToPcpoint(a2); + int32_t r = ever_ne_tpcpoint_pcpoint(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_ne_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tpcpoint_tpcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = ever_ne_tquadbin_quadbin(t, (uint64_t) a2); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_ne_tpcpoint_tpcpoint(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_eq_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - int32_t r = always_eq_quadbin_tquadbin((uint64_t) a1, t); - free(t); + Pcpoint *a2p = BlobToPcpoint(a2); + int32_t r = always_eq_tpcpoint_pcpoint(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_eq_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tpcpoint_tpcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = always_eq_tquadbin_quadbin(t, (uint64_t) a2); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_eq_tpcpoint_tpcpoint(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_ne_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - int32_t r = always_ne_quadbin_tquadbin((uint64_t) a1, t); - free(t); + Pcpoint *a2p = BlobToPcpoint(a2); + int32_t r = always_ne_tpcpoint_pcpoint(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_ne_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tpcpoint_tpcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_ne_tpcpoint_tpcpoint(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} + +static void Gen_ever_eq_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - int32_t r = always_ne_tquadbin_quadbin(t, (uint64_t) a2); - free(t); + Pcpatch *a2p = BlobToPcpatch(a2); + int32_t r = ever_eq_tpcpatch_pcpatch(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_eq_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tpcpatch_tpcpatch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_tquadbin_tquadbin(t1, t2); + int32_t r = ever_eq_tpcpatch_tpcpatch(t1, t2); free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_ne_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t = BlobToTemporal(in); + Pcpatch *a2p = BlobToPcpatch(a2); + int32_t r = ever_ne_tpcpatch_pcpatch(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} + +static void Gen_ever_ne_tpcpatch_tpcpatch(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_tquadbin_tquadbin(t1, t2); + int32_t r = ever_ne_tpcpatch_tpcpatch(t1, t2); free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_eq_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t = BlobToTemporal(in); + Pcpatch *a2p = BlobToPcpatch(a2); + int32_t r = always_eq_tpcpatch_pcpatch(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} + +static void Gen_always_eq_tpcpatch_tpcpatch(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_tquadbin_tquadbin(t1, t2); + int32_t r = always_eq_tpcpatch_tpcpatch(t1, t2); free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_ne_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t = BlobToTemporal(in); + Pcpatch *a2p = BlobToPcpatch(a2); + int32_t r = always_ne_tpcpatch_pcpatch(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} + +static void Gen_always_ne_tpcpatch_tpcpatch(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_tquadbin_tquadbin(t1, t2); + int32_t r = always_ne_tpcpatch_tpcpatch(t1, t2); free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -// ===== @ingroup meos_s2cell_comp_ever ===== -static void Gen_ever_eq_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_pos ===== +static void Gen_left_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = left_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_overleft_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overleft_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_right_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = right_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_overright_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overright_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_below_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in) { - Temporal *t = BlobToTemporal(in); - int32_t r = ever_eq_s2cell_ts2cell((uint64_t) a1, t); - free(t); - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = below_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_ever_eq_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overbelow_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = ever_eq_ts2cell_s2cell(t, (uint64_t) a2); - free(t); - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overbelow_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_ever_ne_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_above_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in) { - Temporal *t = BlobToTemporal(in); - int32_t r = ever_ne_s2cell_ts2cell((uint64_t) a1, t); - free(t); - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = above_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_ever_ne_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overabove_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = ever_ne_ts2cell_s2cell(t, (uint64_t) a2); - free(t); - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overabove_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_always_eq_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_front_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in) { - Temporal *t = BlobToTemporal(in); - int32_t r = always_eq_s2cell_ts2cell((uint64_t) a1, t); - free(t); - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = front_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_always_eq_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overfront_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = always_eq_ts2cell_s2cell(t, (uint64_t) a2); - free(t); - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overfront_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_always_ne_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_back_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in) { - Temporal *t = BlobToTemporal(in); - int32_t r = always_ne_s2cell_ts2cell((uint64_t) a1, t); - free(t); - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = back_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_always_ne_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overback_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = always_ne_ts2cell_s2cell(t, (uint64_t) a2); - free(t); - return (r != 0); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overback_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_ever_eq_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_before_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_ts2cell_ts2cell(t1, t2); - free(t1); free(t2); - return (r != 0); + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = before_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_ever_ne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overbefore_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_ts2cell_ts2cell(t1, t2); - free(t1); free(t2); - return (r != 0); + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overbefore_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_always_eq_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_after_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_ts2cell_ts2cell(t1, t2); - free(t1); free(t2); - return (r != 0); + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = after_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_always_ne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overafter_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_ts2cell_ts2cell(t1, t2); - free(t1); free(t2); - return (r != 0); + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overafter_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -// ===== @ingroup meos_geo_accessor ===== -static void Gen_tgeo_centroid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_analytics_simplify ===== +static void Gen_temporal_simplify_dp(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, double a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeo_centroid(t); + Temporal *r = temporal_simplify_dp(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpoint_angular_difference(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_simplify_dp_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpoint_angular_difference(t); + Temporal *r = temporal_simplify_dp(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpoint_azimuth(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_simplify_max_dist(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, double a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpoint_azimuth(t); + Temporal *r = temporal_simplify_max_dist(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpoint_cumulative_length(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_simplify_max_dist_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpoint_cumulative_length(t); + Temporal *r = temporal_simplify_max_dist(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpoint_get_x(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_simplify_min_dist(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpoint_get_x(t); + Temporal *r = temporal_simplify_min_dist(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpoint_get_y(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_json_comp_ever ===== +static void Gen_always_eq_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - Temporal *r = tpoint_get_y(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Jsonb *a2p = BlobToJsonb(a2); + int32_t r = always_eq_tjsonb_jsonb(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tpoint_get_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tjsonb_tjsonb(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpoint_get_z(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_eq_tjsonb_tjsonb(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tpoint_is_simple(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - bool r = tpoint_is_simple(t); - free(t); - return (bool) r; + Jsonb *a2p = BlobToJsonb(a2); + int32_t r = always_ne_tjsonb_jsonb(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tpoint_length(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_ne_tjsonb_tjsonb(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} + +static void Gen_ever_eq_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - double r = tpoint_length(t); - free(t); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return (double) r; + Jsonb *a2p = BlobToJsonb(a2); + int32_t r = ever_eq_tjsonb_jsonb(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_tpoint_speed(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_eq_tjsonb_tjsonb(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} + +static void Gen_ever_ne_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - Temporal *r = tpoint_speed(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Jsonb *a2p = BlobToJsonb(a2); + int32_t r = ever_ne_tjsonb_jsonb(t, a2p); + free(a2p); free(t); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} + +static void Gen_ever_ne_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_ne_tjsonb_tjsonb(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -// ===== @ingroup meos_cbuffer_base_comp ===== -static void Gen_cbuffer_hash(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_base_comp ===== +static void Gen_pose_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Cbuffer *v = BlobToCbuffer(in); - uint32_t r = cbuffer_hash(v); + Pose *v = BlobToPose(in); + uint32_t r = pose_hash(v); free(v); return r; }); } -static void Gen_cbuffer_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t in, uint64_t a2) { - Cbuffer *s = BlobToCbuffer(in); - uint64_t r = cbuffer_hash_extended(s, a2); + Pose *s = BlobToPose(in); + uint64_t r = pose_hash_extended(s, a2); free(s); return r; }); } -static void Gen_cbuffer_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_eq(s1, s2); + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_eq(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_ge(s1, s2); + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_ge(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_gt(s1, s2); + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_gt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_le(s1, s2); + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_le(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_lt(s1, s2); + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_lt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_ne(s1, s2); + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_ne(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_same(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_same(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_same(s1, s2); + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_same(s1, s2); free(s1); free(s2); return r; }); } -// ===== @ingroup meos_geo_box_comp ===== -static void Gen_stbox_hash(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - STBox *s = BlobToStbox(in); - uint32_t r = stbox_hash(s); - free(s); - return r; - }); -} - -static void Gen_stbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - STBox *s = BlobToStbox(in); - uint64_t r = stbox_hash_extended(s, a2); - free(s); - return r; - }); -} - -static void Gen_stbox_eq(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_box_bbox_pos ===== +static void Gen_after_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_eq(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = after_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_before_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_ge(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = before_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_gt(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = left_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overafter_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_le(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overafter_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overbefore_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_lt(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overbefore_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_ne(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overleft_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } - -// ===== @ingroup meos_rgeo_bbox_split ===== -static void Gen_trgeometry_stboxes(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - STBox * arr = trgeometry_stboxes(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - -static void Gen_trgeometry_split_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - STBox * arr = trgeometry_split_n_stboxes(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - -static void Gen_trgeometry_split_each_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - STBox * arr = trgeometry_split_each_n_stboxes(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overright_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; + }); +} + +static void Gen_right_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = right_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; + }); } -// ===== @ingroup meos_rgeo_transf ===== -static void Gen_trgeometry_round(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_conversion ===== +static void Gen_bigint_to_s2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> int64_t { + uint64_t r = bigint_to_s2cell(a0); + return static_cast(r); + }); +} + +static void Gen_tbigint_to_ts2cell(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_round(t, a2); + Temporal *r = tbigint_to_ts2cell(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_round_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ts2cell_to_tbigint(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_round(t, 0); + Temporal *r = ts2cell_to_tbigint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_rotate_x(t, a2); + Temporal *r = tgeogpoint_to_ts2cell(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_to_ts2cell_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_rotate_y(t, a2); + Temporal *r = tgeogpoint_to_ts2cell(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeompoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_rotate_z(t, a2); + Temporal *r = tgeompoint_to_ts2cell(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_as_tinstant(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeompoint_to_ts2cell_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = (Temporal *) trgeometry_as_tinstant(t); + Temporal *r = tgeompoint_to_ts2cell(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_geopose_accessor ===== -static void Gen_tpose_apply_geo(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_restrict ===== +static void Gen_tpose_at_geom(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 { + [&](string_t in_t, string_t in_g, 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 = tpose_apply_geo(t, gs); + Temporal *r = tpose_at_geom(t, gs); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_yaw(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_at_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpose_yaw(t); - free(t); + Pose *a2p = BlobToPose(a2); + Temporal *r = tpose_at_pose(t, a2p); + free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_pitch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_minus_geom(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpose_pitch(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tpose_minus_geom(t, gs); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_roll(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_minus_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpose_roll(t); - free(t); + Pose *a2p = BlobToPose(a2); + Temporal *r = tpose_minus_pose(t, a2p); + free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_speed(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_at_elevation(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpose_speed(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + Temporal *r = tpose_at_elevation(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_angular_speed(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_minus_elevation(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + Temporal *r = tpose_minus_elevation(t, cc); + free(t); free(cc); + return TemporalToBlobN(result, r, mask, idx); + }); +} + + +// ===== @ingroup meos_cbuffer_restrict ===== +static void Gen_tcbuffer_at_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpose_angular_speed(t); - free(t); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = tcbuffer_at_cbuffer(t, a2p); + free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } +static void Gen_tcbuffer_at_geom(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tcbuffer_at_geom(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); + }); +} -// ===== @ingroup meos_npoint_base_accessor ===== -static void Gen_npoint_position(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_minus_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Npoint *v = BlobToNpoint(in); - double r = npoint_position(v); - free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = tcbuffer_minus_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_npoint_route(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_minus_geom(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Npoint *v = BlobToNpoint(in); - int64_t r = npoint_route(v); - free(v); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tcbuffer_minus_geom(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_nsegment_end_position(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_pointcloud_comp_temp ===== +static void Gen_teq_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Nsegment *v = BlobToNsegment(in); - double r = nsegment_end_position(v); - free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpoint *a2p = BlobToPcpoint(a2); + Temporal *r = teq_tpcpoint_pcpoint(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_nsegment_route(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Nsegment *v = BlobToNsegment(in); - int64_t r = nsegment_route(v); - free(v); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpoint *a2p = BlobToPcpoint(a2); + Temporal *r = tne_tpcpoint_pcpoint(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_nsegment_start_position(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Nsegment *v = BlobToNsegment(in); - double r = nsegment_start_position(v); - free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpatch *a2p = BlobToPcpatch(a2); + Temporal *r = teq_tpcpatch_pcpatch(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tne_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpatch *a2p = BlobToPcpatch(a2); + Temporal *r = tne_tpcpatch_pcpatch(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_npoint_base_inout ===== -static void Gen_npoint_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_accessor ===== +static void Gen_tpcpoint_start_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Npoint *s = BlobToNpoint(a); - char *r = npoint_as_ewkt(s, a2); - free(s); - return TakeCString(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpoint * r = tpcpoint_start_value(t); + free(t); + return PcpointToBlobN(result, r, mask, idx); }); } -static void Gen_npoint_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpoint_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Npoint *s = BlobToNpoint(a); - char *r = npoint_as_ewkt(s, 15); - free(s); - return TakeCString(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpoint * r = tpcpoint_end_value(t); + free(t); + return PcpointToBlobN(result, r, mask, idx); }); } -static void Gen_npoint_as_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_start_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Npoint *s = BlobToNpoint(a); - char *r = npoint_as_text(s, a2); - free(s); - return TakeCString(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpatch * r = tpcpatch_start_value(t); + free(t); + return PcpatchToBlobN(result, r, mask, idx); }); } -static void Gen_npoint_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Npoint *s = BlobToNpoint(a); - char *r = npoint_as_text(s, 15); - free(s); - return TakeCString(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpatch * r = tpcpatch_end_value(t); + free(t); + return PcpatchToBlobN(result, r, mask, idx); }); } @@ -2732,78 +2916,97 @@ static void Gen_tposechain_rotate_z(DataChunk &args, ExpressionState &, Vector & } -// ===== @ingroup meos_cbuffer_comp_temp ===== -static void Gen_teq_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_base_inout ===== +static void Gen_quadbin_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = quadbin_from_hexwkb(a0.GetString().c_str()); + return static_cast(r); + }); +} + +static void Gen_quadbin_in(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = quadbin_in(a0.GetString().c_str()); + return static_cast(r); + }); +} + +static void Gen_quadbin_out(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + char * r = quadbin_out(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return TakeCString(result, r); + }); +} + + +// ===== @ingroup meos_json_restrict ===== +static void Gen_tjsonb_at_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = teq_tcbuffer_cbuffer(t, a2p); + Jsonb *a2p = BlobToJsonb(a2); + Temporal *r = tjsonb_at_value(t, a2p); free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_minus_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tne_tcbuffer_cbuffer(t, a2p); + Jsonb *a2p = BlobToJsonb(a2); + Temporal *r = tjsonb_minus_value(t, a2p); free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_h3_base_latlng ===== -static void Gen_h3index_cell_to_point(DataChunk &args, ExpressionState &state, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - GSERIALIZED * r = h3index_cell_to_point(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; - }); -} - -static void Gen_h3index_cell_to_boundary(DataChunk &args, ExpressionState &state, Vector &result) { +// ===== @ingroup meos_pose_comp_temp ===== +static void Gen_teq_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - GSERIALIZED * r = h3index_cell_to_boundary(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pose *a2p = BlobToPose(a2); + Temporal *r = teq_tpose_pose(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_pointcloud_inout ===== -static void Gen_tpcpoint_out(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tpcpoint_out(t); - free(t); - return TakeCString(result, r); + Pose *a2p = BlobToPose(a2); + Temporal *r = tne_tpose_pose(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcpatch_out(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_posechain_conversion ===== +static void Gen_tposechain_to_tpose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tpcpatch_out(t); + Temporal *r = tposechain_to_tpose(t); free(t); - return TakeCString(result, r); + return TemporalToBlobN(result, r, mask, idx); }); } @@ -2819,26 +3022,13 @@ static void Gen_h3index_cell_to_parent(DataChunk &args, ExpressionState &, Vecto } -// ===== @ingroup meos_posechain_accessor ===== -static void Gen_tposechain_num_poses(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - int32_t r = tposechain_num_poses(t); - free(t); - return (int32_t) r; - }); -} - - -// ===== @ingroup meos_h3_inout ===== -static void Gen_th3index_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_inout ===== +static void Gen_ts2cell_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { Temporal *t = BlobToTemporal(in); - char * r = th3index_out(t); + char * r = ts2cell_out(t); free(t); return TakeCString(result, r); }); @@ -3616,286 +3806,278 @@ void RegisterGenerated_meos_geo_rel_temp(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("tDisjointPairs", {LogicalType::LIST(TGeographyTypes::tgeography()), LogicalType::LIST(TGeographyTypes::tgeography())}, LogicalType::LIST(LogicalType::STRUCT({{"i", LogicalType::INTEGER}, {"j", LogicalType::INTEGER}, {"periods", SpansetTypes::tstzspanset()}})), Gen_tdisjoint_tgeoarr_tgeoarr)); } -void RegisterGenerated_meos_temporal_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TemporalTypes::tfloat(), LogicalType::INTEGER}, TemporalTypes::tfloat(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {NpointTypes::tnpoint(), LogicalType::INTEGER}, NpointTypes::tnpoint(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_temporal_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TGeometryTypes::tgeometry()}, TGeometryTypes::tgeometry(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TGeographyTypes::tgeography()}, TGeographyTypes::tgeography(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {CbufferTypes::tcbuffer()}, CbufferTypes::tcbuffer(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {NpointTypes::tnpoint()}, NpointTypes::tnpoint(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {PosechainTypes::tposechain()}, PosechainTypes::tposechain(), Gen_temporal_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointInst", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_temporal_as_tinstant)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointInst", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tinstant)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolInst", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_temporal_as_tinstant)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintInst", {TemporalTypes::tint()}, TemporalTypes::tint(), Gen_temporal_as_tinstant)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintInst", {TemporalTypes::tbigint()}, TemporalTypes::tbigint(), Gen_temporal_as_tinstant)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatInst", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_temporal_as_tinstant)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextInst", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_temporal_as_tinstant)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {TgeompointType::tgeompoint(), LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {TgeogpointType::tgeogpoint(), LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {TemporalTypes::tbool(), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {TemporalTypes::tint()}, TemporalTypes::tint(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {TemporalTypes::tint(), LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {TemporalTypes::tbigint()}, TemporalTypes::tbigint(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {TemporalTypes::tbigint(), LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {TemporalTypes::tfloat(), LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_temporal_as_tsequence)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSet", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSet", {TgeompointType::tgeompoint(), LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSet", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSet", {TgeogpointType::tgeogpoint(), LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeqSet", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSet", {TemporalTypes::tint()}, TemporalTypes::tint(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSet", {TemporalTypes::tbigint()}, TemporalTypes::tbigint(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSet", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSet", {TemporalTypes::tfloat(), LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeqSet", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_temporal_as_tsequenceset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ceil", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tfloat_ceil)); - RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {TemporalTypes::tfloat(), LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_tfloat_degrees)); - RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tfloat_degrees_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("floor", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tfloat_floor)); - RegisterSerializedScalarFunction(loader, ScalarFunction("radians", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tfloat_radians)); - RegisterSerializedScalarFunction(loader, ScalarFunction("scaleValue", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tfloat_scale_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("shiftScaleValue", {TemporalTypes::tfloat(), LogicalType::DOUBLE, LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tfloat_shift_scale_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("shiftValue", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tfloat_shift_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("scaleValue", {TemporalTypes::tint(), LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tint_scale_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("scaleValue", {TemporalTypes::tbigint(), LogicalType::BIGINT}, TemporalTypes::tbigint(), Gen_tbigint_scale_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("shiftScaleValue", {TemporalTypes::tint(), LogicalType::INTEGER, LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tint_shift_scale_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("shiftScaleValue", {TemporalTypes::tbigint(), LogicalType::BIGINT, LogicalType::BIGINT}, TemporalTypes::tbigint(), Gen_tbigint_shift_scale_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("shiftValue", {TemporalTypes::tint(), LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tint_shift_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("shiftValue", {TemporalTypes::tbigint(), LogicalType::BIGINT}, TemporalTypes::tbigint(), Gen_tbigint_shift_value)); -} - -void RegisterGenerated_meos_temporal_constructor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {LogicalType::LIST(TgeompointType::tgeompoint())}, TgeompointType::tgeompoint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {LogicalType::LIST(TgeogpointType::tgeogpoint())}, TgeogpointType::tgeogpoint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TgeogpointType::tgeogpoint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {LogicalType::LIST(TemporalTypes::tbool())}, TemporalTypes::tbool(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {LogicalType::LIST(TemporalTypes::tbool()), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {LogicalType::LIST(TemporalTypes::tbool()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {LogicalType::LIST(TemporalTypes::tbool()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {LogicalType::LIST(TemporalTypes::tint())}, TemporalTypes::tint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::tint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {LogicalType::LIST(TemporalTypes::tbigint())}, TemporalTypes::tbigint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::tbigint(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {LogicalType::LIST(TemporalTypes::tfloat())}, TemporalTypes::tfloat(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {LogicalType::LIST(TemporalTypes::ttext())}, TemporalTypes::ttext(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {LogicalType::LIST(TemporalTypes::ttext()), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {LogicalType::LIST(TemporalTypes::ttext()), LogicalType::VARCHAR, LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {LogicalType::LIST(TemporalTypes::ttext()), LogicalType::VARCHAR, LogicalType::BOOLEAN, LogicalType::BOOLEAN}, TemporalTypes::ttext(), Gen_tsequence_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSet", {LogicalType::LIST(TgeompointType::tgeompoint())}, TgeompointType::tgeompoint(), Gen_tsequenceset_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSet", {LogicalType::LIST(TgeogpointType::tgeogpoint())}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeqSet", {LogicalType::LIST(TemporalTypes::tbool())}, TemporalTypes::tbool(), Gen_tsequenceset_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSet", {LogicalType::LIST(TemporalTypes::tint())}, TemporalTypes::tint(), Gen_tsequenceset_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSet", {LogicalType::LIST(TemporalTypes::tbigint())}, TemporalTypes::tbigint(), Gen_tsequenceset_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSet", {LogicalType::LIST(TemporalTypes::tfloat())}, TemporalTypes::tfloat(), Gen_tsequenceset_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeqSet", {LogicalType::LIST(TemporalTypes::ttext())}, TemporalTypes::ttext(), Gen_tsequenceset_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSetGaps", {LogicalType::LIST(TgeompointType::tgeompoint())}, TgeompointType::tgeompoint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSetGaps", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::INTERVAL}, TgeompointType::tgeompoint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSetGaps", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSetGaps", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::INTERVAL, LogicalType::DOUBLE, LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSetGaps", {LogicalType::LIST(TgeogpointType::tgeogpoint())}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSetGaps", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::INTERVAL}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSetGaps", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSetGaps", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::INTERVAL, LogicalType::DOUBLE, LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbool())}, TemporalTypes::tbool(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbool()), LogicalType::INTERVAL}, TemporalTypes::tbool(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tint())}, TemporalTypes::tint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::INTERVAL}, TemporalTypes::tint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tint()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TemporalTypes::tint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbigint())}, TemporalTypes::tbigint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::INTERVAL}, TemporalTypes::tbigint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSetGaps", {LogicalType::LIST(TemporalTypes::tbigint()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TemporalTypes::tbigint(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSetGaps", {LogicalType::LIST(TemporalTypes::tfloat())}, TemporalTypes::tfloat(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSetGaps", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::INTERVAL}, TemporalTypes::tfloat(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSetGaps", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::INTERVAL, LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSetGaps", {LogicalType::LIST(TemporalTypes::tfloat()), LogicalType::INTERVAL, LogicalType::DOUBLE, LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeqSetGaps", {LogicalType::LIST(TemporalTypes::ttext())}, TemporalTypes::ttext(), Gen_tsequenceset_make_gaps)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeqSetGaps", {LogicalType::LIST(TemporalTypes::ttext()), LogicalType::INTERVAL}, TemporalTypes::ttext(), Gen_tsequenceset_make_gaps)); -} - -void RegisterGenerated_meos_quadbin_comp_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_eq_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_eq_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_always_eq_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_always_eq_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_ne_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {QuadbinTypes::quadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_ne_quadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_always_ne_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {QuadbinTypes::tquadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_always_ne_tquadbin_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_tquadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_eq_tquadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_tquadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_ever_ne_tquadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_eq_tquadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_eq_tquadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_ne_tquadbin_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, LogicalType::BOOLEAN, Gen_always_ne_tquadbin_tquadbin)); -} - -void RegisterGenerated_meos_s2cell_comp_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_eq_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_eq_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_always_eq_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_always_eq_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_ne_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_ne_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_always_ne_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_always_ne_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_ts2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_eq_ts2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_ts2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_ever_ne_ts2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_eq_ts2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_eq_ts2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_ne_ts2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, LogicalType::BOOLEAN, Gen_always_ne_ts2cell_ts2cell)); -} - -void RegisterGenerated_meos_geo_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_tgeo_centroid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_tgeo_centroid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TGeometryTypes::tgeometry()}, TgeompointType::tgeompoint(), Gen_tgeo_centroid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("centroid", {TGeographyTypes::tgeography()}, TgeogpointType::tgeogpoint(), Gen_tgeo_centroid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("angularDifference", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_angular_difference)); - RegisterSerializedScalarFunction(loader, ScalarFunction("angularDifference", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_angular_difference)); - RegisterSerializedScalarFunction(loader, ScalarFunction("azimuth", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_azimuth)); - RegisterSerializedScalarFunction(loader, ScalarFunction("azimuth", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_azimuth)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cumulativeLength", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_cumulative_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cumulativeLength", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_cumulative_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getX", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getX", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getY", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getY", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getZ", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getZ", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_get_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isSimple", {TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_tpoint_is_simple)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isSimple", {TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_tpoint_is_simple)); - RegisterSerializedScalarFunction(loader, ScalarFunction("length", {TgeompointType::tgeompoint()}, LogicalType::DOUBLE, Gen_tpoint_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("length", {TgeogpointType::tgeogpoint()}, LogicalType::DOUBLE, Gen_tpoint_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tpoint_speed)); - RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_speed)); -} - -void RegisterGenerated_meos_cbuffer_base_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {CbufferTypes::cbuffer()}, LogicalType::UINTEGER, Gen_cbuffer_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {CbufferTypes::cbuffer(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_cbuffer_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_same)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_same)); -} - -void RegisterGenerated_meos_geo_box_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {StboxType::stbox()}, LogicalType::UINTEGER, Gen_stbox_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {StboxType::stbox(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_stbox_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ne)); -} - -void RegisterGenerated_meos_rgeo_bbox_split(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TrgeometryTypes::trgeometry()}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_split_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_split_each_n_stboxes)); -} - -void RegisterGenerated_meos_rgeo_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_trgeometry_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TrgeometryTypes::trgeometry(), Gen_trgeometry_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TrgeometryTypes::trgeometry(), Gen_trgeometry_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TrgeometryTypes::trgeometry(), Gen_trgeometry_rotate_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("trgeometryInst", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_as_tinstant)); -} - -void RegisterGenerated_meos_pose_geopose_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {MobilityDuckGeometryType(), PoseTypes::tpose()}, TgeompointType::tgeompoint(), Gen_tpose_apply_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_yaw)); - RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_pitch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_roll)); - RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_speed)); - RegisterSerializedScalarFunction(loader, ScalarFunction("angularSpeed", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_angular_speed)); -} - -void RegisterGenerated_meos_npoint_base_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("getPosition", {NpointTypes::npoint()}, LogicalType::DOUBLE, Gen_npoint_position)); - RegisterSerializedScalarFunction(loader, ScalarFunction("route", {NpointTypes::npoint()}, LogicalType::BIGINT, Gen_npoint_route)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endPosition", {NpointTypes::nsegment()}, LogicalType::DOUBLE, Gen_nsegment_end_position)); - RegisterSerializedScalarFunction(loader, ScalarFunction("route", {NpointTypes::nsegment()}, LogicalType::BIGINT, Gen_nsegment_route)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startPosition", {NpointTypes::nsegment()}, LogicalType::DOUBLE, Gen_nsegment_start_position)); -} - -void RegisterGenerated_meos_npoint_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {NpointTypes::npoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_npoint_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {NpointTypes::npoint()}, LogicalType::VARCHAR, Gen_npoint_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {NpointTypes::npoint(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_npoint_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {NpointTypes::npoint()}, LogicalType::VARCHAR, Gen_npoint_as_text_d)); +void RegisterGenerated_meos_setspan_comp(ExtensionLoader &loader) { + for (auto &type : SetTypes::AllTypes()) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {type}, LogicalType::UINTEGER, Gen_set_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {type, LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_set_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {type, type}, LogicalType::BOOLEAN, Gen_set_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {type, type}, LogicalType::BOOLEAN, Gen_set_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {type, type}, LogicalType::BOOLEAN, Gen_set_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {type, type}, LogicalType::BOOLEAN, Gen_set_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {type, type}, LogicalType::BOOLEAN, Gen_set_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {type, type}, LogicalType::BOOLEAN, Gen_set_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {type, type}, LogicalType::BOOLEAN, Gen_set_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {type, type}, LogicalType::BOOLEAN, Gen_set_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {type, type}, LogicalType::BOOLEAN, Gen_set_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {type, type}, LogicalType::BOOLEAN, Gen_set_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {type, type}, LogicalType::BOOLEAN, Gen_set_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {type, type}, LogicalType::BOOLEAN, Gen_set_ne)); + } + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::cbufferset(), SetTypes::cbufferset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {H3indexTypes::h3indexset(), H3indexTypes::h3indexset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::jsonbset(), SetTypes::jsonbset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::npointset(), SetTypes::npointset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::pcpointset(), SetTypes::pcpointset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::pcpatchset(), SetTypes::pcpatchset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::poseset(), SetTypes::poseset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::posechainset(), SetTypes::posechainset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::quadbinset(), SetTypes::quadbinset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::s2cellset(), SetTypes::s2cellset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::intset(), SetTypes::intset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::bigintset(), SetTypes::bigintset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::floatset(), SetTypes::floatset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::textset(), SetTypes::textset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::dateset(), SetTypes::dateset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::tstzset(), SetTypes::tstzset()}, LogicalType::INTEGER, Gen_set_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::intspan(), SpanTypes::intspan()}, LogicalType::INTEGER, Gen_span_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::bigintspan(), SpanTypes::bigintspan()}, LogicalType::INTEGER, Gen_span_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::floatspan(), SpanTypes::floatspan()}, LogicalType::INTEGER, Gen_span_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::datespan(), SpanTypes::datespan()}, LogicalType::INTEGER, Gen_span_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::tstzspan(), SpanTypes::tstzspan()}, LogicalType::INTEGER, Gen_span_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::intspanset(), SpansetTypes::intspanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::bigintspanset(), SpansetTypes::bigintspanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::floatspanset(), SpansetTypes::floatspanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::datespanset(), SpansetTypes::datespanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::tstzspanset(), SpansetTypes::tstzspanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); + for (auto &type : SpanTypes::AllTypes()) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {type}, LogicalType::UINTEGER, Gen_span_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {type, LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_span_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {type, type}, LogicalType::BOOLEAN, Gen_span_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {type, type}, LogicalType::BOOLEAN, Gen_span_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {type, type}, LogicalType::BOOLEAN, Gen_span_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {type, type}, LogicalType::BOOLEAN, Gen_span_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {type, type}, LogicalType::BOOLEAN, Gen_span_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {type, type}, LogicalType::BOOLEAN, Gen_span_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {type, type}, LogicalType::BOOLEAN, Gen_span_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {type, type}, LogicalType::BOOLEAN, Gen_span_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {type, type}, LogicalType::BOOLEAN, Gen_span_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {type, type}, LogicalType::BOOLEAN, Gen_span_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {type, type}, LogicalType::BOOLEAN, Gen_span_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {type, type}, LogicalType::BOOLEAN, Gen_span_ne)); + } + for (auto &type : SpansetTypes::AllTypes()) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {type}, LogicalType::UINTEGER, Gen_spanset_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {type, LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_spanset_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {type, type}, LogicalType::BOOLEAN, Gen_spanset_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {type, type}, LogicalType::BOOLEAN, Gen_spanset_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {type, type}, LogicalType::BOOLEAN, Gen_spanset_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {type, type}, LogicalType::BOOLEAN, Gen_spanset_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {type, type}, LogicalType::BOOLEAN, Gen_spanset_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {type, type}, LogicalType::BOOLEAN, Gen_spanset_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {type, type}, LogicalType::BOOLEAN, Gen_spanset_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {type, type}, LogicalType::BOOLEAN, Gen_spanset_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {type, type}, LogicalType::BOOLEAN, Gen_spanset_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {type, type}, LogicalType::BOOLEAN, Gen_spanset_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {type, type}, LogicalType::BOOLEAN, Gen_spanset_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {type, type}, LogicalType::BOOLEAN, Gen_spanset_ne)); + } +} + +void RegisterGenerated_meos_pointcloud_comp_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpoint_tpcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpoint_tpcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpoint_tpcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpoint_tpcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpoint_tpcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpoint_tpcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpoint_tpcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TPcpointTypes::tpcpoint(), TPcpointTypes::tpcpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpoint_tpcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpatch_tpcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_ever_eq_tpcpatch_tpcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpatch_tpcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_ever_ne_tpcpatch_tpcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpatch_tpcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_always_eq_tpcpatch_tpcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpatch_tpcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::tpcpatch()}, LogicalType::BOOLEAN, Gen_always_ne_tpcpatch_tpcpatch)); +} + +void RegisterGenerated_meos_pointcloud_box_pos(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxLeft", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_left_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_left_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverleft", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overleft_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overleft_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxRight", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_right_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_right_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverright", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overright_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overright_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxBelow", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_below_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<|", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_below_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverbelow", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overbelow_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<|", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overbelow_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxAbove", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_above_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|>>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_above_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverabove", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overabove_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|&>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overabove_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxFront", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_front_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_back_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverback", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overback_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("/&>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overback_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxBefore", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_before_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverbefore", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overbefore_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxAfter", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_after_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverafter", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overafter_tpcbox_tpcbox)); +} + +void RegisterGenerated_meos_temporal_analytics_simplify(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_simplify_dp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_simplify_dp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_dp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, CbufferTypes::tcbuffer(), Gen_temporal_simplify_dp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TPcpointTypes::tpcpoint(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TPcpointTypes::tpcpoint(), Gen_temporal_simplify_dp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {PoseTypes::tpose(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, PoseTypes::tpose(), Gen_temporal_simplify_dp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_temporal_simplify_dp_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_temporal_simplify_dp_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_dp_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_temporal_simplify_dp_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TPcpointTypes::tpcpoint(), LogicalType::DOUBLE}, TPcpointTypes::tpcpoint(), Gen_temporal_simplify_dp_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_temporal_simplify_dp_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_simplify_max_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_simplify_max_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_max_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, CbufferTypes::tcbuffer(), Gen_temporal_simplify_max_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TPcpointTypes::tpcpoint(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TPcpointTypes::tpcpoint(), Gen_temporal_simplify_max_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {PoseTypes::tpose(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, PoseTypes::tpose(), Gen_temporal_simplify_max_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_temporal_simplify_max_dist_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_temporal_simplify_max_dist_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_max_dist_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_temporal_simplify_max_dist_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TPcpointTypes::tpcpoint(), LogicalType::DOUBLE}, TPcpointTypes::tpcpoint(), Gen_temporal_simplify_max_dist_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_temporal_simplify_max_dist_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_temporal_simplify_min_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_temporal_simplify_min_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_temporal_simplify_min_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_min_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_temporal_simplify_min_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_temporal_simplify_min_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TPcpointTypes::tpcpoint(), LogicalType::DOUBLE}, TPcpointTypes::tpcpoint(), Gen_temporal_simplify_min_dist)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_temporal_simplify_min_dist)); +} + +void RegisterGenerated_meos_json_comp_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_always_eq_tjsonb_jsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_always_eq_tjsonb_jsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_always_eq_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_always_eq_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_always_ne_tjsonb_jsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_always_ne_tjsonb_jsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_always_ne_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_always_ne_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_ever_eq_tjsonb_jsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_ever_eq_tjsonb_jsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_ever_eq_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_ever_eq_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_ever_ne_tjsonb_jsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_ever_ne_tjsonb_jsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_ever_ne_tjsonb_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_ever_ne_tjsonb_tjsonb)); +} + +void RegisterGenerated_meos_pose_base_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {PoseTypes::pose()}, LogicalType::UINTEGER, Gen_pose_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {PoseTypes::pose(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_pose_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_same)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_same)); +} + +void RegisterGenerated_meos_box_bbox_pos(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxAfter", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_after_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxBefore", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_before_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxLeft", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverafter", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overafter_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverbefore", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overbefore_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverleft", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverright", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxRight", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_tbox_tbox)); +} + +void RegisterGenerated_meos_s2cell_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("s2cell", {LogicalType::BIGINT}, S2cellTypes::s2cell(), Gen_bigint_to_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {LogicalType::BIGINT}, S2cellTypes::s2cell(), Gen_bigint_to_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TemporalTypes::tbigint()}, S2cellTypes::ts2cell(), Gen_tbigint_to_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, S2cellTypes::ts2cell(), Gen_tbigint_to_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {S2cellTypes::ts2cell()}, TemporalTypes::tbigint(), Gen_ts2cell_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {S2cellTypes::ts2cell()}, TemporalTypes::tbigint(), Gen_ts2cell_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_tgeogpoint_to_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tgeogpoint_to_ts2cell_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeompointType::tgeompoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_tgeompoint_to_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tgeompoint_to_ts2cell_d)); +} + +void RegisterGenerated_meos_pose_restrict(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {PoseTypes::tpose(), MobilityDuckGeometryType()}, PoseTypes::tpose(), Gen_tpose_at_geom)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_at_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {PoseTypes::tpose(), MobilityDuckGeometryType()}, PoseTypes::tpose(), Gen_tpose_minus_geom)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_minus_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atElevation", {PoseTypes::tpose(), SpanTypes::floatspan()}, PoseTypes::tpose(), Gen_tpose_at_elevation)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusElevation", {PoseTypes::tpose(), SpanTypes::floatspan()}, PoseTypes::tpose(), Gen_tpose_minus_elevation)); +} + +void RegisterGenerated_meos_cbuffer_restrict(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_at_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_at_geom)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_minus_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_minus_geom)); +} + +void RegisterGenerated_meos_pointcloud_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TemporalTypes::tbool(), Gen_teq_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TemporalTypes::tbool(), Gen_tne_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TemporalTypes::tbool(), Gen_teq_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TemporalTypes::tbool(), Gen_tne_tpcpatch_pcpatch)); +} + +void RegisterGenerated_meos_pointcloud_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TPcpointTypes::tpcpoint()}, TPcpointTypes::pcpoint(), Gen_tpcpoint_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TPcpointTypes::tpcpoint()}, TPcpointTypes::pcpoint(), Gen_tpcpoint_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TPcpatchTypes::tpcpatch()}, TPcpatchTypes::pcpatch(), Gen_tpcpatch_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TPcpatchTypes::tpcpatch()}, TPcpatchTypes::pcpatch(), Gen_tpcpatch_end_value)); } void RegisterGenerated_meos_posechain_transf(ExtensionLoader &loader) { @@ -3904,31 +4086,33 @@ void RegisterGenerated_meos_posechain_transf(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {PosechainTypes::tposechain(), LogicalType::DOUBLE}, PosechainTypes::tposechain(), Gen_tposechain_rotate_z)); } -void RegisterGenerated_meos_cbuffer_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_teq_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tne_tcbuffer_cbuffer)); +void RegisterGenerated_meos_quadbin_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinFromHexWKB", {LogicalType::VARCHAR}, QuadbinTypes::quadbin(), Gen_quadbin_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinFromText", {LogicalType::VARCHAR}, QuadbinTypes::quadbin(), Gen_quadbin_in)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {QuadbinTypes::quadbin()}, LogicalType::VARCHAR, Gen_quadbin_out)); } -void RegisterGenerated_meos_h3_base_latlng(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {H3indexTypes::h3index()}, MobilityDuckGeometryType(), Gen_h3index_cell_to_point)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {H3indexTypes::h3index()}, MobilityDuckGeometryType(), Gen_h3index_cell_to_boundary)); +void RegisterGenerated_meos_json_restrict(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_at_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_minus_value)); } -void RegisterGenerated_meos_pointcloud_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TPcpointTypes::tpcpoint()}, LogicalType::VARCHAR, Gen_tpcpoint_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TPcpatchTypes::tpcpatch()}, LogicalType::VARCHAR, Gen_tpcpatch_out)); +void RegisterGenerated_meos_pose_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tbool(), Gen_teq_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tbool(), Gen_tne_tpose_pose)); } -void RegisterGenerated_meos_h3_base_hierarchy(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_h3index_cell_to_parent)); +void RegisterGenerated_meos_posechain_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tpose", {PosechainTypes::tposechain()}, PoseTypes::tpose(), Gen_tposechain_to_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PosechainTypes::tposechain()}, PoseTypes::tpose(), Gen_tposechain_to_tpose)); } -void RegisterGenerated_meos_posechain_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("numPoses", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tposechain_num_poses)); +void RegisterGenerated_meos_h3_base_hierarchy(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_h3index_cell_to_parent)); } -void RegisterGenerated_meos_h3_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {H3indexTypes::th3index()}, LogicalType::VARCHAR, Gen_th3index_out)); +void RegisterGenerated_meos_s2cell_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {S2cellTypes::ts2cell()}, LogicalType::VARCHAR, Gen_ts2cell_out)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_5.cpp b/src/generated/generated_temporal_udfs_5.cpp index c9db4da3..72dda64d 100644 --- a/src/generated/generated_temporal_udfs_5.cpp +++ b/src/generated/generated_temporal_udfs_5.cpp @@ -1972,6 +1972,61 @@ static void Gen_overlaps_spanset_span(DataChunk &args, ExpressionState &, Vector }); } +static void Gen_adjacent_bigint_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = adjacent_bigint_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_adjacent_date_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](date_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = adjacent_date_spanset(ToMeosDate(a1), s); + free(s); + return r; + }); +} + +static void Gen_adjacent_float_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](double a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = adjacent_float_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_adjacent_int_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int32_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = adjacent_int_spanset(a1, s); + free(s); + return r; + }); +} + +static void Gen_adjacent_timestamptz_spanset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](timestamp_tz_t a1, string_t b) { + SpanSet *s = BlobToSpanSet(b); + bool r = adjacent_timestamptz_spanset(DuckDBToMeosTimestamp(a1).value, s); + free(s); + return r; + }); +} + static void Gen_adjacent_spanset_bigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), @@ -2599,80 +2654,68 @@ static void Gen_tnumber_delta_value(DataChunk &args, ExpressionState &, Vector & } -// ===== @ingroup meos_cbuffer_rel_temp ===== -static void Gen_tcontains_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_restrict ===== +static void Gen_trgeometry_after_timestamptz(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 = tcontains_geo_tcbuffer(gs, t); - free(t); free(gs); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, timestamp_tz_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = trgeometry_after_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcontains_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_after_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tcontains_tcbuffer_geo(t, gs); - free(t); free(gs); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = trgeometry_after_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcontains_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_before_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, timestamp_tz_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tcontains_tcbuffer_cbuffer(t, a2p); - free(a2p); free(t); + Temporal *r = trgeometry_before_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcontains_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_before_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tcontains_tcbuffer_tcbuffer(t1, t2); - free(t1); free(t2); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = trgeometry_before_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcovers_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_at_geom(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 { + [&](string_t in_t, string_t in_g, 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 = tcovers_geo_tcbuffer(gs, t); + Temporal *r = trgeometry_at_geom(t, gs); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcovers_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_minus_geom(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> string_t { @@ -2682,625 +2725,383 @@ static void Gen_tcovers_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector GSERIALIZED *gs_geog = geom_to_geog(gs); free(gs); gs = gs_geog; } - Temporal *r = tcovers_tcbuffer_geo(t, gs); + Temporal *r = trgeometry_minus_geom(t, gs); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcovers_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_at_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tcovers_tcbuffer_cbuffer(t, a2p); + Pose *a2p = BlobToPose(a2); + Temporal *r = trgeometry_at_value(t, a2p); free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcovers_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_minus_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tcovers_tcbuffer_tcbuffer(t1, t2); - free(t1); free(t2); + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pose *a2p = BlobToPose(a2); + Temporal *r = trgeometry_minus_value(t, a2p); + free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdwithin_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_at_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in_g, string_t in_t, double d, 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 = tdwithin_geo_tcbuffer(gs, t, d); - free(t); free(gs); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = trgeometry_at_timestamptz(t, DuckDBToMeosTimestamp(a2).value); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdwithin_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_minus_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in_t, string_t in_g, double d, 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 = tdwithin_tcbuffer_geo(t, gs, d); - free(t); free(gs); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = trgeometry_minus_timestamptz(t, DuckDBToMeosTimestamp(a2).value); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdwithin_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_at_values(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in1, string_t in2, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tdwithin_tcbuffer_tcbuffer(t1, t2, a2); - free(t1); free(t2); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Set *cc = BlobToSet(b); + Temporal *r = trgeometry_at_values(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdisjoint_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_minus_values(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 = tdisjoint_geo_tcbuffer(gs, t); - free(t); free(gs); + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Set *cc = BlobToSet(b); + Temporal *r = trgeometry_minus_values(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdisjoint_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_at_tstzset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tdisjoint_tcbuffer_geo(t, gs); - free(t); free(gs); + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Set *cc = BlobToSet(b); + Temporal *r = trgeometry_at_tstzset(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdisjoint_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_minus_tstzset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tdisjoint_tcbuffer_cbuffer(t, a2p); - free(a2p); free(t); + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Set *cc = BlobToSet(b); + Temporal *r = trgeometry_minus_tstzset(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdisjoint_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_at_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tdisjoint_tcbuffer_tcbuffer(t1, t2); - free(t1); free(t2); + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + Temporal *r = trgeometry_at_tstzspan(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tintersects_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_minus_tstzspan(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 = tintersects_geo_tcbuffer(gs, t); - free(t); free(gs); + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + Temporal *r = trgeometry_minus_tstzspan(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tintersects_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_at_tstzspanset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tintersects_tcbuffer_geo(t, gs); - free(t); free(gs); + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + SpanSet *cc = BlobToSpanSet(b); + Temporal *r = trgeometry_at_tstzspanset(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tintersects_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_minus_tstzspanset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tintersects_tcbuffer_cbuffer(t, a2p); - free(a2p); free(t); + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + SpanSet *cc = BlobToSpanSet(b); + Temporal *r = trgeometry_minus_tstzspanset(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tintersects_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_at_elevation(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tintersects_tcbuffer_tcbuffer(t1, t2); - free(t1); free(t2); + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + Temporal *r = trgeometry_at_elevation(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttouches_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_minus_elevation(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 = ttouches_geo_tcbuffer(gs, t); - free(t); free(gs); + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + Temporal *r = trgeometry_minus_elevation(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttouches_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_temporal_conversion ===== +static void Gen_tbool_to_tint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = ttouches_tcbuffer_geo(t, gs); - free(t); free(gs); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tbool_to_tint(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttouches_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_to_tint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = ttouches_tcbuffer_cbuffer(t, a2p); - free(a2p); free(t); + Temporal *r = tfloat_to_tint(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttouches_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = ttouches_tcbuffer_tcbuffer(t1, t2); - free(t1); free(t2); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tfloat_to_tbigint(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_rgeo_comp_ever ===== -static void Gen_always_eq_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tint_to_tfloat(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) -> bool { - 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; - } - int r = always_eq_geo_trgeometry(gs, t); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tint_to_tfloat(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_always_eq_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tint_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = always_eq_trgeometry_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tint_to_tbigint(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_always_eq_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbigint_to_tint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_trgeometry_trgeometry(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tbigint_to_tint(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_always_ne_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbigint_to_tfloat(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) -> bool { - 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; - } - int r = always_ne_geo_trgeometry(gs, t); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; - }); -} - -static void Gen_always_ne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = always_ne_trgeometry_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tbigint_to_tfloat(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_always_ne_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_to_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_trgeometry_trgeometry(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Span *r = temporal_to_tstzspan(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_ever_eq_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tnumber_to_span(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) -> bool { - 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; - } - int r = ever_eq_geo_trgeometry(gs, t); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Span *r = tnumber_to_span(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return SpanToBlob(result, r); }); } -static void Gen_ever_eq_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tnumber_to_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = ever_eq_trgeometry_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + TBox *r = tnumber_to_tbox(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return TboxToBlob(result, r); }); } -static void Gen_ever_eq_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_trgeometry_trgeometry(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); - }); -} -static void Gen_ever_ne_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_dist ===== +static void Gen_tdistance_tgeo_geo(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) -> bool { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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; } - int r = ever_ne_geo_trgeometry(gs, t); + Temporal *r = tdistance_tgeo_geo(t, gs); free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_ne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdistance_tgeo_geo_rev(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; } - int r = ever_ne_trgeometry_geo(t, gs); + Temporal *r = tdistance_tgeo_geo(t, gs); free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_ne_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdistance_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_trgeometry_trgeometry(t1, t2); + Temporal *r = tdistance_tgeo_tgeo(t1, t2); free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); - }); -} - - -// ===== @ingroup meos_s2cell ===== -static void Gen_s2cell_is_valid_cell(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> bool { - bool r = s2cell_is_valid_cell(static_cast(a0)); - return (bool) r; - }); -} - -static void Gen_s2cell_cell_to_token(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - char * r = s2cell_cell_to_token(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return TakeCString(result, r); - }); -} - -static void Gen_s2cell_token_to_cell(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a0) -> int64_t { - uint64_t r = s2cell_token_to_cell(a0.GetString().c_str()); - return static_cast(r); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_s2cell_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> uint32_t { - uint32_t r = s2cell_get_resolution(static_cast(a0)); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> double { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + double r = nad_tgeo_tgeo(t1, t2); + free(t1); free(t2); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -static void Gen_s2cell_get_face(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_mindistance_tgeoarr_tgeoarr(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> uint32_t { - uint32_t r = s2cell_get_face(static_cast(a0)); + auto &lv1 = args.data[0]; auto &lv2 = args.data[1]; + auto &child1 = ListVector::GetEntry(lv1); child1.Flatten(ListVector::GetListSize(lv1)); + auto &child2 = ListVector::GetEntry(lv2); child2.Flatten(ListVector::GetListSize(lv2)); + BinaryExecutor::ExecuteWithNulls( + lv1, lv2, result, args.size(), + [&](list_entry_t le1, list_entry_t le2, ValidityMask &mask, idx_t idx) -> double { + int n1, n2; + const Temporal **a1 = ListToTemporalArr(child1, le1, &n1); + const Temporal **a2 = ListToTemporalArr(child2, le2, &n2); + double r = mindistance_tgeoarr_tgeoarr(a1, n1, a2, n2); + FreeTemporalArr(a1, n1); FreeTemporalArr(a2, n2); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; }); } -static void Gen_s2cell_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1) -> int64_t { - uint64_t r = s2cell_cell_to_parent(static_cast(a0), static_cast(a1)); - return static_cast(r); - }); -} - -static void Gen_s2cell_cell_to_child(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tgeo_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::Execute(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](int64_t a0, int32_t a1, int32_t a2) -> int64_t { - uint64_t r = s2cell_cell_to_child(static_cast(a0), static_cast(a1), static_cast(a2)); - return static_cast(r); - }); -} - -static void Gen_s2cell_cell_contains(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = s2cell_cell_contains(static_cast(a0), static_cast(a1)); - return (bool) r; - }); -} - -static void Gen_s2cell_common_ancestor_level(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> int32_t { - int32_t r = s2cell_common_ancestor_level(static_cast(a0), static_cast(a1)); - return (int32_t) r; - }); -} - -static void Gen_s2cell_range_min(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> int64_t { - uint64_t r = s2cell_range_min(static_cast(a0)); - return static_cast(r); - }); -} - -static void Gen_s2cell_range_max(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> int64_t { - uint64_t r = s2cell_range_max(static_cast(a0)); - return static_cast(r); - }); -} - -static void Gen_s2cell_cell_area(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> double { - double r = s2cell_cell_area(static_cast(a0)); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { + Temporal *t = BlobToTemporal(a); + STBox *bx = BlobToStbox(b); + double r = nad_tgeo_stbox(t, bx); + free(t); free(bx); + if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } return (double) r; }); } -static void Gen_s2cell_edge_length(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1) -> double { - double r = s2cell_edge_length(static_cast(a0), static_cast(a1)); - return (double) r; - }); -} - -static void Gen_s2cell_cell_to_geogpoint(DataChunk &args, ExpressionState &state, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - GSERIALIZED * r = s2cell_cell_to_geogpoint(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; - }); -} - -static void Gen_s2cell_cell_to_geog(DataChunk &args, ExpressionState &state, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - GSERIALIZED * r = s2cell_cell_to_geog(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; - }); -} - -static void Gen_s2cell_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - STBox * r = s2cell_to_stbox(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); - }); -} - -static void Gen_s2cell_timestamptz_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, timestamp_tz_t a1, ValidityMask &mask, idx_t idx) -> string_t { - STBox * r = s2cell_timestamptz_to_stbox(static_cast(a0), DuckDBToMeosTimestamp(a1).value); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); - }); -} - -static void Gen_s2cell_tstzspan_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, string_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Span *p1 = BlobToSpan(a1); - STBox * r = s2cell_tstzspan_to_stbox(static_cast(a0), p1); - free(p1); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); - }); -} - -static void Gen_ts2cell_cell_to_token(DataChunk &args, ExpressionState &, 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); - Temporal *r = ts2cell_cell_to_token(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - // ===== @ingroup meos_cbuffer_dist ===== static void Gen_tdistance_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { @@ -3429,584 +3230,578 @@ static void Gen_nad_tcbuffer_stbox(DataChunk &args, ExpressionState &, Vector &r } -// ===== @ingroup meos_rgeo_analytics_similarity ===== -static void Gen_trgeometry_hausdorff_distance(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_dist ===== +static void Gen_tdistance_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - double r = trgeometry_hausdorff_distance(t1, t2); - free(t1); free(t2); - return (double) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pose *a2p = BlobToPose(a2); + Temporal *r = tdistance_tpose_pose(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_frechet_distance(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdistance_tpose_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - double r = trgeometry_frechet_distance(t1, t2); - free(t1); free(t2); - return (double) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tdistance_tpose_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_dyntimewarp_distance(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdistance_tpose_geo_rev(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - double r = trgeometry_dyntimewarp_distance(t1, t2); - free(t1); free(t2); - return (double) r; - }); -} - -struct PathBind_trgeometry_frechet_path : public TableFunctionData { string_t a, b; }; -struct PathState_trgeometry_frechet_path : public GlobalTableFunctionState { - idx_t idx = 0; - std::vector col0; - std::vector col1; -}; -static unique_ptr PathBindFn_trgeometry_frechet_path(ClientContext &, TableFunctionBindInput &input, - vector &return_types, vector &names) { - if (input.inputs.size() != 2 || input.inputs[0].IsNull() || input.inputs[1].IsNull()) - throw BinderException("frechetDistancePath: expects two non-null temporal arguments"); - auto bind = make_uniq(); - bind->a = StringValue::Get(input.inputs[0]); - bind->b = StringValue::Get(input.inputs[1]); - return_types = {LogicalType::INTEGER, LogicalType::INTEGER}; - names = {"i", "j"}; - return std::move(bind); -} -static unique_ptr PathInit_trgeometry_frechet_path(ClientContext &, TableFunctionInitInput &input) { - EnsureMeosThreadInitialized(); - auto &bind = input.bind_data->Cast(); - auto state = make_uniq(); - Temporal *t1 = BlobToTemporal(bind.a); - Temporal *t2 = BlobToTemporal(bind.b); - int count = 0; - Match *path = trgeometry_frechet_path(t1, t2, &count); - free(t1); free(t2); - if (path) { - state->col0.reserve(count); - state->col1.reserve(count); - for (int k = 0; k < count; k++) { - state->col0.push_back(path[k].i); - state->col1.push_back(path[k].j); - } - free(path); - } - return std::move(state); -} -static void PathExec_trgeometry_frechet_path(ClientContext &, TableFunctionInput &input, DataChunk &output) { - auto &state = input.global_state->Cast(); - idx_t total = state.col0.size(); - idx_t count = MinValue(STANDARD_VECTOR_SIZE, total - state.idx); - auto out0 = FlatVector::GetData(output.data[0]); - auto out1 = FlatVector::GetData(output.data[1]); - for (idx_t k = 0; k < count; k++) { - out0[k] = state.col0[state.idx + k]; - out1[k] = state.col1[state.idx + k]; - } - state.idx += count; - output.SetCardinality(count); -} - -struct PathBind_trgeometry_dyntimewarp_path : public TableFunctionData { string_t a, b; }; -struct PathState_trgeometry_dyntimewarp_path : public GlobalTableFunctionState { - idx_t idx = 0; - std::vector col0; - std::vector col1; -}; -static unique_ptr PathBindFn_trgeometry_dyntimewarp_path(ClientContext &, TableFunctionBindInput &input, - vector &return_types, vector &names) { - if (input.inputs.size() != 2 || input.inputs[0].IsNull() || input.inputs[1].IsNull()) - throw BinderException("dynTimeWarpPath: expects two non-null temporal arguments"); - auto bind = make_uniq(); - bind->a = StringValue::Get(input.inputs[0]); - bind->b = StringValue::Get(input.inputs[1]); - return_types = {LogicalType::INTEGER, LogicalType::INTEGER}; - names = {"i", "j"}; - return std::move(bind); -} -static unique_ptr PathInit_trgeometry_dyntimewarp_path(ClientContext &, TableFunctionInitInput &input) { - EnsureMeosThreadInitialized(); - auto &bind = input.bind_data->Cast(); - auto state = make_uniq(); - Temporal *t1 = BlobToTemporal(bind.a); - Temporal *t2 = BlobToTemporal(bind.b); - int count = 0; - Match *path = trgeometry_dyntimewarp_path(t1, t2, &count); - free(t1); free(t2); - if (path) { - state->col0.reserve(count); - state->col1.reserve(count); - for (int k = 0; k < count; k++) { - state->col0.push_back(path[k].i); - state->col1.push_back(path[k].j); - } - free(path); - } - return std::move(state); -} -static void PathExec_trgeometry_dyntimewarp_path(ClientContext &, TableFunctionInput &input, DataChunk &output) { - auto &state = input.global_state->Cast(); - idx_t total = state.col0.size(); - idx_t count = MinValue(STANDARD_VECTOR_SIZE, total - state.idx); - auto out0 = FlatVector::GetData(output.data[0]); - auto out1 = FlatVector::GetData(output.data[1]); - for (idx_t k = 0; k < count; k++) { - out0[k] = state.col0[state.idx + k]; - out1[k] = state.col1[state.idx + k]; - } - state.idx += count; - output.SetCardinality(count); -} - - -// ===== @ingroup meos_cellindex ===== -static void Gen_tcellindex_get_resolution(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcellindex_get_resolution(t); - free(t); + 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 = tdistance_tpose_geo(t, gs); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcellindex_is_valid_cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdistance_tpose_tpose(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcellindex_is_valid_cell(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tdistance_tpose_tpose(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcellindex_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> double { Temporal *t = BlobToTemporal(in); - Temporal *r = tcellindex_cell_to_parent(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + Pose *a2p = BlobToPose(a2); + double r = nad_tpose_pose(t, a2p); + free(a2p); free(t); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -static void Gen_tcellindex_cell_to_point(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tpose_tpose(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcellindex_cell_to_point(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> double { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + double r = nad_tpose_tpose(t1, t2); + free(t1); free(t2); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -static void Gen_tcellindex_cell_to_boundary(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nai_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tcellindex_cell_to_boundary(t); - free(t); + Pose *a2p = BlobToPose(a2); + Temporal *r = (Temporal *) nai_tpose_pose(t, a2p); + free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcellindex_cell_area(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tpose_stbox(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcellindex_cell_area(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> double { + Temporal *t = BlobToTemporal(a); + STBox *bx = BlobToStbox(b); + double r = nad_tpose_stbox(t, bx); + free(t); free(bx); + if (r == std::numeric_limits::max()) { mask.SetInvalid(idx); return double(); } + return (double) r; }); } -static void Gen_tquadbin_cell_to_quadkey(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_posechain_base_comp ===== +static void Gen_posechain_hash(DataChunk &args, ExpressionState &, 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); - Temporal *r = tquadbin_cell_to_quadkey(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + PoseChain *v = BlobToPosechain(in); + uint32_t r = posechain_hash(v); + free(v); + return r; }); } - -// ===== @ingroup meos_box_bbox_pos ===== -static void Gen_after_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = after_tbox_tbox(s1, s2); - free(s1); free(s2); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + PoseChain *s = BlobToPosechain(in); + uint64_t r = posechain_hash_extended(s, a2); + free(s); return r; }); } -static void Gen_before_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = before_tbox_tbox(s1, s2); + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_eq(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_left_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = left_tbox_tbox(s1, s2); + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_ne(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overafter_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_same(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overafter_tbox_tbox(s1, s2); + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_same(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overbefore_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overbefore_tbox_tbox(s1, s2); + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_lt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overleft_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overleft_tbox_tbox(s1, s2); + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_le(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overright_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overright_tbox_tbox(s1, s2); + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_gt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_right_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = right_tbox_tbox(s1, s2); + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_ge(s1, s2); free(s1); free(s2); return r; }); } -// ===== @ingroup meos_h3_edges ===== -static void Gen_h3_origin_to_directed_edges(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_traversal ===== +static void Gen_h3_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_grid_disk(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_h3_grid_ring(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_grid_ring(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_h3_grid_path_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_origin_to_directed_edges(static_cast(a0)); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_grid_path_cells(static_cast(a0), static_cast(a1)); return SetToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_are_neighbor_cells(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_grid_distance(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_are_neighbor_cells(t1, t2); + Temporal *r = th3index_grid_distance(t1, t2); free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_cells_to_directed_edge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cell_to_local_ij(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_cells_to_directed_edge(t1, t2); + Temporal *r = th3index_cell_to_local_ij(t1, t2); free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_is_valid_directed_edge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_local_ij_to_cell(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_is_valid_directed_edge(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = th3index_local_ij_to_cell(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_get_directed_edge_origin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3indexset_grid_disk(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_get_directed_edge_origin(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = h3indexset_grid_disk(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_get_directed_edge_destination(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_quadbin_base_comp ===== +static void Gen_quadbin_eq(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_get_directed_edge_destination(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_eq(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_th3index_directed_edge_to_boundary(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_ne(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_directed_edge_to_boundary(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_ne(static_cast(a0), static_cast(a1)); + return (bool) r; }); } +static void Gen_quadbin_lt(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_lt(static_cast(a0), static_cast(a1)); + return (bool) r; + }); +} -// ===== @ingroup meos_pointcloud_box_comp ===== -static void Gen_tpcbox_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_eq(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_le(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_tpcbox_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_ne(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_gt(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_tpcbox_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_lt(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_ge(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_tpcbox_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cmp(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_le(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> int32_t { + int32_t r = quadbin_cmp(static_cast(a0), static_cast(a1)); + return (int32_t) r; }); } -static void Gen_tpcbox_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_gt(s1, s2); - free(s1); free(s2); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> uint32_t { + uint32_t r = quadbin_hash(static_cast(a0)); return r; }); } -static void Gen_tpcbox_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_ge(s1, s2); - free(s1); free(s2); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, uint64_t a1) -> uint64_t { + uint64_t r = quadbin_hash_extended(static_cast(a0), a1); return r; }); } -// ===== @ingroup meos_s2cell_conversion ===== -static void Gen_bigint_to_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_comp_temp ===== +static void Gen_teq_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = teq_s2cell_ts2cell((uint64_t) a1, t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_teq_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = teq_ts2cell_s2cell(t, (uint64_t) a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_teq_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = teq_ts2cell_ts2cell(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tne_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> int64_t { - uint64_t r = bigint_to_s2cell(a0); - return static_cast(r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tne_s2cell_ts2cell((uint64_t) a1, t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tbigint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tbigint_to_ts2cell(t); + Temporal *r = tne_ts2cell_s2cell(t, (uint64_t) a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ts2cell_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tne_ts2cell_ts2cell(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + + +// ===== @ingroup meos_pose_geopose_accessor ===== +static void Gen_tpose_apply_geo(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 = tpose_apply_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tpose_yaw(DataChunk &args, ExpressionState &, 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); - Temporal *r = ts2cell_to_tbigint(t); + Temporal *r = tpose_yaw(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeogpoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_pitch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeogpoint_to_ts2cell(t, a2); + Temporal *r = tpose_pitch(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_roll(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeompoint_to_ts2cell(t, a2); + Temporal *r = tpose_roll(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_pose_base_geopose ===== -static void Gen_tpose_as_geopose_stream(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_speed(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tpose_as_geopose_stream(t, a2); + Temporal *r = tpose_speed(t); free(t); - return TakeCString(result, r); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_as_geopose_stream_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_angular_speed(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tpose_as_geopose_stream(t, -1); + Temporal *r = tpose_angular_speed(t); free(t); - return TakeCString(result, r); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_yaw(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_npoint_base_accessor ===== +static void Gen_npoint_position(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Pose *v = BlobToPose(in); - double r = pose_yaw(v); + Npoint *v = BlobToNpoint(in); + double r = npoint_position(v); free(v); if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; }); } -static void Gen_pose_pitch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_route(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Npoint *v = BlobToNpoint(in); + int64_t r = npoint_route(v); + free(v); + return r; + }); +} + +static void Gen_nsegment_end_position(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Pose *v = BlobToPose(in); - double r = pose_pitch(v); + Nsegment *v = BlobToNsegment(in); + double r = nsegment_end_position(v); free(v); if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; }); } -static void Gen_pose_roll(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nsegment_route(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Nsegment *v = BlobToNsegment(in); + int64_t r = nsegment_route(v); + free(v); + return r; + }); +} + +static void Gen_nsegment_start_position(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Pose *v = BlobToPose(in); - double r = pose_roll(v); + Nsegment *v = BlobToNsegment(in); + double r = nsegment_start_position(v); free(v); if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; @@ -4014,52 +3809,76 @@ static void Gen_pose_roll(DataChunk &args, ExpressionState &, Vector &result) { } -// ===== @ingroup meos_cbuffer_base_inout ===== -static void Gen_cbuffer_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_base_inout ===== +static void Gen_posechain_as_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_ewkt(s, a2); + PoseChain *s = BlobToPosechain(a); + char *r = posechain_as_text(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_cbuffer_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_ewkt(s, 15); + PoseChain *s = BlobToPosechain(a); + char *r = posechain_as_text(s, 15); free(s); return TakeCString(result, r); }); } -static void Gen_cbuffer_as_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_text(s, a2); + PoseChain *s = BlobToPosechain(a); + char *r = posechain_as_ewkt(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_cbuffer_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_text(s, 15); + PoseChain *s = BlobToPosechain(a); + char *r = posechain_as_ewkt(s, 15); free(s); return TakeCString(result, r); }); } +// ===== @ingroup meos_geo_set_srid ===== +static void Gen_spatialset_set_srid(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = spatialset_set_srid(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_spatialset_transform(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = spatialset_transform(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + + // ===== @ingroup meos_pose_accessor ===== static void Gen_tpose_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); @@ -4098,71 +3917,52 @@ static void Gen_tpose_trajectory(DataChunk &args, ExpressionState &state, Vector } -// ===== @ingroup meos_rgeo_conversion ===== -static void Gen_trgeometry_to_tpose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_metrics ===== +static void Gen_th3index_edge_length(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_to_tpose(t); + Temporal *r = th3index_edge_length(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_great_circle_distance(DataChunk &args, ExpressionState &, 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); - Temporal *r = trgeometry_to_tgeompoint(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tgeogpoint_great_circle_distance(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_pointcloud_inout ===== +static void Gen_tpcpoint_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_to_tgeometry(t); + char * r = tpcpoint_out(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return TakeCString(result, r); }); } - -// ===== @ingroup meos_s2cell_set_accessor ===== -static void Gen_s2cellset_values(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Set *in = BlobToSet(blob); - int count = 0; - uint64_t * arr = s2cellset_values(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } +static void Gen_tpcpatch_out(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = tpcpatch_out(t); + free(t); + return TakeCString(result, r); + }); } @@ -4181,42 +3981,25 @@ static void Gen_intersection_stbox_stbox(DataChunk &args, ExpressionState &, Vec } -// ===== @ingroup meos_h3_comp ===== -static void Gen_ever_eq_h3indexset_th3index(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_s, string_t in_t, ValidityMask &mask, idx_t idx) { - Set *s = BlobToSet(in_s); - Temporal *t = BlobToTemporal(in_t); - int r = ever_eq_h3indexset_th3index(s, t); - free(s); free(t); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; - }); -} - - -// ===== @ingroup meos_s2cell_set_inout ===== -static void Gen_s2cellset_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_npoint_set_accessor ===== +static void Gen_npointset_routes(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Set *s = BlobToSet(in); - char * r = s2cellset_out(s); + Set *r = npointset_routes(s); free(s); - return TakeCString(result, r); + return SetToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_base_srid ===== -static void Gen_pose_srid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_base_inspection ===== +static void Gen_h3index_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Pose *v = BlobToPose(in); - int32_t r = pose_srid(v); - free(v); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> uint32_t { + uint32_t r = h3index_get_resolution(static_cast(a0)); return r; }); } @@ -4581,6 +4364,16 @@ void RegisterGenerated_meos_setspan_topo(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpansetTypes::datespanset(), SpanTypes::datespan()}, LogicalType::BOOLEAN, Gen_overlaps_spanset_span)); RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_spanset_span)); RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {SpansetTypes::tstzspanset(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_spanset_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_adjacent_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {LogicalType::BIGINT, SpansetTypes::bigintspanset()}, LogicalType::BOOLEAN, Gen_adjacent_bigint_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_adjacent_date_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {LogicalType::DATE, SpansetTypes::datespanset()}, LogicalType::BOOLEAN, Gen_adjacent_date_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_adjacent_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {LogicalType::DOUBLE, SpansetTypes::floatspanset()}, LogicalType::BOOLEAN, Gen_adjacent_float_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_adjacent_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {LogicalType::INTEGER, SpansetTypes::intspanset()}, LogicalType::BOOLEAN, Gen_adjacent_int_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_adjacent_timestamptz_spanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {LogicalType::TIMESTAMP_TZ, SpansetTypes::tstzspanset()}, LogicalType::BOOLEAN, Gen_adjacent_timestamptz_spanset)); RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_adjacent_spanset_bigint)); RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {SpansetTypes::bigintspanset(), LogicalType::BIGINT}, LogicalType::BOOLEAN, Gen_adjacent_spanset_bigint)); RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {SpansetTypes::datespanset(), LogicalType::DATE}, LogicalType::BOOLEAN, Gen_adjacent_spanset_date)); @@ -4701,80 +4494,143 @@ void RegisterGenerated_meos_temporal_math(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("deltaValue", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tnumber_delta_value)); } -void RegisterGenerated_meos_cbuffer_rel_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tContains", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tcontains_geo_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tContains", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tcontains_tcbuffer_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tContains", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tcontains_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tContains", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tcontains_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tCovers", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tcovers_geo_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tCovers", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tcovers_tcbuffer_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tCovers", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tcovers_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tCovers", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tcovers_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_geo_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_tcbuffer_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDisjoint", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tdisjoint_geo_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDisjoint", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tdisjoint_tcbuffer_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDisjoint", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tdisjoint_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDisjoint", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tdisjoint_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tIntersects", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tintersects_geo_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tIntersects", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tintersects_tcbuffer_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tIntersects", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tintersects_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tIntersects", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tintersects_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tTouches", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_ttouches_geo_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tTouches", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_ttouches_tcbuffer_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tTouches", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_ttouches_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tTouches", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_ttouches_tcbuffer_tcbuffer)); -} - -void RegisterGenerated_meos_rgeo_comp_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_trgeometry_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_trgeometry_trgeometry)); -} - -void RegisterGenerated_meos_s2cell(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_s2cell_is_valid_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2CellToToken", {S2cellTypes::s2cell()}, LogicalType::VARCHAR, Gen_s2cell_cell_to_token)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2TokenToCell", {LogicalType::VARCHAR}, S2cellTypes::s2cell(), Gen_s2cell_token_to_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {S2cellTypes::s2cell()}, LogicalType::UINTEGER, Gen_s2cell_get_resolution)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2GetFace", {S2cellTypes::s2cell()}, LogicalType::UINTEGER, Gen_s2cell_get_face)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {S2cellTypes::s2cell(), LogicalType::INTEGER}, S2cellTypes::s2cell(), Gen_s2cell_cell_to_parent)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2CellToChild", {S2cellTypes::s2cell(), LogicalType::INTEGER, LogicalType::INTEGER}, S2cellTypes::s2cell(), Gen_s2cell_cell_to_child)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2CellContains", {S2cellTypes::s2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_s2cell_cell_contains)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2CommonAncestorLevel", {S2cellTypes::s2cell(), S2cellTypes::s2cell()}, LogicalType::INTEGER, Gen_s2cell_common_ancestor_level)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2RangeMin", {S2cellTypes::s2cell()}, S2cellTypes::s2cell(), Gen_s2cell_range_min)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2RangeMax", {S2cellTypes::s2cell()}, S2cellTypes::s2cell(), Gen_s2cell_range_max)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {S2cellTypes::s2cell()}, LogicalType::DOUBLE, Gen_s2cell_cell_area)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2EdgeLength", {S2cellTypes::s2cell(), LogicalType::INTEGER}, LogicalType::DOUBLE, Gen_s2cell_edge_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {S2cellTypes::s2cell()}, MobilityDuckGeometryType(), Gen_s2cell_cell_to_geogpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {S2cellTypes::s2cell()}, MobilityDuckGeometryType(), Gen_s2cell_cell_to_geog)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {S2cellTypes::s2cell()}, StboxType::stbox(), Gen_s2cell_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {S2cellTypes::s2cell()}, StboxType::stbox(), Gen_s2cell_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {S2cellTypes::s2cell(), LogicalType::TIMESTAMP_TZ}, StboxType::stbox(), Gen_s2cell_timestamptz_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {S2cellTypes::s2cell(), SpanTypes::tstzspan()}, StboxType::stbox(), Gen_s2cell_tstzspan_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ts2CellToToken", {S2cellTypes::ts2cell()}, TemporalTypes::ttext(), Gen_ts2cell_cell_to_token)); +void RegisterGenerated_meos_rgeo_restrict(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("afterTimestamp", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_trgeometry_after_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("afterTimestamp", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_after_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("beforeTimestamp", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_trgeometry_before_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("beforeTimestamp", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_before_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_geom)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_geom)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TrgeometryTypes::trgeometry(), PoseTypes::pose()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TrgeometryTypes::trgeometry(), PoseTypes::pose()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atValues", {TrgeometryTypes::trgeometry(), SetTypes::poseset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_values)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValues", {TrgeometryTypes::trgeometry(), SetTypes::poseset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_values)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atTime", {TrgeometryTypes::trgeometry(), SetTypes::tstzset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_tstzset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusTime", {TrgeometryTypes::trgeometry(), SetTypes::tstzset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_tstzset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atTime", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusTime", {TrgeometryTypes::trgeometry(), SpanTypes::tstzspan()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atTime", {TrgeometryTypes::trgeometry(), SpansetTypes::tstzspanset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_tstzspanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusTime", {TrgeometryTypes::trgeometry(), SpansetTypes::tstzspanset()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_tstzspanset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atElevation", {TrgeometryTypes::trgeometry(), SpanTypes::floatspan()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_at_elevation)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusElevation", {TrgeometryTypes::trgeometry(), SpanTypes::floatspan()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_minus_elevation)); +} + +void RegisterGenerated_meos_temporal_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TemporalTypes::tbool()}, TemporalTypes::tint(), Gen_tbool_to_tint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbool()}, TemporalTypes::tint(), Gen_tbool_to_tint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TemporalTypes::tfloat()}, TemporalTypes::tint(), Gen_tfloat_to_tint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, TemporalTypes::tint(), Gen_tfloat_to_tint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {TemporalTypes::tfloat()}, TemporalTypes::tbigint(), Gen_tfloat_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, TemporalTypes::tbigint(), Gen_tfloat_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloat", {TemporalTypes::tint()}, TemporalTypes::tfloat(), Gen_tint_to_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, TemporalTypes::tfloat(), Gen_tint_to_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {TemporalTypes::tint()}, TemporalTypes::tbigint(), Gen_tint_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, TemporalTypes::tbigint(), Gen_tint_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tint", {TemporalTypes::tbigint()}, TemporalTypes::tint(), Gen_tbigint_to_tint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, TemporalTypes::tint(), Gen_tbigint_to_tint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloat", {TemporalTypes::tbigint()}, TemporalTypes::tfloat(), Gen_tbigint_to_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, TemporalTypes::tfloat(), Gen_tbigint_to_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {CbufferTypes::tcbuffer()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TGeometryTypes::tgeometry()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TGeographyTypes::tgeography()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeographyTypes::tgeography()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TgeompointType::tgeompoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeompointType::tgeompoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TgeogpointType::tgeogpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeogpointType::tgeogpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {H3indexTypes::th3index()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::th3index()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TJsonbTypes::tjsonb()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TJsonbTypes::tjsonb()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {NpointTypes::tnpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {NpointTypes::tnpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TPcpointTypes::tpcpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TPcpointTypes::tpcpoint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TPcpatchTypes::tpcpatch()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TPcpatchTypes::tpcpatch()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {PoseTypes::tpose()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PoseTypes::tpose()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {PosechainTypes::tposechain()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PosechainTypes::tposechain()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {QuadbinTypes::tquadbin()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {QuadbinTypes::tquadbin()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TrgeometryTypes::trgeometry()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TrgeometryTypes::trgeometry()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {S2cellTypes::ts2cell()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {S2cellTypes::ts2cell()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::tbool()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbool()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::tint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::tbigint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::tfloat()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("timeSpan", {TemporalTypes::ttext()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::ttext()}, SpanTypes::tstzspan(), Gen_temporal_to_tstzspan)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueSpan", {TemporalTypes::tint()}, SpanTypes::intspan(), Gen_tnumber_to_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, SpanTypes::intspan(), Gen_tnumber_to_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueSpan", {TemporalTypes::tbigint()}, SpanTypes::bigintspan(), Gen_tnumber_to_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, SpanTypes::bigintspan(), Gen_tnumber_to_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueSpan", {TemporalTypes::tfloat()}, SpanTypes::floatspan(), Gen_tnumber_to_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, SpanTypes::floatspan(), Gen_tnumber_to_span)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbox", {TemporalTypes::tint()}, TboxType::tbox(), Gen_tnumber_to_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tint()}, TboxType::tbox(), Gen_tnumber_to_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbox", {TemporalTypes::tbigint()}, TboxType::tbox(), Gen_tnumber_to_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, TboxType::tbox(), Gen_tnumber_to_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbox", {TemporalTypes::tfloat()}, TboxType::tbox(), Gen_tnumber_to_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tfloat()}, TboxType::tbox(), Gen_tnumber_to_tbox)); +} + +void RegisterGenerated_meos_geo_dist(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, TemporalTypes::tfloat(), Gen_tdistance_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::DOUBLE, Gen_nad_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistance", {LogicalType::LIST(TgeompointType::tgeompoint()), LogicalType::LIST(TgeompointType::tgeompoint())}, LogicalType::DOUBLE, Gen_mindistance_tgeoarr_tgeoarr)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistance", {LogicalType::LIST(TgeogpointType::tgeogpoint()), LogicalType::LIST(TgeogpointType::tgeogpoint())}, LogicalType::DOUBLE, Gen_mindistance_tgeoarr_tgeoarr)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistance", {LogicalType::LIST(TGeometryTypes::tgeometry()), LogicalType::LIST(TGeometryTypes::tgeometry())}, LogicalType::DOUBLE, Gen_mindistance_tgeoarr_tgeoarr)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minDistance", {LogicalType::LIST(TGeographyTypes::tgeography()), LogicalType::LIST(TGeographyTypes::tgeography())}, LogicalType::DOUBLE, Gen_mindistance_tgeoarr_tgeoarr)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TgeompointType::tgeompoint(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TgeompointType::tgeompoint(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TgeogpointType::tgeogpoint(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TgeogpointType::tgeogpoint(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TGeometryTypes::tgeometry(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TGeometryTypes::tgeometry(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {TGeographyTypes::tgeography(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TGeographyTypes::tgeography(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tgeo_stbox)); } void RegisterGenerated_meos_cbuffer_dist(ExtensionLoader &loader) { @@ -4796,99 +4652,107 @@ void RegisterGenerated_meos_cbuffer_dist(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {CbufferTypes::tcbuffer(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tcbuffer_stbox)); } -void RegisterGenerated_meos_rgeo_analytics_similarity(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hausdorffDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_trgeometry_hausdorff_distance)); - RegisterSerializedScalarFunction(loader, ScalarFunction("frechetDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_trgeometry_frechet_distance)); - RegisterSerializedScalarFunction(loader, ScalarFunction("dynTimeWarpDistance", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, LogicalType::DOUBLE, Gen_trgeometry_dyntimewarp_distance)); - loader.RegisterFunction(TableFunction("frechetDistancePath", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, PathExec_trgeometry_frechet_path, PathBindFn_trgeometry_frechet_path, PathInit_trgeometry_frechet_path)); - loader.RegisterFunction(TableFunction("dynTimeWarpPath", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, PathExec_trgeometry_dyntimewarp_path, PathBindFn_trgeometry_dyntimewarp_path, PathInit_trgeometry_dyntimewarp_path)); -} - -void RegisterGenerated_meos_cellindex(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {H3indexTypes::th3index()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {QuadbinTypes::tquadbin()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {S2cellTypes::ts2cell()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_tcellindex_cell_to_parent)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, QuadbinTypes::tquadbin(), Gen_tcellindex_cell_to_parent)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tcellindex_cell_to_parent)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {QuadbinTypes::tquadbin()}, TgeompointType::tgeompoint(), Gen_tcellindex_cell_to_point)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {S2cellTypes::ts2cell()}, TgeogpointType::tgeogpoint(), Gen_tcellindex_cell_to_point)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {H3indexTypes::th3index()}, TGeographyTypes::tgeography(), Gen_tcellindex_cell_to_boundary)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {QuadbinTypes::tquadbin()}, TGeometryTypes::tgeometry(), Gen_tcellindex_cell_to_boundary)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {S2cellTypes::ts2cell()}, TGeographyTypes::tgeography(), Gen_tcellindex_cell_to_boundary)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {H3indexTypes::th3index()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {QuadbinTypes::tquadbin()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {S2cellTypes::ts2cell()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbinCellToQuadkey", {QuadbinTypes::tquadbin()}, TemporalTypes::ttext(), Gen_tquadbin_cell_to_quadkey)); -} - -void RegisterGenerated_meos_box_bbox_pos(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxAfter", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_after_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxBefore", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_before_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxLeft", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverafter", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overafter_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverbefore", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overbefore_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverleft", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverright", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxRight", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_tbox_tbox)); -} - -void RegisterGenerated_meos_h3_edges(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("h3OriginToDirectedEdges", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3_origin_to_directed_edges)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3AreNeighborCells", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_are_neighbor_cells)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellsToDirectedEdge", {H3indexTypes::th3index(), H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cells_to_directed_edge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidDirectedEdge", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_is_valid_directed_edge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetDirectedEdgeOrigin", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_get_directed_edge_origin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetDirectedEdgeDestination", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_get_directed_edge_destination)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3DirectedEdgeToBoundary", {H3indexTypes::th3index()}, TGeographyTypes::tgeography(), Gen_th3index_directed_edge_to_boundary)); -} - -void RegisterGenerated_meos_pointcloud_box_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ge)); -} - -void RegisterGenerated_meos_s2cell_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("s2cell", {LogicalType::BIGINT}, S2cellTypes::s2cell(), Gen_bigint_to_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {LogicalType::BIGINT}, S2cellTypes::s2cell(), Gen_bigint_to_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TemporalTypes::tbigint()}, S2cellTypes::ts2cell(), Gen_tbigint_to_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, S2cellTypes::ts2cell(), Gen_tbigint_to_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {S2cellTypes::ts2cell()}, TemporalTypes::tbigint(), Gen_ts2cell_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {S2cellTypes::ts2cell()}, TemporalTypes::tbigint(), Gen_ts2cell_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tgeogpoint_to_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tgeompoint_to_ts2cell)); -} - -void RegisterGenerated_meos_pose_base_geopose(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPoseStream", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tpose_as_geopose_stream)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPoseStream", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_tpose_as_geopose_stream_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_yaw)); - RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_pitch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_roll)); -} - -void RegisterGenerated_meos_cbuffer_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::cbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_cbuffer_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::cbuffer()}, LogicalType::VARCHAR, Gen_cbuffer_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::cbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_cbuffer_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::cbuffer()}, LogicalType::VARCHAR, Gen_cbuffer_as_text_d)); +void RegisterGenerated_meos_pose_dist(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {PoseTypes::tpose(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {PoseTypes::tpose(), MobilityDuckGeometryType()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {MobilityDuckGeometryType(), PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {MobilityDuckGeometryType(), PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_geo_rev)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {PoseTypes::tpose(), PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {PoseTypes::tpose(), PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tdistance_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::DOUBLE, Gen_nad_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {PoseTypes::tpose(), PoseTypes::pose()}, LogicalType::DOUBLE, Gen_nad_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::DOUBLE, Gen_nad_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {PoseTypes::tpose(), PoseTypes::tpose()}, LogicalType::DOUBLE, Gen_nad_tpose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachInstant", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_nai_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("nearestApproachDistance", {PoseTypes::tpose(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tpose_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {PoseTypes::tpose(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_tpose_stbox)); +} + +void RegisterGenerated_meos_posechain_base_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {PosechainTypes::posechain()}, LogicalType::UINTEGER, Gen_posechain_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {PosechainTypes::posechain(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_posechain_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_same)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_same)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_ge)); +} + +void RegisterGenerated_meos_h3_traversal(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_grid_disk)); + RegisterSerializedScalarFunction(loader, ScalarFunction("h3GridRing", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_grid_ring)); + RegisterSerializedScalarFunction(loader, ScalarFunction("h3GridPathCells", {H3indexTypes::h3index(), H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3_grid_path_cells)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3GridDistance", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToLocalIj", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TgeompointType::tgeompoint(), Gen_th3index_cell_to_local_ij)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3LocalIjToCell", {H3indexTypes::th3index(), H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_local_ij_to_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3indexset_grid_disk)); +} + +void RegisterGenerated_meos_quadbin_base_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::INTEGER, Gen_quadbin_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {QuadbinTypes::quadbin()}, LogicalType::UINTEGER, Gen_quadbin_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {QuadbinTypes::quadbin(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_quadbin_hash_extended)); +} + +void RegisterGenerated_meos_s2cell_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_teq_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, TemporalTypes::tbool(), Gen_teq_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_teq_ts2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tne_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, TemporalTypes::tbool(), Gen_tne_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tne_ts2cell_ts2cell)); +} + +void RegisterGenerated_meos_pose_geopose_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {MobilityDuckGeometryType(), PoseTypes::tpose()}, TgeompointType::tgeompoint(), Gen_tpose_apply_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_yaw)); + RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_pitch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_roll)); + RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_speed)); + RegisterSerializedScalarFunction(loader, ScalarFunction("angularSpeed", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_angular_speed)); +} + +void RegisterGenerated_meos_npoint_base_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("getPosition", {NpointTypes::npoint()}, LogicalType::DOUBLE, Gen_npoint_position)); + RegisterSerializedScalarFunction(loader, ScalarFunction("route", {NpointTypes::npoint()}, LogicalType::BIGINT, Gen_npoint_route)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endPosition", {NpointTypes::nsegment()}, LogicalType::DOUBLE, Gen_nsegment_end_position)); + RegisterSerializedScalarFunction(loader, ScalarFunction("route", {NpointTypes::nsegment()}, LogicalType::BIGINT, Gen_nsegment_route)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startPosition", {NpointTypes::nsegment()}, LogicalType::DOUBLE, Gen_nsegment_start_position)); +} + +void RegisterGenerated_meos_posechain_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::posechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_posechain_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::posechain()}, LogicalType::VARCHAR, Gen_posechain_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::posechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_posechain_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::posechain()}, LogicalType::VARCHAR, Gen_posechain_as_ewkt_d)); +} + +void RegisterGenerated_meos_geo_set_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_spatialset_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_spatialset_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_spatialset_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_spatialset_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_spatialset_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_spatialset_transform)); } void RegisterGenerated_meos_pose_accessor(ExtensionLoader &loader) { @@ -4897,10 +4761,14 @@ void RegisterGenerated_meos_pose_accessor(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("trajectory", {PoseTypes::tpose()}, MobilityDuckGeometryType(), Gen_tpose_trajectory)); } -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)); +void RegisterGenerated_meos_h3_metrics(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("th3EdgeLength", {H3indexTypes::th3index()}, TemporalTypes::tfloat(), Gen_th3index_edge_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("greatCircleDistance", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tgeogpoint_great_circle_distance)); +} + +void RegisterGenerated_meos_pointcloud_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TPcpointTypes::tpcpoint()}, LogicalType::VARCHAR, Gen_tpcpoint_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TPcpatchTypes::tpcpatch()}, LogicalType::VARCHAR, Gen_tpcpatch_out)); } void RegisterGenerated_meos_geo_box_set(ExtensionLoader &loader) { @@ -4908,17 +4776,12 @@ void RegisterGenerated_meos_geo_box_set(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("*", {StboxType::stbox(), StboxType::stbox()}, StboxType::stbox(), Gen_intersection_stbox_stbox)); } -void RegisterGenerated_meos_h3_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {H3indexTypes::h3indexset(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_ever_eq_h3indexset_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {H3indexTypes::h3indexset(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_ever_eq_h3indexset_th3index)); -} - -void RegisterGenerated_meos_s2cell_set_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::s2cellset()}, LogicalType::VARCHAR, Gen_s2cellset_out)); +void RegisterGenerated_meos_npoint_set_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("routes", {SetTypes::npointset()}, SetTypes::bigintset(), Gen_npointset_routes)); } -void RegisterGenerated_meos_pose_base_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PoseTypes::pose()}, LogicalType::INTEGER, Gen_pose_srid)); +void RegisterGenerated_meos_h3_base_inspection(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {H3indexTypes::h3index()}, LogicalType::UINTEGER, Gen_h3index_get_resolution)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_6.cpp b/src/generated/generated_temporal_udfs_6.cpp index d895e8d9..4b1a07a3 100644 --- a/src/generated/generated_temporal_udfs_6.cpp +++ b/src/generated/generated_temporal_udfs_6.cpp @@ -1057,980 +1057,753 @@ static void Gen_same_tspatial_stbox(DataChunk &args, ExpressionState &, Vector & } -// ===== @ingroup meos_temporal_bbox_split ===== -static void Gen_temporal_spans(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_comp_ever ===== +static void Gen_always_eq_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - Span * arr = temporal_spans(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, string_t in_t, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = always_eq_geo_tgeo(gs, t); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; + }); } -static void Gen_temporal_split_each_n_spans(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - Span * arr = temporal_split_each_n_spans(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = always_eq_tgeo_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; + }); } -static void Gen_temporal_split_n_spans(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - Span * arr = temporal_split_n_spans(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_eq_tgeo_tgeo(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); } -static void Gen_tnumber_split_each_n_tboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - TBox * arr = tnumber_split_each_n_tboxes(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(TBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, string_t in_t, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = always_ne_geo_tgeo(gs, t); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; + }); } -static void Gen_tnumber_split_n_tboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - TBox * arr = tnumber_split_n_tboxes(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(TBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = always_ne_tgeo_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; + }); } -static void Gen_tnumber_tboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - TBox * arr = tnumber_tboxes(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(TBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = always_ne_tgeo_tgeo(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); } - -// ===== @ingroup meos_setspan_comp ===== -static void Gen_set_cmp(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a0, string_t a1) { - Set *x0 = BlobToSet(a0); - Set *x1 = BlobToSet(a1); - int32_t r = set_cmp(x0, x1); - free(x0); free(x1); - return (int32_t) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, string_t in_t, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = ever_eq_geo_tgeo(gs, t); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_span_cmp(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a0, string_t a1) { - Span *x0 = BlobToSpan(a0); - Span *x1 = BlobToSpan(a1); - int32_t r = span_cmp(x0, x1); - free(x0); free(x1); - return (int32_t) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = ever_eq_tgeo_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_spanset_cmp(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a0, string_t a1) { - SpanSet *x0 = BlobToSpanSet(a0); - SpanSet *x1 = BlobToSpanSet(a1); - int32_t r = spanset_cmp(x0, x1); - free(x0); free(x1); - return (int32_t) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_eq_tgeo_tgeo(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_set_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - uint32_t r = set_hash(s); - free(s); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, string_t in_t, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = ever_ne_geo_tgeo(gs, t); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_set_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, uint64_t a2) { - Set *s = BlobToSet(a); - uint64_t r = set_hash_extended(s, a2); - free(s); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = ever_ne_tgeo_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_set_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = set_eq(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = ever_ne_tgeo_tgeo(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_set_ge(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_cbuffer_rel_temp ===== +static void Gen_tcontains_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = set_ge(s1, s2); - free(s1); free(s2); - return r; + 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 = tcontains_geo_tcbuffer(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_set_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcontains_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = set_gt(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tcontains_tcbuffer_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_set_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcontains_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = set_le(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = tcontains_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_set_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcontains_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = set_lt(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tcontains_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_set_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcovers_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Set *s1 = BlobToSet(a); - Set *s2 = BlobToSet(b); - bool r = set_ne(s1, s2); - free(s1); free(s2); - return r; + 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 = tcovers_geo_tcbuffer(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcovers_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Span *s = BlobToSpan(in); - uint32_t r = span_hash(s); - free(s); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tcovers_tcbuffer_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcovers_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - Span *s = BlobToSpan(in); - uint64_t r = span_hash_extended(s, a2); - free(s); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = tcovers_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcovers_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = span_eq(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tcovers_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdwithin_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = span_ge(s1, s2); - free(s1); free(s2); - return r; + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in_g, string_t in_t, double d, 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 = tdwithin_geo_tcbuffer(gs, t, d); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdwithin_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = span_gt(s1, s2); - free(s1); free(s2); - return r; + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in_t, string_t in_g, double d, 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 = tdwithin_tcbuffer_geo(t, gs, d); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdwithin_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = span_le(s1, s2); - free(s1); free(s2); - return r; + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in1, string_t in2, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tdwithin_tcbuffer_tcbuffer(t1, t2, a2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdisjoint_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = span_lt(s1, s2); - free(s1); free(s2); - return r; + 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 = tdisjoint_geo_tcbuffer(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdisjoint_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = span_ne(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tdisjoint_tcbuffer_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spanset_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdisjoint_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - SpanSet *s = BlobToSpanSet(in); - uint32_t r = spanset_hash(s); - free(s); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = tdisjoint_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spanset_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdisjoint_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - SpanSet *s = BlobToSpanSet(in); - uint64_t r = spanset_hash_extended(s, a2); - free(s); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tdisjoint_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spanset_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tintersects_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = spanset_eq(s1, s2); - free(s1); free(s2); - return r; + 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 = tintersects_geo_tcbuffer(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spanset_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tintersects_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = spanset_ge(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tintersects_tcbuffer_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spanset_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tintersects_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = spanset_gt(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = tintersects_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spanset_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tintersects_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = spanset_le(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tintersects_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spanset_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttouches_geo_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = spanset_lt(s1, s2); - free(s1); free(s2); - return r; + 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 = ttouches_geo_tcbuffer(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spanset_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttouches_tcbuffer_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = spanset_ne(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = ttouches_tcbuffer_geo(t, gs); + 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) { +static void Gen_ttouches_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Set *in = BlobToSet(blob); - int count = 0; - Span * arr = set_spans(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - -static void Gen_set_split_each_n_spans(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Set *in = BlobToSet(blob); - int count = 0; - Span * arr = set_split_each_n_spans(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - -static void Gen_set_split_n_spans(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Set *in = BlobToSet(blob); - int count = 0; - Span * arr = set_split_n_spans(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - -static void Gen_spanset_spans(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - SpanSet *in = BlobToSpanSet(blob); - int count = 0; - Span * arr = spanset_spans(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - -static void Gen_spanset_split_each_n_spans(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - SpanSet *in = BlobToSpanSet(blob); - int count = 0; - Span * arr = spanset_split_each_n_spans(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = ttouches_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); } -static void Gen_spanset_split_n_spans(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttouches_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - SpanSet *in = BlobToSpanSet(blob); - int count = 0; - Span * arr = spanset_split_n_spans(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(Span)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = ttouches_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); } -// ===== @ingroup meos_pointcloud_box_pos ===== -static void Gen_left_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_inout ===== +static void Gen_tbool_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = left_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = tbool_out(t); + free(t); + return TakeCString(result, r); }); } -static void Gen_overleft_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overleft_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; - }); +static void Gen_temporal_as_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + if (args.ColumnCount() > 1) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t endian, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *x = BlobToTemporal(in); + uint8_t variant = wkb_variant_from_endian(endian.GetString().c_str()); + size_t sz = 0; + char *hex = temporal_as_hexwkb(x, variant, &sz); + free(x); + if (!hex) { mask.SetInvalid(idx); return string_t(); } + string_t out = StringVector::AddString(result, hex); + free(hex); + return out; + }); + } else { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *x = BlobToTemporal(in); + size_t sz = 0; + char *hex = temporal_as_hexwkb(x, (uint8_t) 0, &sz); + free(x); + if (!hex) { mask.SetInvalid(idx); return string_t(); } + string_t out = StringVector::AddString(result, hex); + free(hex); + return out; + }); + } } -static void Gen_right_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = right_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *r = temporal_from_hexwkb(in.GetString().c_str()); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_overright_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overright_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2) { + Temporal *t = BlobToTemporal(in); + char * r = tfloat_out(t, a2); + free(t); + return TakeCString(result, r); }); } -static void Gen_below_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_out_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = below_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = tfloat_out(t, 15); + free(t); + return TakeCString(result, r); }); } -static void Gen_overbelow_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tint_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overbelow_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = tint_out(t); + free(t); + return TakeCString(result, r); }); } -static void Gen_above_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbigint_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = above_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = tbigint_out(t); + free(t); + return TakeCString(result, r); }); } -static void Gen_overabove_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttext_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overabove_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = ttext_out(t); + free(t); + return TakeCString(result, r); }); } -static void Gen_front_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = front_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; - }); -} -static void Gen_overfront_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell ===== +static void Gen_s2cell_is_valid_cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overfront_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> bool { + bool r = s2cell_is_valid_cell(static_cast(a0)); + return (bool) r; }); } -static void Gen_back_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_cell_to_token(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = back_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + char * r = s2cell_cell_to_token(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return TakeCString(result, r); }); } -static void Gen_overback_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_token_to_cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overback_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = s2cell_token_to_cell(a0.GetString().c_str()); + return static_cast(r); }); } -static void Gen_before_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = before_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> uint32_t { + uint32_t r = s2cell_get_resolution(static_cast(a0)); return r; }); } -static void Gen_overbefore_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_get_face(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overbefore_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> uint32_t { + uint32_t r = s2cell_get_face(static_cast(a0)); return r; }); } -static void Gen_after_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = after_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1) -> int64_t { + uint64_t r = s2cell_cell_to_parent(static_cast(a0), static_cast(a1)); + return static_cast(r); }); } -static void Gen_overafter_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_cell_to_child(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overafter_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + TernaryExecutor::Execute(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](int64_t a0, int32_t a1, int32_t a2) -> int64_t { + uint64_t r = s2cell_cell_to_child(static_cast(a0), static_cast(a1), static_cast(a2)); + return static_cast(r); }); } - -// ===== @ingroup meos_quadbin ===== -static void Gen_quadbin_is_valid_index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_cell_contains(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> bool { - bool r = quadbin_is_valid_index(static_cast(a0)); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = s2cell_cell_contains(static_cast(a0), static_cast(a1)); return (bool) r; }); } -static void Gen_quadbin_is_valid_cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_common_ancestor_level(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> bool { - bool r = quadbin_is_valid_cell(static_cast(a0)); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> int32_t { + int32_t r = s2cell_common_ancestor_level(static_cast(a0), static_cast(a1)); + return (int32_t) r; }); } -static void Gen_quadbin_tile_to_cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_range_min(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::Execute(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](int32_t a0, int32_t a1, int32_t a2) -> int64_t { - uint64_t r = quadbin_tile_to_cell(static_cast(a0), static_cast(a1), static_cast(a2)); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> int64_t { + uint64_t r = s2cell_range_min(static_cast(a0)); return static_cast(r); }); } -static void Gen_quadbin_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_range_max(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> uint32_t { - uint32_t r = quadbin_get_resolution(static_cast(a0)); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> int64_t { + uint64_t r = s2cell_range_max(static_cast(a0)); + return static_cast(r); }); } -static void Gen_quadbin_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_cell_area(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1) -> int64_t { - uint64_t r = quadbin_cell_to_parent(static_cast(a0), static_cast(a1)); - return static_cast(r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> double { + double r = s2cell_cell_area(static_cast(a0)); + return (double) r; }); } -static void Gen_quadbin_cell_sibling(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_edge_length(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, string_t a1) -> int64_t { - uint64_t r = quadbin_cell_sibling(static_cast(a0), a1.GetString().c_str()); - return static_cast(r); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1) -> double { + double r = s2cell_edge_length(static_cast(a0), static_cast(a1)); + return (double) r; }); } -static void Gen_quadbin_cell_to_geompoint(DataChunk &args, ExpressionState &state, Vector &result) { +static void Gen_s2cell_cell_to_geogpoint(DataChunk &args, ExpressionState &state, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - GSERIALIZED * r = quadbin_cell_to_geompoint(static_cast(a0)); + GSERIALIZED * r = s2cell_cell_to_geogpoint(static_cast(a0)); if (!r) { mask.SetInvalid(idx); return string_t(); } string_t out = GSerializedToGeometry(r, state, result); free(r); @@ -2038,11 +1811,11 @@ static void Gen_quadbin_cell_to_geompoint(DataChunk &args, ExpressionState &stat }); } -static void Gen_quadbin_cell_to_geom(DataChunk &args, ExpressionState &state, Vector &result) { +static void Gen_s2cell_cell_to_geog(DataChunk &args, ExpressionState &state, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - GSERIALIZED * r = quadbin_cell_to_geom(static_cast(a0)); + GSERIALIZED * r = s2cell_cell_to_geog(static_cast(a0)); if (!r) { mask.SetInvalid(idx); return string_t(); } string_t out = GSerializedToGeometry(r, state, result); free(r); @@ -2050,157 +1823,250 @@ static void Gen_quadbin_cell_to_geom(DataChunk &args, ExpressionState &state, Ve }); } -static void Gen_quadbin_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - STBox * r = quadbin_to_stbox(static_cast(a0)); + STBox * r = s2cell_to_stbox(static_cast(a0)); if (!r) { mask.SetInvalid(idx); return string_t(); } return StboxToBlob(result, r); }); } -static void Gen_quadbin_timestamptz_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_timestamptz_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](int64_t a0, timestamp_tz_t a1, ValidityMask &mask, idx_t idx) -> string_t { - STBox * r = quadbin_timestamptz_to_stbox(static_cast(a0), DuckDBToMeosTimestamp(a1).value); + STBox * r = s2cell_timestamptz_to_stbox(static_cast(a0), DuckDBToMeosTimestamp(a1).value); if (!r) { mask.SetInvalid(idx); return string_t(); } return StboxToBlob(result, r); }); } -static void Gen_quadbin_tstzspan_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_tstzspan_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](int64_t a0, string_t a1, ValidityMask &mask, idx_t idx) -> string_t { Span *p1 = BlobToSpan(a1); - STBox * r = quadbin_tstzspan_to_stbox(static_cast(a0), p1); + STBox * r = s2cell_tstzspan_to_stbox(static_cast(a0), p1); free(p1); if (!r) { mask.SetInvalid(idx); return string_t(); } return StboxToBlob(result, r); }); } -static void Gen_quadbin_cell_area(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ts2cell_cell_to_token(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> double { - double r = quadbin_cell_area(static_cast(a0)); - return (double) r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = ts2cell_cell_to_token(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_quadbin_cell_to_quadkey(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_geo_bbox_split ===== +static void Gen_tgeo_stboxes(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - char * r = quadbin_cell_to_quadkey(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return TakeCString(result, r); - }); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + STBox * arr = tgeo_stboxes(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + +static void Gen_tgeo_split_each_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + STBox * arr = tgeo_split_each_n_stboxes(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + +static void Gen_tgeo_split_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + STBox * arr = tgeo_split_n_stboxes(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -// ===== @ingroup meos_cbuffer_comp_ever ===== -static void Gen_always_eq_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_comp_ever ===== +static void Gen_always_eq_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - int32_t r = always_eq_tcbuffer_cbuffer(t, a2p); + PoseChain *a2p = BlobToPosechain(a2); + int32_t r = always_eq_tposechain_posechain(t, a2p); free(a2p); free(t); if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_eq_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tposechain_tposechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_tcbuffer_tcbuffer(t1, t2); + int32_t r = always_eq_tposechain_tposechain(t1, t2); free(t1); free(t2); if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_ne_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - int32_t r = always_ne_tcbuffer_cbuffer(t, a2p); + PoseChain *a2p = BlobToPosechain(a2); + int32_t r = always_ne_tposechain_posechain(t, a2p); free(a2p); free(t); if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_ne_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tposechain_tposechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_tcbuffer_tcbuffer(t1, t2); + int32_t r = always_ne_tposechain_tposechain(t1, t2); free(t1); free(t2); if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_eq_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - int32_t r = ever_eq_tcbuffer_cbuffer(t, a2p); + PoseChain *a2p = BlobToPosechain(a2); + int32_t r = ever_eq_tposechain_posechain(t, a2p); free(a2p); free(t); if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_eq_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tposechain_tposechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_tcbuffer_tcbuffer(t1, t2); + int32_t r = ever_eq_tposechain_tposechain(t1, t2); free(t1); free(t2); if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_ne_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - int32_t r = ever_ne_tcbuffer_cbuffer(t, a2p); + PoseChain *a2p = BlobToPosechain(a2); + int32_t r = ever_ne_tposechain_posechain(t, a2p); free(a2p); free(t); if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_ne_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tposechain_tposechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_tcbuffer_tcbuffer(t1, t2); + int32_t r = ever_ne_tposechain_tposechain(t1, t2); free(t1); free(t2); if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); @@ -2208,196 +2074,103 @@ static void Gen_ever_ne_tcbuffer_tcbuffer(DataChunk &args, ExpressionState &, Ve } -// ===== @ingroup meos_h3_conversion ===== -static void Gen_tbigint_to_th3index(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_comp_temp ===== +static void Gen_teq_geo_tgeo(DataChunk &args, ExpressionState &, 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); - Temporal *r = tbigint_to_th3index(t); - free(t); + 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 = teq_geo_tgeo(gs, t); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_tgeo_geo(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_to_tbigint(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = teq_tgeo_geo(t, gs); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_h3index_cell_to_cover(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3index_cell_to_cover(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_h3index_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - STBox * r = h3index_to_stbox(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); - }); -} - -static void Gen_h3index_timestamptz_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, timestamp_tz_t a1, ValidityMask &mask, idx_t idx) -> string_t { - STBox * r = h3index_timestamptz_to_stbox(static_cast(a0), DuckDBToMeosTimestamp(a1).value); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); - }); -} - -static void Gen_h3index_tstzspan_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, string_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Span *p1 = BlobToSpan(a1); - STBox * r = h3index_tstzspan_to_stbox(static_cast(a0), p1); - free(p1); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); - }); -} - -static void Gen_h3indexset_cover_cells(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = h3indexset_cover_cells(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_geo_to_h3index_cell(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in_g, int32_t res) { - GSERIALIZED *gs = GeometryToGSerialized(in_g, 4326); - uint64_t r = geo_to_h3index_cell(gs, res); - free(gs); - return (int64_t) r; - }); -} - -static void Gen_geo_to_h3index_set(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in_g, int32_t res) { - GSERIALIZED *gs = GeometryToGSerialized(in_g, 4326); - Set *r = geo_to_h3index_set(gs, res); - free(gs); - return SetToBlob(result, r); - }); -} - - -// ===== @ingroup meos_box_comp ===== -static void Gen_tbox_hash(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TBox *s = BlobToTbox(in); - uint32_t r = tbox_hash(s); - free(s); - return r; - }); -} - -static void Gen_tbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - TBox *s = BlobToTbox(in); - uint64_t r = tbox_hash_extended(s, a2); - free(s); - return r; - }); -} - -static void Gen_tbox_eq(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_eq(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_tbox_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_ge(s1, s2); - free(s1); free(s2); - return r; + 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 = tne_geo_tgeo(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); -} - -static void Gen_tbox_gt(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_gt(s1, s2); - free(s1); free(s2); - return r; +} + +static void Gen_tne_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tne_tgeo_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tbox_le(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_geo_srid ===== +static void Gen_tspatial_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_le(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + int32_t r = tspatial_srid(t); + free(t); + return (int32_t) r; }); } -static void Gen_tbox_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tspatial_set_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_lt(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tspatial_set_srid(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tbox_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tspatial_transform(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_ne(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tspatial_transform(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } @@ -2479,360 +2252,379 @@ static void Gen_tgeompoint_to_tquadbin_d(DataChunk &args, ExpressionState &, Vec } -// ===== @ingroup meos_s2cell_comp_temp ===== -static void Gen_teq_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = teq_s2cell_ts2cell((uint64_t) a1, t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_teq_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = teq_ts2cell_s2cell(t, (uint64_t) a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_teq_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = teq_ts2cell_ts2cell(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tne_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tne_s2cell_ts2cell((uint64_t) a1, t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tne_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tne_ts2cell_s2cell(t, (uint64_t) a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_comp ===== +static void Gen_tpcbox_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tne_ts2cell_ts2cell(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_eq(s1, s2); + free(s1); free(s2); + return r; }); } - -// ===== @ingroup meos_box_bbox_topo ===== -static void Gen_adjacent_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = adjacent_tbox_tbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_ne(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_contained_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = contained_tbox_tbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_lt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_contains_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = contains_tbox_tbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_le(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overlaps_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overlaps_tbox_tbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_gt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_same_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = same_tbox_tbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_ge(s1, s2); free(s1); free(s2); return r; }); } -// ===== @ingroup meos_json_accessor ===== -static void Gen_tjsonb_end_value(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_comp_temp ===== +static void Gen_teq_geo_trgeometry(DataChunk &args, ExpressionState &, 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); - Jsonb * r = tjsonb_end_value(t); - free(t); - return JsonbToBlobN(result, r, mask, idx); + 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 = teq_geo_trgeometry(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_trgeometry_geo(DataChunk &args, ExpressionState &, 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); - Jsonb * r = tjsonb_start_value(t); - free(t); - return JsonbToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = teq_trgeometry_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_value_at_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Jsonb *o = NULL; - bool ok = tjsonb_value_at_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true, &o); - free(t); - if (! ok) { mask.SetInvalid(idx); return string_t(); } - return JsonbToBlob(result, o); + 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 = tne_geo_trgeometry(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_value_n(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Jsonb *o = NULL; - bool ok = tjsonb_value_n(t, a2, &o); - free(t); - if (! ok) { mask.SetInvalid(idx); return string_t(); } - return JsonbToBlob(result, o); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tne_trgeometry_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_posechain_base_inout ===== -static void Gen_posechain_as_text(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_base_geopose ===== +static void Gen_tpose_as_geopose_stream(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_text(s, a2); - free(s); + [&](string_t in, int32_t a2) { + Temporal *t = BlobToTemporal(in); + char * r = tpose_as_geopose_stream(t, a2); + free(t); return TakeCString(result, r); }); } -static void Gen_posechain_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_as_geopose_stream_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_text(s, 15); - free(s); + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = tpose_as_geopose_stream(t, -1); + free(t); return TakeCString(result, r); }); } -static void Gen_posechain_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_yaw(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_ewkt(s, a2); - free(s); - return TakeCString(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Pose *v = BlobToPose(in); + double r = pose_yaw(v); + free(v); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return r; }); } -static void Gen_posechain_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_pitch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_ewkt(s, 15); - free(s); - return TakeCString(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Pose *v = BlobToPose(in); + double r = pose_pitch(v); + free(v); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return r; + }); +} + +static void Gen_pose_roll(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Pose *v = BlobToPose(in); + double r = pose_roll(v); + free(v); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return r; }); } -// ===== @ingroup meos_cbuffer_accessor ===== -static void Gen_tcbuffer_end_value(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_conversion ===== +static void Gen_tcbuffer_to_tfloat(DataChunk &args, ExpressionState &, 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); - Cbuffer * r = tcbuffer_end_value(t); + Temporal *r = tcbuffer_to_tfloat(t); free(t); - return CbufferToBlobN(result, r, mask, idx); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcbuffer_convex_hull(DataChunk &args, ExpressionState &state, Vector &result) { +static void Gen_tcbuffer_to_tgeompoint(DataChunk &args, ExpressionState &, 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 = tcbuffer_convex_hull(t); + Temporal *r = tcbuffer_to_tgeompoint(t); free(t); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcbuffer_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeometry_to_tcbuffer(DataChunk &args, ExpressionState &, 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); - Cbuffer * r = tcbuffer_start_value(t); + Temporal *r = tgeometry_to_tcbuffer(t); free(t); - return CbufferToBlobN(result, r, mask, idx); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_posechain_comp_temp ===== -static void Gen_teq_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_transf ===== +static void Gen_tcbuffer_expand(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - PoseChain *a2p = BlobToPosechain(a2); - Temporal *r = teq_tposechain_posechain(t, a2p); - free(a2p); free(t); + Temporal *r = tcbuffer_expand(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - PoseChain *a2p = BlobToPosechain(a2); - Temporal *r = tne_tposechain_posechain(t, a2p); - free(a2p); free(t); + Temporal *r = tcbuffer_rotate_z(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_json_restrict ===== -static void Gen_tjsonb_at_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_translate(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, double a2, double a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - Temporal *r = tjsonb_at_value(t, a2p); - free(a2p); free(t); + Temporal *r = tcbuffer_translate(t, a2, a3); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_minus_value(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_s2cell_base_inout ===== +static void Gen_s2cell_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - Temporal *r = tjsonb_minus_value(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = s2cell_from_hexwkb(a0.GetString().c_str()); + return static_cast(r); }); } +static void Gen_s2cell_in(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = s2cell_in(a0.GetString().c_str()); + return static_cast(r); + }); +} -// ===== @ingroup meos_pointcloud_base_accessor ===== -static void Gen_pcpoint_get_pcid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cell_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Pcpoint *v = BlobToPcpoint(in); - uint32_t r = pcpoint_get_pcid(v); - free(v); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + char * r = s2cell_out(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return TakeCString(result, r); }); } -static void Gen_pcpatch_get_pcid(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_npoint_restrict ===== +static void Gen_tnpoint_at_npointset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Pcpatch *v = BlobToPcpatch(in); - uint32_t r = pcpatch_get_pcid(v); - free(v); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Set *cc = BlobToSet(b); + Temporal *r = tnpoint_at_npointset(t, cc); + free(t); free(cc); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tnpoint_minus_npointset(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Set *cc = BlobToSet(b); + Temporal *r = tnpoint_minus_npointset(t, cc); + free(t); free(cc); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_cbuffer_base_accessor ===== -static void Gen_cbuffer_radius(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_set_accessor ===== +static void Gen_quadbinset_values(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Cbuffer *v = BlobToCbuffer(in); - double r = cbuffer_radius(v); - free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return r; + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Set *in = BlobToSet(blob); + int count = 0; + uint64_t * arr = quadbinset_values(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + + +// ===== @ingroup meos_rgeo_spatialfuncs ===== +static void Gen_trgeometry_body_point_trajectory(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = trgeometry_body_point_trajectory(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } @@ -2850,18 +2642,31 @@ static void Gen_posechain_num_poses(DataChunk &args, ExpressionState &, Vector & } -// ===== @ingroup meos_json_set_inout ===== -static void Gen_jsonbset_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_inout ===== +static void Gen_tquadbin_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Set *s = BlobToSet(in); - char * r = jsonbset_out(s); - free(s); + Temporal *t = BlobToTemporal(in); + char * r = tquadbin_out(t); + free(t); return TakeCString(result, r); }); } + +// ===== @ingroup meos_pose_base_srid ===== +static void Gen_pose_srid(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Pose *v = BlobToPose(in); + int32_t r = pose_srid(v); + free(v); + return r; + }); +} + } // anonymous void RegisterGenerated_meos_temporal_bbox_pos(ExtensionLoader &loader) { @@ -3570,282 +3375,302 @@ void RegisterGenerated_meos_geo_bbox_topo(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PosechainTypes::tposechain(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_same_tspatial_stbox)); } -void RegisterGenerated_meos_temporal_bbox_split(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {CbufferTypes::tcbuffer()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TGeometryTypes::tgeometry()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TGeographyTypes::tgeography()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TgeompointType::tgeompoint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TgeogpointType::tgeogpoint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {H3indexTypes::th3index()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TJsonbTypes::tjsonb()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {NpointTypes::tnpoint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TPcpointTypes::tpcpoint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TPcpatchTypes::tpcpatch()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {PoseTypes::tpose()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {QuadbinTypes::tquadbin()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TrgeometryTypes::trgeometry()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {S2cellTypes::ts2cell()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::tbool()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::tint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::tbigint()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::tfloat()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {TemporalTypes::ttext()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {H3indexTypes::th3index(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {NpointTypes::tnpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TPcpointTypes::tpcpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TPcpatchTypes::tpcpatch(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::tbool(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::tbigint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {TemporalTypes::ttext(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {H3indexTypes::th3index(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {NpointTypes::tnpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TPcpointTypes::tpcpoint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TPcpatchTypes::tpcpatch(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::tbool(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::tbigint(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {TemporalTypes::ttext(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_temporal_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNTboxes", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_each_n_tboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNTboxes", {TemporalTypes::tbigint(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_each_n_tboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNTboxes", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_each_n_tboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNTboxes", {TemporalTypes::tint(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_n_tboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNTboxes", {TemporalTypes::tbigint(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_n_tboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNTboxes", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_split_n_tboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxes", {TemporalTypes::tint()}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_tboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxes", {TemporalTypes::tbigint()}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_tboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxes", {TemporalTypes::tfloat()}, LogicalType::LIST(TboxType::tbox()), Gen_tnumber_tboxes)); -} - -void RegisterGenerated_meos_setspan_comp(ExtensionLoader &loader) { - for (auto &type : SetTypes::AllTypes()) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {type}, LogicalType::UINTEGER, Gen_set_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {type, LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_set_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {type, type}, LogicalType::BOOLEAN, Gen_set_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {type, type}, LogicalType::BOOLEAN, Gen_set_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {type, type}, LogicalType::BOOLEAN, Gen_set_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {type, type}, LogicalType::BOOLEAN, Gen_set_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {type, type}, LogicalType::BOOLEAN, Gen_set_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {type, type}, LogicalType::BOOLEAN, Gen_set_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {type, type}, LogicalType::BOOLEAN, Gen_set_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {type, type}, LogicalType::BOOLEAN, Gen_set_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {type, type}, LogicalType::BOOLEAN, Gen_set_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {type, type}, LogicalType::BOOLEAN, Gen_set_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {type, type}, LogicalType::BOOLEAN, Gen_set_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {type, type}, LogicalType::BOOLEAN, Gen_set_ne)); - } - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::cbufferset(), SetTypes::cbufferset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {H3indexTypes::h3indexset(), H3indexTypes::h3indexset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::jsonbset(), SetTypes::jsonbset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::npointset(), SetTypes::npointset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::pcpointset(), SetTypes::pcpointset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::pcpatchset(), SetTypes::pcpatchset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::poseset(), SetTypes::poseset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::posechainset(), SetTypes::posechainset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::quadbinset(), SetTypes::quadbinset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::s2cellset(), SetTypes::s2cellset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::intset(), SetTypes::intset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::bigintset(), SetTypes::bigintset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::floatset(), SetTypes::floatset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::textset(), SetTypes::textset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::dateset(), SetTypes::dateset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SetTypes::tstzset(), SetTypes::tstzset()}, LogicalType::INTEGER, Gen_set_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::intspan(), SpanTypes::intspan()}, LogicalType::INTEGER, Gen_span_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::bigintspan(), SpanTypes::bigintspan()}, LogicalType::INTEGER, Gen_span_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::floatspan(), SpanTypes::floatspan()}, LogicalType::INTEGER, Gen_span_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::datespan(), SpanTypes::datespan()}, LogicalType::INTEGER, Gen_span_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpanTypes::tstzspan(), SpanTypes::tstzspan()}, LogicalType::INTEGER, Gen_span_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::intspanset(), SpansetTypes::intspanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::bigintspanset(), SpansetTypes::bigintspanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::floatspanset(), SpansetTypes::floatspanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::datespanset(), SpansetTypes::datespanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {SpansetTypes::tstzspanset(), SpansetTypes::tstzspanset()}, LogicalType::INTEGER, Gen_spanset_cmp)); - for (auto &type : SpanTypes::AllTypes()) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {type}, LogicalType::UINTEGER, Gen_span_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {type, LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_span_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {type, type}, LogicalType::BOOLEAN, Gen_span_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {type, type}, LogicalType::BOOLEAN, Gen_span_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {type, type}, LogicalType::BOOLEAN, Gen_span_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {type, type}, LogicalType::BOOLEAN, Gen_span_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {type, type}, LogicalType::BOOLEAN, Gen_span_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {type, type}, LogicalType::BOOLEAN, Gen_span_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {type, type}, LogicalType::BOOLEAN, Gen_span_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {type, type}, LogicalType::BOOLEAN, Gen_span_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {type, type}, LogicalType::BOOLEAN, Gen_span_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {type, type}, LogicalType::BOOLEAN, Gen_span_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {type, type}, LogicalType::BOOLEAN, Gen_span_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {type, type}, LogicalType::BOOLEAN, Gen_span_ne)); - } - for (auto &type : SpansetTypes::AllTypes()) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {type}, LogicalType::UINTEGER, Gen_spanset_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {type, LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_spanset_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {type, type}, LogicalType::BOOLEAN, Gen_spanset_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {type, type}, LogicalType::BOOLEAN, Gen_spanset_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {type, type}, LogicalType::BOOLEAN, Gen_spanset_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {type, type}, LogicalType::BOOLEAN, Gen_spanset_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {type, type}, LogicalType::BOOLEAN, Gen_spanset_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {type, type}, LogicalType::BOOLEAN, Gen_spanset_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {type, type}, LogicalType::BOOLEAN, Gen_spanset_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {type, type}, LogicalType::BOOLEAN, Gen_spanset_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {type, type}, LogicalType::BOOLEAN, Gen_spanset_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {type, type}, LogicalType::BOOLEAN, Gen_spanset_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {type, type}, LogicalType::BOOLEAN, Gen_spanset_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {type, type}, LogicalType::BOOLEAN, Gen_spanset_ne)); - } -} - -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)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SpansetTypes::floatspanset()}, LogicalType::LIST(SpanTypes::floatspan()), Gen_spanset_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SpansetTypes::datespanset()}, LogicalType::LIST(SpanTypes::datespan()), Gen_spanset_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SpansetTypes::tstzspanset()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_spanset_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::intspan()), Gen_spanset_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::bigintspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_spanset_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::floatspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::floatspan()), Gen_spanset_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::datespanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::datespan()), Gen_spanset_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SpansetTypes::tstzspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_spanset_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::intspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::intspan()), Gen_spanset_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::bigintspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_spanset_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::floatspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::floatspan()), Gen_spanset_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::datespanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::datespan()), Gen_spanset_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SpansetTypes::tstzspanset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_spanset_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::intset()}, LogicalType::LIST(SpanTypes::intspan()), Gen_set_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::bigintset()}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_set_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::floatset()}, LogicalType::LIST(SpanTypes::floatspan()), Gen_set_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::dateset()}, LogicalType::LIST(SpanTypes::datespan()), Gen_set_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("spans", {SetTypes::tstzset()}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_set_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::intspan()), Gen_set_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::bigintset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_set_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::floatset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::floatspan()), Gen_set_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::dateset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::datespan()), Gen_set_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNSpans", {SetTypes::tstzset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_set_split_each_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::intset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::intspan()), Gen_set_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::bigintset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::bigintspan()), Gen_set_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::floatset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::floatspan()), Gen_set_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::dateset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::datespan()), Gen_set_split_n_spans)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNSpans", {SetTypes::tstzset(), LogicalType::INTEGER}, LogicalType::LIST(SpanTypes::tstzspan()), Gen_set_split_n_spans)); -} - -void RegisterGenerated_meos_pointcloud_box_pos(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxLeft", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_left_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_left_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverleft", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overleft_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overleft_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxRight", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_right_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_right_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverright", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overright_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overright_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxBelow", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_below_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<|", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_below_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverbelow", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overbelow_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<|", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overbelow_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxAbove", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_above_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|>>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_above_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverabove", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overabove_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|&>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overabove_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxFront", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_front_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_back_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverback", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overback_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("/&>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overback_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxBefore", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_before_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverbefore", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overbefore_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxAfter", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_after_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tpcboxOverafter", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overafter_tpcbox_tpcbox)); -} - -void RegisterGenerated_meos_quadbin(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidIndex", {QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_is_valid_index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_is_valid_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinTileToCell", {LogicalType::INTEGER, LogicalType::INTEGER, LogicalType::INTEGER}, QuadbinTypes::quadbin(), Gen_quadbin_tile_to_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {QuadbinTypes::quadbin()}, LogicalType::UINTEGER, Gen_quadbin_get_resolution)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {QuadbinTypes::quadbin(), LogicalType::INTEGER}, QuadbinTypes::quadbin(), Gen_quadbin_cell_to_parent)); - RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinCellSibling", {QuadbinTypes::quadbin(), LogicalType::VARCHAR}, QuadbinTypes::quadbin(), Gen_quadbin_cell_sibling)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {QuadbinTypes::quadbin()}, MobilityDuckGeometryType(), Gen_quadbin_cell_to_geompoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {QuadbinTypes::quadbin()}, MobilityDuckGeometryType(), Gen_quadbin_cell_to_geom)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {QuadbinTypes::quadbin()}, StboxType::stbox(), Gen_quadbin_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {QuadbinTypes::quadbin()}, StboxType::stbox(), Gen_quadbin_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {QuadbinTypes::quadbin(), LogicalType::TIMESTAMP_TZ}, StboxType::stbox(), Gen_quadbin_timestamptz_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {QuadbinTypes::quadbin(), SpanTypes::tstzspan()}, StboxType::stbox(), Gen_quadbin_tstzspan_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {QuadbinTypes::quadbin()}, LogicalType::DOUBLE, Gen_quadbin_cell_area)); - RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinCellToQuadkey", {QuadbinTypes::quadbin()}, LogicalType::VARCHAR, Gen_quadbin_cell_to_quadkey)); -} - -void RegisterGenerated_meos_cbuffer_comp_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_always_eq_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_always_eq_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_always_eq_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_always_eq_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_always_ne_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_always_ne_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_always_ne_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_always_ne_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_ever_eq_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_ever_eq_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_ever_eq_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_ever_eq_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_ever_ne_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_ever_ne_tcbuffer_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_ever_ne_tcbuffer_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, LogicalType::BOOLEAN, Gen_ever_ne_tcbuffer_tcbuffer)); -} - -void RegisterGenerated_meos_h3_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TemporalTypes::tbigint()}, H3indexTypes::th3index(), Gen_tbigint_to_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, H3indexTypes::th3index(), Gen_tbigint_to_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToCover", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3index_cell_to_cover)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index()}, StboxType::stbox(), Gen_h3index_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::h3index()}, StboxType::stbox(), Gen_h3index_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index(), LogicalType::TIMESTAMP_TZ}, StboxType::stbox(), Gen_h3index_timestamptz_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index(), SpanTypes::tstzspan()}, StboxType::stbox(), Gen_h3index_tstzspan_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("coverCells", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3indexset_cover_cells)); - RegisterSerializedScalarFunction(loader, ScalarFunction("latLngToCell", {MobilityDuckGeometryType(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_geo_to_h3index_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("geoToH3IndexSet", {MobilityDuckGeometryType(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_geo_to_h3index_set)); -} - -void RegisterGenerated_meos_box_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {TboxType::tbox()}, LogicalType::UINTEGER, Gen_tbox_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {TboxType::tbox(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_tbox_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ne)); +void RegisterGenerated_meos_geo_comp_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_always_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_eq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_eq_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_ne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TgeompointType::tgeompoint(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TGeographyTypes::tgeography(), TGeographyTypes::tgeography()}, LogicalType::BOOLEAN, Gen_ever_ne_tgeo_tgeo)); +} + +void RegisterGenerated_meos_cbuffer_rel_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tContains", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tcontains_geo_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tContains", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tcontains_tcbuffer_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tContains", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tcontains_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tContains", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tcontains_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tCovers", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tcovers_geo_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tCovers", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tcovers_tcbuffer_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tCovers", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tcovers_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tCovers", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tcovers_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_geo_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_tcbuffer_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDisjoint", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tdisjoint_geo_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDisjoint", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tdisjoint_tcbuffer_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDisjoint", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tdisjoint_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDisjoint", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tdisjoint_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tIntersects", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tintersects_geo_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tIntersects", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tintersects_tcbuffer_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tIntersects", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_tintersects_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tIntersects", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_tintersects_tcbuffer_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tTouches", {MobilityDuckGeometryType(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_ttouches_geo_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tTouches", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_ttouches_tcbuffer_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tTouches", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, TemporalTypes::tbool(), Gen_ttouches_tcbuffer_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tTouches", {CbufferTypes::tcbuffer(), CbufferTypes::tcbuffer()}, TemporalTypes::tbool(), Gen_ttouches_tcbuffer_tcbuffer)); +} + +void RegisterGenerated_meos_temporal_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tbool()}, LogicalType::VARCHAR, Gen_tbool_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {CbufferTypes::tcbuffer()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {CbufferTypes::tcbuffer(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TGeometryTypes::tgeometry()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TGeometryTypes::tgeometry(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TGeographyTypes::tgeography()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TGeographyTypes::tgeography(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TgeompointType::tgeompoint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TgeompointType::tgeompoint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TgeogpointType::tgeogpoint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TgeogpointType::tgeogpoint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {H3indexTypes::th3index()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {H3indexTypes::th3index(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TJsonbTypes::tjsonb()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TJsonbTypes::tjsonb(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {NpointTypes::tnpoint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {NpointTypes::tnpoint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TPcpointTypes::tpcpoint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TPcpointTypes::tpcpoint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TPcpatchTypes::tpcpatch()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TPcpatchTypes::tpcpatch(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {PoseTypes::tpose(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {PosechainTypes::tposechain()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {PosechainTypes::tposechain(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {QuadbinTypes::tquadbin()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {QuadbinTypes::tquadbin(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TrgeometryTypes::trgeometry()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TrgeometryTypes::trgeometry(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {S2cellTypes::ts2cell()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {S2cellTypes::ts2cell(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tbool()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tbool(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tbigint()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tbigint(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tfloat()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::tfloat(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::ttext()}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asHexWKB", {TemporalTypes::ttext(), LogicalType::VARCHAR}, LogicalType::VARCHAR, Gen_temporal_as_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointFromHexWKB", {LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointFromHexWKB", {LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointFromHexEWKB", {LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointFromHexEWKB", {LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_temporal_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_temporal_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_temporal_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextFromHexWKB", {LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_temporal_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tfloat(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tfloat_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tfloat()}, LogicalType::VARCHAR, Gen_tfloat_out_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tint()}, LogicalType::VARCHAR, Gen_tint_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::tbigint()}, LogicalType::VARCHAR, Gen_tbigint_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TemporalTypes::ttext()}, LogicalType::VARCHAR, Gen_ttext_out)); +} + +void RegisterGenerated_meos_s2cell(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_s2cell_is_valid_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2CellToToken", {S2cellTypes::s2cell()}, LogicalType::VARCHAR, Gen_s2cell_cell_to_token)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2TokenToCell", {LogicalType::VARCHAR}, S2cellTypes::s2cell(), Gen_s2cell_token_to_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {S2cellTypes::s2cell()}, LogicalType::UINTEGER, Gen_s2cell_get_resolution)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2GetFace", {S2cellTypes::s2cell()}, LogicalType::UINTEGER, Gen_s2cell_get_face)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {S2cellTypes::s2cell(), LogicalType::INTEGER}, S2cellTypes::s2cell(), Gen_s2cell_cell_to_parent)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2CellToChild", {S2cellTypes::s2cell(), LogicalType::INTEGER, LogicalType::INTEGER}, S2cellTypes::s2cell(), Gen_s2cell_cell_to_child)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2CellContains", {S2cellTypes::s2cell(), S2cellTypes::s2cell()}, LogicalType::BOOLEAN, Gen_s2cell_cell_contains)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2CommonAncestorLevel", {S2cellTypes::s2cell(), S2cellTypes::s2cell()}, LogicalType::INTEGER, Gen_s2cell_common_ancestor_level)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2RangeMin", {S2cellTypes::s2cell()}, S2cellTypes::s2cell(), Gen_s2cell_range_min)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2RangeMax", {S2cellTypes::s2cell()}, S2cellTypes::s2cell(), Gen_s2cell_range_max)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {S2cellTypes::s2cell()}, LogicalType::DOUBLE, Gen_s2cell_cell_area)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2EdgeLength", {S2cellTypes::s2cell(), LogicalType::INTEGER}, LogicalType::DOUBLE, Gen_s2cell_edge_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {S2cellTypes::s2cell()}, MobilityDuckGeometryType(), Gen_s2cell_cell_to_geogpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {S2cellTypes::s2cell()}, MobilityDuckGeometryType(), Gen_s2cell_cell_to_geog)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {S2cellTypes::s2cell()}, StboxType::stbox(), Gen_s2cell_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {S2cellTypes::s2cell()}, StboxType::stbox(), Gen_s2cell_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {S2cellTypes::s2cell(), LogicalType::TIMESTAMP_TZ}, StboxType::stbox(), Gen_s2cell_timestamptz_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {S2cellTypes::s2cell(), SpanTypes::tstzspan()}, StboxType::stbox(), Gen_s2cell_tstzspan_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2CellToToken", {S2cellTypes::ts2cell()}, TemporalTypes::ttext(), Gen_ts2cell_cell_to_token)); +} + +void RegisterGenerated_meos_geo_bbox_split(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {CbufferTypes::tcbuffer()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TGeometryTypes::tgeometry()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TGeographyTypes::tgeography()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TgeompointType::tgeompoint()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TgeogpointType::tgeogpoint()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {PoseTypes::tpose()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {PosechainTypes::tposechain()}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_each_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {PosechainTypes::tposechain(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_tgeo_split_n_stboxes)); +} + +void RegisterGenerated_meos_posechain_comp_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_always_eq_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_always_eq_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_always_eq_tposechain_tposechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_always_eq_tposechain_tposechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_always_ne_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_always_ne_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_always_ne_tposechain_tposechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_always_ne_tposechain_tposechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_ever_eq_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_ever_eq_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_ever_eq_tposechain_tposechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_ever_eq_tposechain_tposechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_ever_ne_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_ever_ne_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_ever_ne_tposechain_tposechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_ever_ne_tposechain_tposechain)); +} + +void RegisterGenerated_meos_geo_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); +} + +void RegisterGenerated_meos_geo_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TgeompointType::tgeompoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TgeogpointType::tgeogpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TGeometryTypes::tgeometry()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TGeographyTypes::tgeography()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {CbufferTypes::tcbuffer()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TPcpointTypes::tpcpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TPcpatchTypes::tpcpatch()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::tnpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PoseTypes::tpose()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TrgeometryTypes::trgeometry()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_tspatial_transform)); } void RegisterGenerated_meos_quadbin_conversion(ExtensionLoader &loader) { @@ -3861,73 +3686,76 @@ void RegisterGenerated_meos_quadbin_conversion(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, QuadbinTypes::tquadbin(), Gen_tgeompoint_to_tquadbin_d)); } -void RegisterGenerated_meos_s2cell_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_teq_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, TemporalTypes::tbool(), Gen_teq_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_teq_ts2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tne_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, TemporalTypes::tbool(), Gen_tne_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tne_ts2cell_ts2cell)); +void RegisterGenerated_meos_pointcloud_box_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ge)); } -void RegisterGenerated_meos_box_bbox_topo(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tbox_tbox)); +void RegisterGenerated_meos_rgeo_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tbool(), Gen_teq_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tbool(), Gen_tne_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_trgeometry_geo)); } -void RegisterGenerated_meos_json_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TJsonbTypes::tjsonb()}, TJsonbTypes::jsonb(), Gen_tjsonb_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TJsonbTypes::tjsonb()}, TJsonbTypes::jsonb(), Gen_tjsonb_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueAtTimestamp", {TJsonbTypes::tjsonb(), LogicalType::TIMESTAMP_TZ}, TJsonbTypes::jsonb(), Gen_tjsonb_value_at_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, TJsonbTypes::jsonb(), Gen_tjsonb_value_n)); +void RegisterGenerated_meos_pose_base_geopose(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPoseStream", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tpose_as_geopose_stream)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPoseStream", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_tpose_as_geopose_stream_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_yaw)); + RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_pitch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_roll)); } -void RegisterGenerated_meos_posechain_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::posechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_posechain_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::posechain()}, LogicalType::VARCHAR, Gen_posechain_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::posechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_posechain_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::posechain()}, LogicalType::VARCHAR, Gen_posechain_as_ewkt_d)); +void RegisterGenerated_meos_cbuffer_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloat", {CbufferTypes::tcbuffer()}, TemporalTypes::tfloat(), Gen_tcbuffer_to_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, TemporalTypes::tfloat(), Gen_tcbuffer_to_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {CbufferTypes::tcbuffer()}, TgeompointType::tgeompoint(), Gen_tcbuffer_to_tgeompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, TgeompointType::tgeompoint(), Gen_tcbuffer_to_tgeompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tcbuffer", {TGeometryTypes::tgeometry()}, CbufferTypes::tcbuffer(), Gen_tgeometry_to_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, CbufferTypes::tcbuffer(), Gen_tgeometry_to_tcbuffer)); } -void RegisterGenerated_meos_cbuffer_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {CbufferTypes::tcbuffer()}, CbufferTypes::cbuffer(), Gen_tcbuffer_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("convexHull", {CbufferTypes::tcbuffer()}, MobilityDuckGeometryType(), Gen_tcbuffer_convex_hull)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {CbufferTypes::tcbuffer()}, CbufferTypes::cbuffer(), Gen_tcbuffer_start_value)); +void RegisterGenerated_meos_cbuffer_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_expand)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_rotate_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("translate", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE, LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_translate)); } -void RegisterGenerated_meos_posechain_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, TemporalTypes::tbool(), Gen_teq_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, TemporalTypes::tbool(), Gen_tne_tposechain_posechain)); +void RegisterGenerated_meos_s2cell_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("s2cellFromHexWKB", {LogicalType::VARCHAR}, S2cellTypes::s2cell(), Gen_s2cell_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2cellFromText", {LogicalType::VARCHAR}, S2cellTypes::s2cell(), Gen_s2cell_in)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {S2cellTypes::s2cell()}, LogicalType::VARCHAR, Gen_s2cell_out)); } -void RegisterGenerated_meos_json_restrict(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_at_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_minus_value)); +void RegisterGenerated_meos_npoint_restrict(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("atValues", {NpointTypes::tnpoint(), SetTypes::npointset()}, NpointTypes::tnpoint(), Gen_tnpoint_at_npointset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValues", {NpointTypes::tnpoint(), SetTypes::npointset()}, NpointTypes::tnpoint(), Gen_tnpoint_minus_npointset)); } -void RegisterGenerated_meos_pointcloud_base_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TPcpointTypes::pcpoint()}, LogicalType::UINTEGER, Gen_pcpoint_get_pcid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TPcpatchTypes::pcpatch()}, LogicalType::UINTEGER, Gen_pcpatch_get_pcid)); -} - -void RegisterGenerated_meos_cbuffer_base_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("radius", {CbufferTypes::cbuffer()}, LogicalType::DOUBLE, Gen_cbuffer_radius)); +void RegisterGenerated_meos_rgeo_spatialfuncs(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("bodyPointTrajectory", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TgeompointType::tgeompoint(), Gen_trgeometry_body_point_trajectory)); } void RegisterGenerated_meos_posechain_base_accessor(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("numPoses", {PosechainTypes::posechain()}, LogicalType::INTEGER, Gen_posechain_num_poses)); } -void RegisterGenerated_meos_json_set_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::jsonbset()}, LogicalType::VARCHAR, Gen_jsonbset_out)); +void RegisterGenerated_meos_quadbin_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {QuadbinTypes::tquadbin()}, LogicalType::VARCHAR, Gen_tquadbin_out)); +} + +void RegisterGenerated_meos_pose_base_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PoseTypes::pose()}, LogicalType::INTEGER, Gen_pose_srid)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_7.cpp b/src/generated/generated_temporal_udfs_7.cpp index 2a19df36..40a8a68e 100644 --- a/src/generated/generated_temporal_udfs_7.cpp +++ b/src/generated/generated_temporal_udfs_7.cpp @@ -750,6 +750,19 @@ static void Gen_acontains_tgeo_geo(DataChunk &args, ExpressionState &, Vector &r }); } +static void Gen_acontains_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + int32_t r = acontains_tgeo_tgeo(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} + static void Gen_acovers_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), @@ -2183,338 +2196,217 @@ static void Gen_etouches_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Ve } -// ===== @ingroup meos_setspan_transf ===== -static void Gen_floatset_ceil(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 = floatset_ceil(s); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_floatset_degrees(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, bool a2) { - Set *s = BlobToSet(a); - Set *r = floatset_degrees(s, a2); - free(s); - return SetToBlob(result, r); - }); -} - -static void Gen_floatset_degrees_d(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Set *s = BlobToSet(a); - Set *r = floatset_degrees(s, false); - free(s); - return SetToBlob(result, r); - }); -} - -static void Gen_floatset_floor(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_transf ===== +static void Gen_temporal_round(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 = floatset_floor(s); - free(s); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = temporal_round(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatset_radians(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_round_d(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 = floatset_radians(s); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_set_round(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = set_round(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_set_round_d(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Set *s = BlobToSet(a); - Set *r = set_round(s, 0); - free(s); - return SetToBlob(result, r); - }); -} - -static void Gen_textcat_text_textset(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a1, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - text *t1 = MakeText(a1); - Set *s = BlobToSet(b); - Set *r = textcat_text_textset(t1, s); - free(t1); free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_textcat_textset_text(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - text *t2 = MakeText(a2); - Set *r = textcat_textset_text(s, t2); - free(t2); free(s); - return SetToBlobN(result, r, mask, idx); + Temporal *t = BlobToTemporal(in); + Temporal *r = temporal_round(t, 0); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_textset_initcap(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_as_tinstant(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_initcap(s); - free(s); - return SetToBlobN(result, r, mask, idx); + Temporal *t = BlobToTemporal(in); + Temporal *r = (Temporal *) temporal_as_tinstant(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_textset_lower(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_as_tsequence(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); + interpType interp = INTERP_NONE; + if (args.ColumnCount() > 1) { auto &c = args.data[1]; c.Flatten(args.size()); Value v = c.GetValue(0); if (!v.IsNull()) interp = interptype_from_string(v.ToString().c_str()); } 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_lower(s); - free(s); - return SetToBlobN(result, r, mask, idx); + Temporal *t = BlobToTemporal(in); + Temporal *r = (Temporal *) temporal_as_tsequence(t, interp); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_textset_upper(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_as_tsequenceset(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); + interpType interp = INTERP_NONE; + if (args.ColumnCount() > 1) { auto &c = args.data[1]; c.Flatten(args.size()); Value v = c.GetValue(0); if (!v.IsNull()) interp = interptype_from_string(v.ToString().c_str()); } 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_upper(s); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_bigintspan_expand(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = bigintspan_expand(s, a2); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); - }); -} - -static void Gen_floatspan_expand(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = floatspan_expand(s, a2); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); - }); -} - -static void Gen_intspan_expand(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = intspan_expand(s, a2); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = (Temporal *) temporal_as_tsequenceset(t, interp); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspan_ceil(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_ceil(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = floatspan_ceil(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tfloat_ceil(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspan_degrees(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_degrees(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = floatspan_degrees(s, a2); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tfloat_degrees(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspan_degrees_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_degrees_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Span *s = BlobToSpan(a); - Span *r = floatspan_degrees(s, false); - free(s); - return SpanToBlob(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tfloat_degrees(t, false); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspan_floor(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_floor(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = floatspan_floor(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tfloat_floor(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspan_radians(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_radians(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = floatspan_radians(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tfloat_radians(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspan_round(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_scale_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Span *s = BlobToSpan(in); - Span *r = floatspan_round(s, a2); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanToBlob(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tfloat_scale_value(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspan_round_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_shift_scale_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Span *s = BlobToSpan(a); - Span *r = floatspan_round(s, 0); - free(s); - return SpanToBlob(result, r); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, double a2, double a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tfloat_shift_scale_value(t, a2, a3); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspanset_ceil(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tfloat_shift_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = floatspanset_ceil(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tfloat_shift_value(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspanset_floor(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tint_scale_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = floatspanset_floor(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tint_scale_value(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspanset_degrees(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbigint_scale_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = floatspanset_degrees(s, a2); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tbigint_scale_value(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspanset_degrees_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tint_shift_scale_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - SpanSet *s = BlobToSpanSet(a); - SpanSet *r = floatspanset_degrees(s, false); - free(s); - return SpanSetToBlob(result, r); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int32_t a2, int32_t a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tint_shift_scale_value(t, a2, a3); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspanset_radians(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbigint_shift_scale_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = floatspanset_radians(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int64_t a2, int64_t a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tbigint_shift_scale_value(t, a2, a3); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspanset_round(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tint_shift_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = floatspanset_round(s, a2); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); + Temporal *t = BlobToTemporal(in); + Temporal *r = tint_shift_value(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_floatspanset_round_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbigint_shift_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - SpanSet *s = BlobToSpanSet(a); - SpanSet *r = floatspanset_round(s, 0); - free(s); - return SpanSetToBlob(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tbigint_shift_value(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } @@ -2882,763 +2774,835 @@ static void Gen_right_stbox_stbox(DataChunk &args, ExpressionState &, Vector &re } -// ===== @ingroup meos_json_set_json ===== -static void Gen_jsonbset_delete_array(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin ===== +static void Gen_quadbin_is_valid_index(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Set *t = BlobToSet(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Set *r = jsonbset_delete_array(t, elems, n); - free(t); FreeTextArr(elems, n); - return SetToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> bool { + bool r = quadbin_is_valid_index(static_cast(a0)); + return (bool) r; }); } -static void Gen_jsonbset_delete_path(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_is_valid_cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Set *t = BlobToSet(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Set *r = jsonbset_delete_path(t, elems, n); - free(t); FreeTextArr(elems, n); - return SetToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> bool { + bool r = quadbin_is_valid_cell(static_cast(a0)); + return (bool) r; }); } -static void Gen_jsonbset_extract_path(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_tile_to_cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - nullHandleType c2 = (nullHandleType) 0; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = null_handle_type_from_string(v.ToString().c_str()); } - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Set *t = BlobToSet(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Set *r = jsonbset_extract_path(t, elems, n, false, c2); - free(t); FreeTextArr(elems, n); - return SetToBlobN(result, r, mask, idx); + TernaryExecutor::Execute(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](int32_t a0, int32_t a1, int32_t a2) -> int64_t { + uint64_t r = quadbin_tile_to_cell(static_cast(a0), static_cast(a1), static_cast(a2)); + return static_cast(r); }); } -static void Gen_jsonbset_insert(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto rc = args.size(); - auto &lst = args.data[1]; lst.Flatten(rc); - auto &child = ListVector::GetEntry(lst); - child.Flatten(ListVector::GetListSize(lst)); - Jsonb *c2 = NULL; - { auto &cv = args.data[2]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c2 = BlobToJsonb(string_t(StringValue::Get(v))); } - bool c3 = (bool) 0; - { auto &cv = args.data[3]; cv.Flatten(rc); Value v = cv.GetValue(0); if (!v.IsNull()) c3 = v.GetValue(); } - BinaryExecutor::ExecuteWithNulls(args.data[0], lst, result, rc, - [&](string_t in, list_entry_t le, ValidityMask &mask, idx_t idx) -> string_t { - Set *t = BlobToSet(in); - int n = 0; - text **elems = ListToTextArr(child, le, &n); - Set *r = jsonbset_insert(t, elems, n, c2, c3); - free(t); FreeTextArr(elems, n); - return SetToBlobN(result, r, mask, idx); +static void Gen_quadbin_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> uint32_t { + uint32_t r = quadbin_get_resolution(static_cast(a0)); + return r; }); - free(c2); } -static void Gen_jsonbset_array_length(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cell_to_parent(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_array_length(s); - free(s); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1) -> int64_t { + uint64_t r = quadbin_cell_to_parent(static_cast(a0), static_cast(a1)); + return static_cast(r); }); } -static void Gen_jsonbset_delete_index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cell_sibling(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = jsonbset_delete_index(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, string_t a1) -> int64_t { + uint64_t r = quadbin_cell_sibling(static_cast(a0), a1.GetString().c_str()); + return static_cast(r); }); } -static void Gen_jsonbset_delete(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cell_to_geompoint(DataChunk &args, ExpressionState &state, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - text *t2 = MakeText(a2); - Set *r = jsonbset_delete(s, t2); - free(t2); free(s); - return SetToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + GSERIALIZED * r = quadbin_cell_to_geompoint(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; }); } -static void Gen_jsonbset_strip_nulls(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cell_to_geom(DataChunk &args, ExpressionState &state, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, bool a2) { - Set *s = BlobToSet(a); - Set *r = jsonbset_strip_nulls(s, a2); - free(s); - return SetToBlob(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + GSERIALIZED * r = quadbin_cell_to_geom(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; }); } -static void Gen_jsonbset_strip_nulls_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Set *s = BlobToSet(a); - Set *r = jsonbset_strip_nulls(s, false); - free(s); - return SetToBlob(result, r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + STBox * r = quadbin_to_stbox(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } -static void Gen_jsonbset_pretty(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_timestamptz_to_stbox(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_pretty(s); - free(s); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, timestamp_tz_t a1, ValidityMask &mask, idx_t idx) -> string_t { + STBox * r = quadbin_timestamptz_to_stbox(static_cast(a0), DuckDBToMeosTimestamp(a1).value); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } - -// ===== @ingroup meos_json_comp_ever ===== -static void Gen_always_eq_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_tstzspan_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - int32_t r = always_eq_tjsonb_jsonb(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, string_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Span *p1 = BlobToSpan(a1); + STBox * r = quadbin_tstzspan_to_stbox(static_cast(a0), p1); + free(p1); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } -static void Gen_always_eq_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cell_area(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_tjsonb_tjsonb(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> double { + double r = quadbin_cell_area(static_cast(a0)); + return (double) r; }); } -static void Gen_always_ne_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cell_to_quadkey(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - int32_t r = always_ne_tjsonb_jsonb(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + char * r = quadbin_cell_to_quadkey(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return TakeCString(result, r); }); } -static void Gen_always_ne_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_quadbin_accessor ===== +static void Gen_quadbin_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_ne_tjsonb_tjsonb(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = quadbin_grid_disk(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_ever_eq_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cell_to_children_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - int32_t r = ever_eq_tjsonb_jsonb(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = quadbin_cell_to_children_set(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_ever_eq_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cell_to_cover(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_eq_tjsonb_tjsonb(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = quadbin_cell_to_cover(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_ever_ne_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tquadbin_start_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) -> int64_t { Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - int32_t r = ever_ne_tjsonb_jsonb(t, a2p); - free(a2p); free(t); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + int64_t r = (int64_t) tquadbin_start_value(t); + free(t); + return r; }); } -static void Gen_ever_ne_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tquadbin_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> bool { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = ever_ne_tjsonb_tjsonb(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) -> int64_t { + Temporal *t = BlobToTemporal(in); + int64_t r = (int64_t) tquadbin_end_value(t); + free(t); + return r; }); } - -// ===== @ingroup meos_temporal_analytics_simplify ===== -static void Gen_temporal_simplify_dp(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tquadbin_value_n(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, double a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> int64_t { Temporal *t = BlobToTemporal(in); - Temporal *r = temporal_simplify_dp(t, a2, a3); + uint64_t v; + bool ok = tquadbin_value_n(t, a2, &v); free(t); - return TemporalToBlobN(result, r, mask, idx); + if (!ok) { mask.SetInvalid(idx); return int64_t(); } + return (int64_t) v; }); } -static void Gen_temporal_simplify_dp_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tquadbin_values(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = temporal_simplify_dp(t, a2, true); - free(t); - return TemporalToBlobN(result, r, mask, idx); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + uint64_t * arr = tquadbin_values(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + +static void Gen_quadbinset_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = quadbinset_grid_disk(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_temporal_simplify_max_dist(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbinset_compact_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, double a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = temporal_simplify_max_dist(t, a2, a3); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(in); + Set *r = quadbinset_compact_cells(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_temporal_simplify_max_dist_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbinset_uncompact_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = temporal_simplify_max_dist(t, a2, true); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = quadbinset_uncompact_cells(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_temporal_simplify_min_dist(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbinset_cover_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = temporal_simplify_min_dist(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = quadbinset_cover_cells(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_temporal_bool ===== -static void Gen_tand_bool_tbool(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_base_comp ===== +static void Gen_cbuffer_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](bool a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tand_bool_tbool(a1, t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Cbuffer *v = BlobToCbuffer(in); + uint32_t r = cbuffer_hash(v); + free(v); + return r; }); } -static void Gen_tand_tbool_bool(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tand_tbool_bool(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + Cbuffer *s = BlobToCbuffer(in); + uint64_t r = cbuffer_hash_extended(s, a2); + free(s); + return r; }); } -static void Gen_tand_tbool_tbool(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tand_tbool_tbool(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Cbuffer *s1 = BlobToCbuffer(a); + Cbuffer *s2 = BlobToCbuffer(b); + bool r = cbuffer_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tnot_tbool(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_ge(DataChunk &args, ExpressionState &, 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); - Temporal *r = tnot_tbool(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Cbuffer *s1 = BlobToCbuffer(a); + Cbuffer *s2 = BlobToCbuffer(b); + bool r = cbuffer_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tor_bool_tbool(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](bool a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tor_bool_tbool(a1, t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Cbuffer *s1 = BlobToCbuffer(a); + Cbuffer *s2 = BlobToCbuffer(b); + bool r = cbuffer_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tor_tbool_bool(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tor_tbool_bool(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Cbuffer *s1 = BlobToCbuffer(a); + Cbuffer *s2 = BlobToCbuffer(b); + bool r = cbuffer_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tor_tbool_tbool(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tor_tbool_tbool(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Cbuffer *s1 = BlobToCbuffer(a); + Cbuffer *s2 = BlobToCbuffer(b); + bool r = cbuffer_lt(s1, s2); + free(s1); free(s2); + return r; }); } - -// ===== @ingroup meos_quadbin_base_comp ===== -static void Gen_quadbin_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_eq(static_cast(a0), static_cast(a1)); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Cbuffer *s1 = BlobToCbuffer(a); + Cbuffer *s2 = BlobToCbuffer(b); + bool r = cbuffer_ne(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_same(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_ne(static_cast(a0), static_cast(a1)); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Cbuffer *s1 = BlobToCbuffer(a); + Cbuffer *s2 = BlobToCbuffer(b); + bool r = cbuffer_same(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_lt(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_npoint_base_comp ===== +static void Gen_npoint_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_lt(static_cast(a0), static_cast(a1)); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_le(static_cast(a0), static_cast(a1)); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_gt(static_cast(a0), static_cast(a1)); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_ge(static_cast(a0), static_cast(a1)); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_cmp(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> int32_t { - int32_t r = quadbin_cmp(static_cast(a0), static_cast(a1)); - return (int32_t) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_lt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> uint32_t { - uint32_t r = quadbin_hash(static_cast(a0)); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_ne(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_quadbin_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_same(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, uint64_t a1) -> uint64_t { - uint64_t r = quadbin_hash_extended(static_cast(a0), a1); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_same(s1, s2); + free(s1); free(s2); return r; }); } -// ===== @ingroup meos_h3_comp_temp ===== -static void Gen_teq_h3index_th3index(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_edges ===== +static void Gen_h3_origin_to_directed_edges(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = teq_h3index_th3index((uint64_t) a1, t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_origin_to_directed_edges(static_cast(a0)); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_teq_th3index_h3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_are_neighbor_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = teq_th3index_h3index(t, (uint64_t) a2); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = th3index_are_neighbor_cells(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_th3index_th3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cells_to_directed_edge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - Temporal *r = teq_th3index_th3index(t1, t2); + Temporal *r = th3index_cells_to_directed_edge(t1, t2); free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_h3index_th3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_is_valid_directed_edge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tne_h3index_th3index((uint64_t) a1, t); + Temporal *r = th3index_is_valid_directed_edge(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_th3index_h3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_get_directed_edge_origin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tne_th3index_h3index(t, (uint64_t) a2); + Temporal *r = th3index_get_directed_edge_origin(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_th3index_th3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_get_directed_edge_destination(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tne_th3index_th3index(t1, t2); - free(t1); free(t2); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_get_directed_edge_destination(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_rgeo_comp_temp ===== -static void Gen_teq_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_directed_edge_to_boundary(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 = teq_geo_trgeometry(gs, t); - free(t); free(gs); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_directed_edge_to_boundary(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = teq_trgeometry_geo(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); - }); -} -static void Gen_tne_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_text ===== +static void Gen_textcat_text_ttext(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 = tne_geo_trgeometry(gs, t); - free(t); free(gs); + [&](string_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + text *a1t = MakeText(a1); + Temporal *r = textcat_text_ttext(a1t, t); + free(a1t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_textcat_ttext_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tne_trgeometry_geo(t, gs); - free(t); free(gs); + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + text *a2t = MakeText(a2); + Temporal *r = textcat_ttext_text(t, a2t); + free(a2t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_h3_latlng ===== -static void Gen_tgeogpoint_to_th3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_textcat_ttext_ttext(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeogpoint_to_th3index(t, a2); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = textcat_ttext_ttext(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_th3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttext_initcap(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeompoint_to_th3index(t, a2); + Temporal *r = ttext_initcap(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_to_tgeogpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttext_upper(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_to_tgeogpoint(t); + Temporal *r = ttext_upper(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttext_lower(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_to_tgeompoint(t); + Temporal *r = ttext_lower(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pointcloud_box_accessor ===== -static void Gen_tpcbox_hasx(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_box_topo ===== +static void Gen_adjacent_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - bool r = tpcbox_hasx(v); - free(v); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = adjacent_stbox_stbox(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_tpcbox_hasz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - bool r = tpcbox_hasz(v); - free(v); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = contained_stbox_stbox(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_tpcbox_hast(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - bool r = tpcbox_hast(v); - free(v); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = contains_stbox_stbox(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_tpcbox_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - int32_t r = tpcbox_srid(v); - free(v); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = overlaps_stbox_stbox(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_tpcbox_pcid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - uint32_t r = tpcbox_pcid(v); - free(v); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = same_stbox_stbox(s1, s2); + free(s1); free(s2); return r; }); } -// ===== @ingroup meos_geo_set_srid ===== -static void Gen_spatialset_set_srid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_rel_temp ===== +static void Gen_tdwithin_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = spatialset_set_srid(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in_g, string_t in_t, double d, 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 = tdwithin_geo_trgeometry(gs, t, d); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_spatialset_transform(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdwithin_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = spatialset_transform(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in_t, string_t in_g, double d, 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 = tdwithin_trgeometry_geo(t, gs, d); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } +static void Gen_tdwithin_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in1, string_t in2, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tdwithin_trgeometry_trgeometry(t1, t2, a2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} -// ===== @ingroup meos_npoint_conversion ===== -static void Gen_tgeompoint_to_tnpoint(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_rgeo_modif ===== +static void Gen_trgeometry_delete_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, timestamp_tz_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeompoint_to_tnpoint(t); + Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tnpoint_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_delete_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tnpoint_to_tgeompoint(t); + Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } +static void Gen_trgeometry_merge(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = trgeometry_merge(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + + +// ===== @ingroup meos_pose_base_inout ===== +static void Gen_pose_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Pose *s = BlobToPose(a); + char *r = pose_as_ewkt(s, a2); + free(s); + return TakeCString(result, r); + }); +} + +static void Gen_pose_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Pose *s = BlobToPose(a); + char *r = pose_as_ewkt(s, 15); + free(s); + return TakeCString(result, r); + }); +} + +static void Gen_pose_as_text(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Pose *s = BlobToPose(a); + char *r = pose_as_text(s, a2); + free(s); + return TakeCString(result, r); + }); +} + +static void Gen_pose_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Pose *s = BlobToPose(a); + char *r = pose_as_text(s, 15); + free(s); + return TakeCString(result, r); + }); +} + + +// ===== @ingroup meos_posechain_comp_temp ===== +static void Gen_teq_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + PoseChain *a2p = BlobToPosechain(a2); + Temporal *r = teq_tposechain_posechain(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tne_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + PoseChain *a2p = BlobToPosechain(a2); + Temporal *r = tne_tposechain_posechain(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + // ===== @ingroup meos_json_comp_temp ===== static void Gen_teq_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { @@ -3666,64 +3630,77 @@ static void Gen_tne_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &res } -// ===== @ingroup meos_box_inout ===== -static void Gen_tbox_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_inout ===== +static void Gen_tpcbox_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - TBox *s = BlobToTbox(a); - char *r = tbox_out(s, a2); + TPCBox *s = BlobToTpcbox(a); + char *r = tpcbox_out(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_tbox_out_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_out_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - TBox *s = BlobToTbox(a); - char *r = tbox_out(s, 15); + TPCBox *s = BlobToTpcbox(a); + char *r = tpcbox_out(s, 15); free(s); return TakeCString(result, r); }); } -// ===== @ingroup meos_pointcloud_conversion ===== -static void Gen_tpcpatch_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_base_accessor ===== +static void Gen_pcpoint_get_pcid(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpcpatch_to_tgeometry(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Pcpoint *v = BlobToPcpoint(in); + uint32_t r = pcpoint_get_pcid(v); + free(v); + return r; }); } - -// ===== @ingroup meos_quadbin_set_inout ===== -static void Gen_quadbinset_out(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pcpatch_get_pcid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), + UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Set *s = BlobToSet(in); - char * r = quadbinset_out(s); - free(s); - return TakeCString(result, r); + Pcpatch *v = BlobToPcpatch(in); + uint32_t r = pcpatch_get_pcid(v); + free(v); + return r; }); } -// ===== @ingroup meos_s2cell_inout ===== -static void Gen_ts2cell_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_base_transf ===== +static void Gen_pose_compose(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + Pose *r = pose_compose(s1, s2); + free(s1); free(s2); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return PoseToBlob(result, r); + }); +} + + +// ===== @ingroup meos_json_set_inout ===== +static void Gen_jsonbset_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = ts2cell_out(t); - free(t); + Set *s = BlobToSet(in); + char * r = jsonbset_out(s); + free(s); return TakeCString(result, r); }); } @@ -4045,6 +4022,7 @@ void RegisterGenerated_meos_geo_rel_ever(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("aContains", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_acontains_geo_tgeo)); RegisterSerializedScalarFunction(loader, ScalarFunction("aContains", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_acontains_geo_tgeo)); RegisterSerializedScalarFunction(loader, ScalarFunction("aContains", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_acontains_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("aContains", {TGeometryTypes::tgeometry(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_acontains_tgeo_tgeo)); RegisterSerializedScalarFunction(loader, ScalarFunction("aCovers", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, LogicalType::BOOLEAN, Gen_acovers_geo_tgeo)); RegisterSerializedScalarFunction(loader, ScalarFunction("aCovers", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, LogicalType::BOOLEAN, Gen_acovers_geo_tgeo)); RegisterSerializedScalarFunction(loader, ScalarFunction("aCovers", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_acovers_tgeo_geo)); @@ -4199,46 +4177,72 @@ void RegisterGenerated_meos_cbuffer_rel_ever(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("eTouches", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_etouches_tcbuffer_cbuffer)); } -void RegisterGenerated_meos_setspan_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("ceil", {SetTypes::floatset()}, SetTypes::floatset(), Gen_floatset_ceil)); - RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SetTypes::floatset(), LogicalType::BOOLEAN}, SetTypes::floatset(), Gen_floatset_degrees)); - RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SetTypes::floatset()}, SetTypes::floatset(), Gen_floatset_degrees_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("floor", {SetTypes::floatset()}, SetTypes::floatset(), Gen_floatset_floor)); - RegisterSerializedScalarFunction(loader, ScalarFunction("radians", {SetTypes::floatset()}, SetTypes::floatset(), Gen_floatset_radians)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_set_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::npointset(), LogicalType::INTEGER}, SetTypes::npointset(), Gen_set_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_set_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_set_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::floatset(), LogicalType::INTEGER}, SetTypes::floatset(), Gen_set_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::cbufferset()}, SetTypes::cbufferset(), Gen_set_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::npointset()}, SetTypes::npointset(), Gen_set_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::poseset()}, SetTypes::poseset(), Gen_set_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::posechainset()}, SetTypes::posechainset(), Gen_set_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SetTypes::floatset()}, SetTypes::floatset(), Gen_set_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setConcat", {LogicalType::VARCHAR, SetTypes::textset()}, SetTypes::textset(), Gen_textcat_text_textset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("||", {LogicalType::VARCHAR, SetTypes::textset()}, SetTypes::textset(), Gen_textcat_text_textset)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setConcat", {SetTypes::textset(), LogicalType::VARCHAR}, SetTypes::textset(), Gen_textcat_textset_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("||", {SetTypes::textset(), LogicalType::VARCHAR}, SetTypes::textset(), Gen_textcat_textset_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("initcap", {SetTypes::textset()}, SetTypes::textset(), Gen_textset_initcap)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lower", {SetTypes::textset()}, SetTypes::textset(), Gen_textset_lower)); - RegisterSerializedScalarFunction(loader, ScalarFunction("upper", {SetTypes::textset()}, SetTypes::textset(), Gen_textset_upper)); - RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {SpanTypes::bigintspan(), LogicalType::BIGINT}, SpanTypes::bigintspan(), Gen_bigintspan_expand)); - RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {SpanTypes::floatspan(), LogicalType::DOUBLE}, SpanTypes::floatspan(), Gen_floatspan_expand)); - RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {SpanTypes::intspan(), LogicalType::INTEGER}, SpanTypes::intspan(), Gen_intspan_expand)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ceil", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_ceil)); - RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SpanTypes::floatspan(), LogicalType::BOOLEAN}, SpanTypes::floatspan(), Gen_floatspan_degrees)); - RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_degrees_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("floor", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_floor)); - RegisterSerializedScalarFunction(loader, ScalarFunction("radians", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_radians)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SpanTypes::floatspan(), LogicalType::INTEGER}, SpanTypes::floatspan(), Gen_floatspan_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SpanTypes::floatspan()}, SpanTypes::floatspan(), Gen_floatspan_round_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ceil", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_ceil)); - RegisterSerializedScalarFunction(loader, ScalarFunction("floor", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_floor)); - RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SpansetTypes::floatspanset(), LogicalType::BOOLEAN}, SpansetTypes::floatspanset(), Gen_floatspanset_degrees)); - RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_degrees_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("radians", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_radians)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SpansetTypes::floatspanset(), LogicalType::INTEGER}, SpansetTypes::floatspanset(), Gen_floatspanset_round)); - RegisterSerializedScalarFunction(loader, ScalarFunction("round", {SpansetTypes::floatspanset()}, SpansetTypes::floatspanset(), Gen_floatspanset_round_d)); +void RegisterGenerated_meos_temporal_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TemporalTypes::tfloat(), LogicalType::INTEGER}, TemporalTypes::tfloat(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {NpointTypes::tnpoint(), LogicalType::INTEGER}, NpointTypes::tnpoint(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_temporal_round)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TGeometryTypes::tgeometry()}, TGeometryTypes::tgeometry(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TGeographyTypes::tgeography()}, TGeographyTypes::tgeography(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {CbufferTypes::tcbuffer()}, CbufferTypes::tcbuffer(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {NpointTypes::tnpoint()}, NpointTypes::tnpoint(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("round", {PosechainTypes::tposechain()}, PosechainTypes::tposechain(), Gen_temporal_round_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointInst", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_temporal_as_tinstant)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointInst", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tinstant)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolInst", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_temporal_as_tinstant)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintInst", {TemporalTypes::tint()}, TemporalTypes::tint(), Gen_temporal_as_tinstant)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintInst", {TemporalTypes::tbigint()}, TemporalTypes::tbigint(), Gen_temporal_as_tinstant)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatInst", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_temporal_as_tinstant)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextInst", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_temporal_as_tinstant)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeq", {TgeompointType::tgeompoint(), LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeq", {TgeogpointType::tgeogpoint(), LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeq", {TemporalTypes::tbool(), LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {TemporalTypes::tint()}, TemporalTypes::tint(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeq", {TemporalTypes::tint(), LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {TemporalTypes::tbigint()}, TemporalTypes::tbigint(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeq", {TemporalTypes::tbigint(), LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeq", {TemporalTypes::tfloat(), LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeq", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_temporal_as_tsequence)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSet", {TgeompointType::tgeompoint()}, TgeompointType::tgeompoint(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointSeqSet", {TgeompointType::tgeompoint(), LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSet", {TgeogpointType::tgeogpoint()}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointSeqSet", {TgeogpointType::tgeogpoint(), LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolSeqSet", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintSeqSet", {TemporalTypes::tint()}, TemporalTypes::tint(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintSeqSet", {TemporalTypes::tbigint()}, TemporalTypes::tbigint(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSet", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatSeqSet", {TemporalTypes::tfloat(), LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextSeqSet", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_temporal_as_tsequenceset)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ceil", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tfloat_ceil)); + RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {TemporalTypes::tfloat(), LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_tfloat_degrees)); + RegisterSerializedScalarFunction(loader, ScalarFunction("degrees", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tfloat_degrees_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("floor", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tfloat_floor)); + RegisterSerializedScalarFunction(loader, ScalarFunction("radians", {TemporalTypes::tfloat()}, TemporalTypes::tfloat(), Gen_tfloat_radians)); + RegisterSerializedScalarFunction(loader, ScalarFunction("scaleValue", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tfloat_scale_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("shiftScaleValue", {TemporalTypes::tfloat(), LogicalType::DOUBLE, LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tfloat_shift_scale_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("shiftValue", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_tfloat_shift_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("scaleValue", {TemporalTypes::tint(), LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tint_scale_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("scaleValue", {TemporalTypes::tbigint(), LogicalType::BIGINT}, TemporalTypes::tbigint(), Gen_tbigint_scale_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("shiftScaleValue", {TemporalTypes::tint(), LogicalType::INTEGER, LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tint_shift_scale_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("shiftScaleValue", {TemporalTypes::tbigint(), LogicalType::BIGINT, LogicalType::BIGINT}, TemporalTypes::tbigint(), Gen_tbigint_shift_scale_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("shiftValue", {TemporalTypes::tint(), LogicalType::INTEGER}, TemporalTypes::tint(), Gen_tint_shift_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("shiftValue", {TemporalTypes::tbigint(), LogicalType::BIGINT}, TemporalTypes::tbigint(), Gen_tbigint_shift_value)); } void RegisterGenerated_meos_temporal_analytics_similarity(ExtensionLoader &loader) { @@ -4306,135 +4310,130 @@ void RegisterGenerated_meos_geo_box_pos(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_right_stbox_stbox)); } -void RegisterGenerated_meos_json_set_json(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetDeleteArray", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR)}, SetTypes::jsonbset(), Gen_jsonbset_delete_array)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR)}, SetTypes::jsonbset(), Gen_jsonbset_delete_array)); - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetDeletePath", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR)}, SetTypes::jsonbset(), Gen_jsonbset_delete_path)); - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetExtractPath", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR), LogicalType::VARCHAR}, SetTypes::jsonbset(), Gen_jsonbset_extract_path)); - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetInsert", {SetTypes::jsonbset(), LogicalType::LIST(LogicalType::VARCHAR), TJsonbTypes::jsonb(), LogicalType::BOOLEAN}, SetTypes::jsonbset(), Gen_jsonbset_insert)); - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetArrayLength", {SetTypes::jsonbset()}, SetTypes::intset(), Gen_jsonbset_array_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetDeleteIndex", {SetTypes::jsonbset(), LogicalType::INTEGER}, SetTypes::jsonbset(), Gen_jsonbset_delete_index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-", {SetTypes::jsonbset(), LogicalType::INTEGER}, SetTypes::jsonbset(), Gen_jsonbset_delete_index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetDelete", {SetTypes::jsonbset(), LogicalType::VARCHAR}, SetTypes::jsonbset(), Gen_jsonbset_delete)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-", {SetTypes::jsonbset(), LogicalType::VARCHAR}, SetTypes::jsonbset(), Gen_jsonbset_delete)); - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetStripNulls", {SetTypes::jsonbset(), LogicalType::BOOLEAN}, SetTypes::jsonbset(), Gen_jsonbset_strip_nulls)); - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetStripNulls", {SetTypes::jsonbset()}, SetTypes::jsonbset(), Gen_jsonbset_strip_nulls_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("jsonbsetPretty", {SetTypes::jsonbset()}, SetTypes::textset(), Gen_jsonbset_pretty)); -} - -void RegisterGenerated_meos_json_comp_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_always_eq_tjsonb_jsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_always_eq_tjsonb_jsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_always_eq_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%=", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_always_eq_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_always_ne_tjsonb_jsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_always_ne_tjsonb_jsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("aNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_always_ne_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("%<>", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_always_ne_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_ever_eq_tjsonb_jsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_ever_eq_tjsonb_jsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_ever_eq_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_ever_eq_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_ever_ne_tjsonb_jsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, LogicalType::BOOLEAN, Gen_ever_ne_tjsonb_jsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_ever_ne_tjsonb_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_ever_ne_tjsonb_tjsonb)); -} - -void RegisterGenerated_meos_temporal_analytics_simplify(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_simplify_dp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_simplify_dp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_dp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_temporal_simplify_dp_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_temporal_simplify_dp_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("douglasPeuckerSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_dp_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TemporalTypes::tfloat(), Gen_temporal_simplify_max_dist)); - RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TgeompointType::tgeompoint(), Gen_temporal_simplify_max_dist)); - RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE, LogicalType::BOOLEAN}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_max_dist)); - RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_temporal_simplify_max_dist_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_temporal_simplify_max_dist_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("maxDistSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_max_dist_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TemporalTypes::tfloat(), LogicalType::DOUBLE}, TemporalTypes::tfloat(), Gen_temporal_simplify_min_dist)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_temporal_simplify_min_dist)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_temporal_simplify_min_dist)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_temporal_simplify_min_dist)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minDistSimplify", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_temporal_simplify_min_dist)); -} - -void RegisterGenerated_meos_temporal_bool(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_bool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_bool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tand_tbool_bool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tand_tbool_bool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_tbool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_tbool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNot", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tnot_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tnot_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_bool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_bool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tor_tbool_bool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tor_tbool_bool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_tbool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_tbool_tbool)); -} - -void RegisterGenerated_meos_quadbin_base_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::INTEGER, Gen_quadbin_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {QuadbinTypes::quadbin()}, LogicalType::UINTEGER, Gen_quadbin_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {QuadbinTypes::quadbin(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_quadbin_hash_extended)); -} - -void RegisterGenerated_meos_h3_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {H3indexTypes::h3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_teq_h3index_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {H3indexTypes::th3index(), H3indexTypes::h3index()}, TemporalTypes::tbool(), Gen_teq_th3index_h3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_teq_th3index_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {H3indexTypes::h3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_tne_h3index_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {H3indexTypes::th3index(), H3indexTypes::h3index()}, TemporalTypes::tbool(), Gen_tne_th3index_h3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_tne_th3index_th3index)); -} - -void RegisterGenerated_meos_rgeo_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tbool(), Gen_teq_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tbool(), Gen_tne_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_trgeometry_geo)); -} - -void RegisterGenerated_meos_h3_latlng(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_tgeogpoint_to_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_tgeompoint_to_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {H3indexTypes::th3index()}, TgeogpointType::tgeogpoint(), Gen_th3index_to_tgeogpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {H3indexTypes::th3index()}, TgeompointType::tgeompoint(), Gen_th3index_to_tgeompoint)); -} - -void RegisterGenerated_meos_pointcloud_box_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hasX", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hasx)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hasZ", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hasz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hasT", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hast)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TpcboxType::tpcbox()}, LogicalType::INTEGER, Gen_tpcbox_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TpcboxType::tpcbox()}, LogicalType::UINTEGER, Gen_tpcbox_pcid)); -} - -void RegisterGenerated_meos_geo_set_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_spatialset_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_spatialset_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_spatialset_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_spatialset_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_spatialset_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_spatialset_transform)); -} - -void RegisterGenerated_meos_npoint_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tnpoint", {TgeompointType::tgeompoint()}, NpointTypes::tnpoint(), Gen_tgeompoint_to_tnpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TgeompointType::tgeompoint()}, NpointTypes::tnpoint(), Gen_tgeompoint_to_tnpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {NpointTypes::tnpoint()}, TgeompointType::tgeompoint(), Gen_tnpoint_to_tgeompoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {NpointTypes::tnpoint()}, TgeompointType::tgeompoint(), Gen_tnpoint_to_tgeompoint)); +void RegisterGenerated_meos_quadbin(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidIndex", {QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_is_valid_index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_is_valid_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinTileToCell", {LogicalType::INTEGER, LogicalType::INTEGER, LogicalType::INTEGER}, QuadbinTypes::quadbin(), Gen_quadbin_tile_to_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {QuadbinTypes::quadbin()}, LogicalType::UINTEGER, Gen_quadbin_get_resolution)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {QuadbinTypes::quadbin(), LogicalType::INTEGER}, QuadbinTypes::quadbin(), Gen_quadbin_cell_to_parent)); + RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinCellSibling", {QuadbinTypes::quadbin(), LogicalType::VARCHAR}, QuadbinTypes::quadbin(), Gen_quadbin_cell_sibling)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {QuadbinTypes::quadbin()}, MobilityDuckGeometryType(), Gen_quadbin_cell_to_geompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {QuadbinTypes::quadbin()}, MobilityDuckGeometryType(), Gen_quadbin_cell_to_geom)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {QuadbinTypes::quadbin()}, StboxType::stbox(), Gen_quadbin_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {QuadbinTypes::quadbin()}, StboxType::stbox(), Gen_quadbin_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {QuadbinTypes::quadbin(), LogicalType::TIMESTAMP_TZ}, StboxType::stbox(), Gen_quadbin_timestamptz_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {QuadbinTypes::quadbin(), SpanTypes::tstzspan()}, StboxType::stbox(), Gen_quadbin_tstzspan_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {QuadbinTypes::quadbin()}, LogicalType::DOUBLE, Gen_quadbin_cell_area)); + RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinCellToQuadkey", {QuadbinTypes::quadbin()}, LogicalType::VARCHAR, Gen_quadbin_cell_to_quadkey)); +} + +void RegisterGenerated_meos_quadbin_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {QuadbinTypes::quadbin(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbin_grid_disk)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToChildren", {QuadbinTypes::quadbin(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbin_cell_to_children_set)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToCover", {QuadbinTypes::quadbin(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbin_cell_to_cover)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {QuadbinTypes::tquadbin()}, QuadbinTypes::quadbin(), Gen_tquadbin_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {QuadbinTypes::tquadbin()}, QuadbinTypes::quadbin(), Gen_tquadbin_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, QuadbinTypes::quadbin(), Gen_tquadbin_value_n)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getValues", {QuadbinTypes::tquadbin()}, LogicalType::LIST(QuadbinTypes::quadbin()), Gen_tquadbin_values)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {SetTypes::quadbinset(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbinset_grid_disk)); + RegisterSerializedScalarFunction(loader, ScalarFunction("compactCells", {SetTypes::quadbinset()}, SetTypes::quadbinset(), Gen_quadbinset_compact_cells)); + RegisterSerializedScalarFunction(loader, ScalarFunction("uncompactCells", {SetTypes::quadbinset(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbinset_uncompact_cells)); + RegisterSerializedScalarFunction(loader, ScalarFunction("coverCells", {SetTypes::quadbinset(), LogicalType::INTEGER}, SetTypes::quadbinset(), Gen_quadbinset_cover_cells)); +} + +void RegisterGenerated_meos_cbuffer_base_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {CbufferTypes::cbuffer()}, LogicalType::UINTEGER, Gen_cbuffer_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {CbufferTypes::cbuffer(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_cbuffer_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_same)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_same)); +} + +void RegisterGenerated_meos_npoint_base_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_same)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_same)); +} + +void RegisterGenerated_meos_h3_edges(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("h3OriginToDirectedEdges", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3_origin_to_directed_edges)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3AreNeighborCells", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_are_neighbor_cells)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellsToDirectedEdge", {H3indexTypes::th3index(), H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cells_to_directed_edge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidDirectedEdge", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_is_valid_directed_edge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetDirectedEdgeOrigin", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_get_directed_edge_origin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetDirectedEdgeDestination", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_get_directed_edge_destination)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3DirectedEdgeToBoundary", {H3indexTypes::th3index()}, TGeographyTypes::tgeography(), Gen_th3index_directed_edge_to_boundary)); +} + +void RegisterGenerated_meos_temporal_text(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {LogicalType::VARCHAR, TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_text_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("||", {LogicalType::VARCHAR, TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_text_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_textcat_ttext_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_textcat_ttext_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TemporalTypes::ttext(), TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_ttext_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TemporalTypes::ttext(), TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_ttext_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("initcap", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_initcap)); + RegisterSerializedScalarFunction(loader, ScalarFunction("upper", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_upper)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lower", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_lower)); +} + +void RegisterGenerated_meos_geo_box_topo(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_adjacent_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_adjacent_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contained_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contained_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contains_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contains_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_overlaps_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_overlaps_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_same_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_same_stbox_stbox)); +} + +void RegisterGenerated_meos_rgeo_rel_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_trgeometry_trgeometry)); +} + +void RegisterGenerated_meos_rgeo_modif(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_trgeometry_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("merge", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_merge)); +} + +void RegisterGenerated_meos_pose_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::pose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_pose_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::pose()}, LogicalType::VARCHAR, Gen_pose_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::pose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_pose_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::pose()}, LogicalType::VARCHAR, Gen_pose_as_text_d)); +} + +void RegisterGenerated_meos_posechain_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, TemporalTypes::tbool(), Gen_teq_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, TemporalTypes::tbool(), Gen_tne_tposechain_posechain)); } void RegisterGenerated_meos_json_comp_temp(ExtensionLoader &loader) { @@ -4442,21 +4441,22 @@ void RegisterGenerated_meos_json_comp_temp(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TemporalTypes::tbool(), Gen_tne_tjsonb_jsonb)); } -void RegisterGenerated_meos_box_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TboxType::tbox(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tbox_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TboxType::tbox()}, LogicalType::VARCHAR, Gen_tbox_out_d)); +void RegisterGenerated_meos_pointcloud_box_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TpcboxType::tpcbox(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tpcbox_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TpcboxType::tpcbox()}, LogicalType::VARCHAR, Gen_tpcbox_out_d)); } -void RegisterGenerated_meos_pointcloud_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TPcpatchTypes::tpcpatch()}, TGeometryTypes::tgeometry(), Gen_tpcpatch_to_tgeometry)); +void RegisterGenerated_meos_pointcloud_base_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TPcpointTypes::pcpoint()}, LogicalType::UINTEGER, Gen_pcpoint_get_pcid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TPcpatchTypes::pcpatch()}, LogicalType::UINTEGER, Gen_pcpatch_get_pcid)); } -void RegisterGenerated_meos_quadbin_set_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::quadbinset()}, LogicalType::VARCHAR, Gen_quadbinset_out)); +void RegisterGenerated_meos_pose_base_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {PoseTypes::pose(), PoseTypes::pose()}, PoseTypes::pose(), Gen_pose_compose)); } -void RegisterGenerated_meos_s2cell_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {S2cellTypes::ts2cell()}, LogicalType::VARCHAR, Gen_ts2cell_out)); +void RegisterGenerated_meos_json_set_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::jsonbset()}, LogicalType::VARCHAR, Gen_jsonbset_out)); } } // namespace duckdb diff --git a/vcpkg_ports/meos/portfile.cmake b/vcpkg_ports/meos/portfile.cmake index 771edbbd..5910a881 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 "60ed6ea3c8e784519f228efa27c0de405d6d3999") +set(_MEOS_REF "890c902598f02ecf7c9f92d30dcb4c1eea3ba8ea") message(STATUS "MEOS port: building MobilityDB at recorded ${_MEOS_REF}") # FETCH_REF names the branch (always advertised) so the fetch works even when the From 395d24ea83aef771892adc9efbec1925dbdc31e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 2 Oct 2026 10:13:58 +0200 Subject: [PATCH 2/4] Take the trailing borderInc of every grid function MobilityDB declares with it valueTiles, timeTiles and valueTimeTiles over tbox, timeSplit over every temporal type, and valueSplit and valueTimeSplit over tint and tfloat take the trailing optional borderInc of their MobilityDB declarations (`timeSplit(temporal, duration, torigin, borderInc boolean DEFAULT TRUE)`), passed to the `bool border_inc` the MEOS grid functions take: true gives the cell holding the upper border of the value or extent its own piece, false leaves it out. Each full form gains a registration with a trailing BOOLEAN, the shorter forms keep answering as true, and a NULL borderInc answers no tile and no split row, as the other arguments do. The bins table function over the span and span set types reads it from its bind data the same way. Why: the MEOS commit the vcpkg port pins adds `bool border_inc` to the tile, split and bin functions (MobilityDB #2895), so the hand-written calls of src/temporal/temporal.cpp and src/temporal/span_table_functions.cpp no longer compile against it, and the argument has to reach SQL for a query to ask for false. The time split also states its border as MobilityDB does: the last instant of a value on the lower bound of a bin is a piece of that bin rather than the end of the previous fragment. Witness: timeSplit(tfloat '[1@2000-01-01, 5@2000-01-05]', interval '2 days') answers 3 pieces over the bins starting 01-01, 01-03 and 01-05, the last holding 5@2000-01-05 alone, and 2 with borderInc false; valueTiles(tbox 'TBOXFLOAT X([1, 10])', 5.0, 0.0) answers 3 tiles and 2 with false. Measured: the extension builds against the pinned MEOS with no warning in the changed files. The new test/sql/parity/025_temporal_tile_border_inc.test passes its 7 assertions, whose counts follow from the rule before the run. Five assertions of 025_temporal_tile_split.test answer the border instant as its own piece, each read off the bins it falls on, and one more states the false form; the five 025 tile tests pass 83 assertions. Of the full suite, 3034 of 3039 assertions pass; the other 5 are in tests this change does not reach: geoToH3IndexSet, which the regenerated surface of the base no longer registers (h3_prefilter, container_comparison, set_declared_signature), and asMFJSON over tpcpoint and tpcpatch (pointcloud_schema, tpcpatch). --- doc/PARITY-INVENTORY.md | 6 +- src/temporal/span_table_functions.cpp | 97 +++++++++++-------- src/temporal/temporal.cpp | 91 ++++++++++++----- .../parity/025_temporal_tile_border_inc.test | 54 +++++++++++ test/sql/parity/025_temporal_tile_split.test | 30 +++--- 5 files changed, 202 insertions(+), 76 deletions(-) create mode 100644 test/sql/parity/025_temporal_tile_border_inc.test diff --git a/doc/PARITY-INVENTORY.md b/doc/PARITY-INVENTORY.md index 5c2c72cc..3d7160b8 100644 --- a/doc/PARITY-INVENTORY.md +++ b/doc/PARITY-INVENTORY.md @@ -112,10 +112,10 @@ for `tgeometry` / `tgeompoint` / `tgeography` / `tgeogpoint`. | Name | Notes | |---|---| -| `timeSplit(temp, interval, ts)` | all 8 temporal types | -| `valueSplit(tint\|tfloat, size, origin)` | | +| `timeSplit(temp, interval, ts [, borderInc])` | all 8 temporal types; borderInc defaults to true | +| `valueSplit(tint\|tfloat, size, origin [, borderInc])` | borderInc defaults to true | | `quadSplit(stbox)` | 4 quadrants in 2D, 8 octants in 3D | -| `valueTimeSplit(tnumber, vsize, dur, vorigin, torigin)` | emits `LIST` | +| `valueTimeSplit(tnumber, vsize, dur, vorigin, torigin [, borderInc])` | emits `LIST`; borderInc defaults to true | | `spaceSplit(tgeompoint\|tgeometry, …)` | emits `LIST` | | `spaceTimeSplit(tgeompoint\|tgeometry, …)` | emits `LIST` | diff --git a/src/temporal/span_table_functions.cpp b/src/temporal/span_table_functions.cpp index f9e76e03..efd0f82f 100644 --- a/src/temporal/span_table_functions.cpp +++ b/src/temporal/span_table_functions.cpp @@ -38,6 +38,9 @@ struct BinsBindData : public FunctionData { string blob; Value vsize; Value vorigin; + // borderInc, the trailing optional argument of bins(): true gives the bin holding the upper + // border of the extent its own piece + bool border_inc = true; unique_ptr Copy() const override { auto r = make_uniq(); @@ -46,13 +49,15 @@ struct BinsBindData : public FunctionData { r->blob = blob; r->vsize = vsize; r->vorigin = vorigin; + r->border_inc = border_inc; // DuckDB 1.4 disallows implicit derived->base unique_ptr conversion; // explicit base-type construction from the moved-from derived pointer. return unique_ptr_cast(std::move(r)); } bool Equals(const FunctionData &other_p) const override { auto &other = other_p.Cast(); - return kind == other.kind && blob == other.blob && vsize == other.vsize && vorigin == other.vorigin; + return kind == other.kind && blob == other.blob && vsize == other.vsize && vorigin == other.vorigin && + border_inc == other.border_inc; } }; @@ -83,7 +88,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl Span *s = reinterpret_cast(malloc(raw_size)); memcpy(s, raw_blob, raw_size); state->bins = intspan_bins(s, bind_data.vsize.GetValue(), - bind_data.vorigin.GetValue(), &state->count); + bind_data.vorigin.GetValue(), bind_data.border_inc, &state->count); free(s); break; } @@ -91,7 +96,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl Span *s = reinterpret_cast(malloc(raw_size)); memcpy(s, raw_blob, raw_size); state->bins = bigintspan_bins(s, bind_data.vsize.GetValue(), - bind_data.vorigin.GetValue(), &state->count); + bind_data.vorigin.GetValue(), bind_data.border_inc, &state->count); free(s); break; } @@ -99,7 +104,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl Span *s = reinterpret_cast(malloc(raw_size)); memcpy(s, raw_blob, raw_size); state->bins = floatspan_bins(s, bind_data.vsize.GetValue(), - bind_data.vorigin.GetValue(), &state->count); + bind_data.vorigin.GetValue(), bind_data.border_inc, &state->count); free(s); break; } @@ -109,7 +114,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl interval_t duck_duration = bind_data.vsize.GetValue(); MeosInterval duration = IntervaltToInterval(duck_duration); int32_t torigin = ToMeosDate(bind_data.vorigin.GetValue()); - state->bins = datespan_bins(s, &duration, torigin, &state->count); + state->bins = datespan_bins(s, &duration, torigin, bind_data.border_inc, &state->count); free(s); break; } @@ -121,7 +126,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl timestamp_tz_t in_ts; in_ts.value = bind_data.vorigin.GetValueUnsafe().value; timestamp_tz_t meos_ts = DuckDBToMeosTimestamp(in_ts); - state->bins = tstzspan_bins(s, &duration, meos_ts.value, &state->count); + state->bins = tstzspan_bins(s, &duration, meos_ts.value, bind_data.border_inc, &state->count); free(s); break; } @@ -129,7 +134,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl SpanSet *ss = reinterpret_cast(malloc(raw_size)); memcpy(ss, raw_blob, raw_size); state->bins = intspanset_bins(ss, bind_data.vsize.GetValue(), - bind_data.vorigin.GetValue(), &state->count); + bind_data.vorigin.GetValue(), bind_data.border_inc, &state->count); free(ss); break; } @@ -137,7 +142,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl SpanSet *ss = reinterpret_cast(malloc(raw_size)); memcpy(ss, raw_blob, raw_size); state->bins = bigintspanset_bins(ss, bind_data.vsize.GetValue(), - bind_data.vorigin.GetValue(), &state->count); + bind_data.vorigin.GetValue(), bind_data.border_inc, &state->count); free(ss); break; } @@ -145,7 +150,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl SpanSet *ss = reinterpret_cast(malloc(raw_size)); memcpy(ss, raw_blob, raw_size); state->bins = floatspanset_bins(ss, bind_data.vsize.GetValue(), - bind_data.vorigin.GetValue(), &state->count); + bind_data.vorigin.GetValue(), bind_data.border_inc, &state->count); free(ss); break; } @@ -155,7 +160,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl interval_t duck_duration = bind_data.vsize.GetValue(); MeosInterval duration = IntervaltToInterval(duck_duration); int32_t torigin = ToMeosDate(bind_data.vorigin.GetValue()); - state->bins = datespanset_bins(ss, &duration, torigin, &state->count); + state->bins = datespanset_bins(ss, &duration, torigin, bind_data.border_inc, &state->count); free(ss); break; } @@ -167,7 +172,7 @@ static unique_ptr BinsInitGlobal(ClientContext &, Tabl timestamp_tz_t in_ts; in_ts.value = bind_data.vorigin.GetValueUnsafe().value; timestamp_tz_t meos_ts = DuckDBToMeosTimestamp(in_ts); - state->bins = tstzspanset_bins(ss, &duration, meos_ts.value, &state->count); + state->bins = tstzspanset_bins(ss, &duration, meos_ts.value, bind_data.border_inc, &state->count); free(ss); break; } @@ -196,10 +201,10 @@ static void BinsExecute(ClientContext &, TableFunctionInput &data_p, DataChunk & template static unique_ptr BinsBind(ClientContext &, TableFunctionBindInput &input, vector &return_types, vector &names) { - if (input.inputs.size() != 3) { - throw BinderException("bins(...) requires exactly 3 arguments"); + if (input.inputs.size() != 3 && input.inputs.size() != 4) { + throw BinderException("bins(...) requires 3 or 4 arguments"); } - for (idx_t i = 0; i < 3; i++) { + for (idx_t i = 0; i < input.inputs.size(); i++) { if (input.inputs[i].IsNull()) { throw BinderException("bins(...) does not accept NULL arguments"); } @@ -211,6 +216,9 @@ static unique_ptr BinsBind(ClientContext &, TableFunctionBindInput data->blob.assign(blob.GetData(), blob.GetSize()); data->vsize = input.inputs[1]; data->vorigin = input.inputs[2]; + if (input.inputs.size() == 4) { + data->border_inc = input.inputs[3].GetValue(); + } LogicalType span_out; switch (KIND) { @@ -233,40 +241,49 @@ static unique_ptr BinsBind(ClientContext &, TableFunctionBindInput template static TableFunction MakeBinsFunction(const LogicalType &input_type, const LogicalType &vsize_type, - const LogicalType &vorigin_type) { - return TableFunction("bins", - {input_type, vsize_type, vorigin_type}, - BinsExecute, - BinsBind, - BinsInitGlobal); + const LogicalType &vorigin_type, bool with_border_inc) { + vector arguments = {input_type, vsize_type, vorigin_type}; + if (with_border_inc) { + arguments.push_back(LogicalType::BOOLEAN); + } + return TableFunction("bins", arguments, BinsExecute, BinsBind, BinsInitGlobal); +} + +//! Register bins() over one type with and without its trailing borderInc, as MobilityDB declares +//! `bins(intspan, vsize int, vorigin int DEFAULT 0, borderInc boolean DEFAULT TRUE)` +template +static void RegisterBinsOverloads(ExtensionLoader &loader, const LogicalType &input_type, + const LogicalType &vsize_type, const LogicalType &vorigin_type) { + RegisterMeosFunction(loader, MakeBinsFunction(input_type, vsize_type, vorigin_type, false)); + RegisterMeosFunction(loader, MakeBinsFunction(input_type, vsize_type, vorigin_type, true)); } } // namespace void SpanTableFunctions::RegisterBins(ExtensionLoader &loader) { // span variants - RegisterMeosFunction(loader, MakeBinsFunction( - SpanTypes::intspan(), LogicalType::INTEGER, LogicalType::INTEGER)); - RegisterMeosFunction(loader, MakeBinsFunction( - SpanTypes::bigintspan(), LogicalType::BIGINT, LogicalType::BIGINT)); - RegisterMeosFunction(loader, MakeBinsFunction( - SpanTypes::floatspan(), LogicalType::DOUBLE, LogicalType::DOUBLE)); - RegisterMeosFunction(loader, MakeBinsFunction( - SpanTypes::datespan(), LogicalType::INTERVAL, LogicalType::DATE)); - RegisterMeosFunction(loader, MakeBinsFunction( - SpanTypes::tstzspan(), LogicalType::INTERVAL, LogicalType::TIMESTAMP_TZ)); + RegisterBinsOverloads(loader, + SpanTypes::intspan(), LogicalType::INTEGER, LogicalType::INTEGER); + RegisterBinsOverloads(loader, + SpanTypes::bigintspan(), LogicalType::BIGINT, LogicalType::BIGINT); + RegisterBinsOverloads(loader, + SpanTypes::floatspan(), LogicalType::DOUBLE, LogicalType::DOUBLE); + RegisterBinsOverloads(loader, + SpanTypes::datespan(), LogicalType::INTERVAL, LogicalType::DATE); + RegisterBinsOverloads(loader, + SpanTypes::tstzspan(), LogicalType::INTERVAL, LogicalType::TIMESTAMP_TZ); // spanset variants - RegisterMeosFunction(loader, MakeBinsFunction( - SpansetTypes::intspanset(), LogicalType::INTEGER, LogicalType::INTEGER)); - RegisterMeosFunction(loader, MakeBinsFunction( - SpansetTypes::bigintspanset(), LogicalType::BIGINT, LogicalType::BIGINT)); - RegisterMeosFunction(loader, MakeBinsFunction( - SpansetTypes::floatspanset(), LogicalType::DOUBLE, LogicalType::DOUBLE)); - RegisterMeosFunction(loader, MakeBinsFunction( - SpansetTypes::datespanset(), LogicalType::INTERVAL, LogicalType::DATE)); - RegisterMeosFunction(loader, MakeBinsFunction( - SpansetTypes::tstzspanset(), LogicalType::INTERVAL, LogicalType::TIMESTAMP_TZ)); + RegisterBinsOverloads(loader, + SpansetTypes::intspanset(), LogicalType::INTEGER, LogicalType::INTEGER); + RegisterBinsOverloads(loader, + SpansetTypes::bigintspanset(), LogicalType::BIGINT, LogicalType::BIGINT); + RegisterBinsOverloads(loader, + SpansetTypes::floatspanset(), LogicalType::DOUBLE, LogicalType::DOUBLE); + RegisterBinsOverloads(loader, + SpansetTypes::datespanset(), LogicalType::INTERVAL, LogicalType::DATE); + RegisterBinsOverloads(loader, + SpansetTypes::tstzspanset(), LogicalType::INTERVAL, LogicalType::TIMESTAMP_TZ); } } // namespace duckdb diff --git a/src/temporal/temporal.cpp b/src/temporal/temporal.cpp index 42707c09..8d3b991c 100644 --- a/src/temporal/temporal.cpp +++ b/src/temporal/temporal.cpp @@ -1562,12 +1562,15 @@ inline void EmitTboxList(Vector &result, idx_t row_idx, TBox *tiles, int count, total_offset += count; } -// valueTiles(tbox, vsize [, vorigin]) — int branch uses int xsize/xorigin, float uses double +// valueTiles(tbox, vsize [, vorigin [, borderInc]]) — int branch uses int xsize/xorigin, float uses +// double void TboxValueTilesExec(DataChunk &args, ExpressionState &, Vector &result) { auto &tbox_vec = args.data[0]; auto &vsize_vec = args.data[1]; Vector *vorigin_vec = args.ColumnCount() >= 3 ? &args.data[2] : nullptr; + Vector *border_vec = args.ColumnCount() >= 4 ? &args.data[3] : nullptr; idx_t row_count = args.size(); + if (border_vec) border_vec->Flatten(row_count); tbox_vec.Flatten(row_count); vsize_vec.Flatten(row_count); if (vorigin_vec) vorigin_vec->Flatten(row_count); @@ -1582,7 +1585,8 @@ void TboxValueTilesExec(DataChunk &args, ExpressionState &, Vector &result) { auto tbox_data = FlatVector::GetData(tbox_vec); for (idx_t i = 0; i < row_count; ++i) { if (FlatVector::IsNull(tbox_vec, i) || FlatVector::IsNull(vsize_vec, i) || - (vorigin_vec && FlatVector::IsNull(*vorigin_vec, i))) { + (vorigin_vec && FlatVector::IsNull(*vorigin_vec, i)) || + (border_vec && FlatVector::IsNull(*border_vec, i))) { result_validity.SetInvalid(i); continue; } @@ -1595,11 +1599,11 @@ void TboxValueTilesExec(DataChunk &args, ExpressionState &, Vector &result) { if (box->span.spantype == T_INTSPAN) { int32_t vsize = FlatVector::GetData(vsize_vec)[i]; int32_t vorigin = vorigin_vec ? FlatVector::GetData(*vorigin_vec)[i] : 0; - tiles = tintbox_value_tiles(box, vsize, vorigin, &count); + tiles = tintbox_value_tiles(box, vsize, vorigin, border_vec ? FlatVector::GetData(*border_vec)[i] : true, &count); } else if (box->span.spantype == T_FLOATSPAN) { double vsize = FlatVector::GetData(vsize_vec)[i]; double vorigin = vorigin_vec ? FlatVector::GetData(*vorigin_vec)[i] : 0.0; - tiles = tfloatbox_value_tiles(box, vsize, vorigin, &count); + tiles = tfloatbox_value_tiles(box, vsize, vorigin, border_vec ? FlatVector::GetData(*border_vec)[i] : true, &count); } else { free(box); throw InvalidInputException("valueTiles: tbox has no value dimension"); @@ -1610,12 +1614,14 @@ void TboxValueTilesExec(DataChunk &args, ExpressionState &, Vector &result) { } } -// timeTiles(tbox, duration [, torigin]) +// timeTiles(tbox, duration [, torigin [, borderInc]]) void TboxTimeTilesExec(DataChunk &args, ExpressionState &, Vector &result) { auto &tbox_vec = args.data[0]; auto &dur_vec = args.data[1]; Vector *torigin_vec = args.ColumnCount() >= 3 ? &args.data[2] : nullptr; + Vector *border_vec = args.ColumnCount() >= 4 ? &args.data[3] : nullptr; idx_t row_count = args.size(); + if (border_vec) border_vec->Flatten(row_count); tbox_vec.Flatten(row_count); dur_vec.Flatten(row_count); if (torigin_vec) torigin_vec->Flatten(row_count); @@ -1631,7 +1637,8 @@ void TboxTimeTilesExec(DataChunk &args, ExpressionState &, Vector &result) { auto dur_data = FlatVector::GetData(dur_vec); for (idx_t i = 0; i < row_count; ++i) { if (FlatVector::IsNull(tbox_vec, i) || FlatVector::IsNull(dur_vec, i) || - (torigin_vec && FlatVector::IsNull(*torigin_vec, i))) { + (torigin_vec && FlatVector::IsNull(*torigin_vec, i)) || + (border_vec && FlatVector::IsNull(*border_vec, i))) { result_validity.SetInvalid(i); continue; } @@ -1650,9 +1657,9 @@ void TboxTimeTilesExec(DataChunk &args, ExpressionState &, Vector &result) { int count = 0; TBox *tiles = nullptr; if (box->span.spantype == T_INTSPAN) { - tiles = tintbox_time_tiles(box, &iv, (TimestampTz) torigin_meos.value, &count); + tiles = tintbox_time_tiles(box, &iv, (TimestampTz) torigin_meos.value, border_vec ? FlatVector::GetData(*border_vec)[i] : true, &count); } else if (box->span.spantype == T_FLOATSPAN) { - tiles = tfloatbox_time_tiles(box, &iv, (TimestampTz) torigin_meos.value, &count); + tiles = tfloatbox_time_tiles(box, &iv, (TimestampTz) torigin_meos.value, border_vec ? FlatVector::GetData(*border_vec)[i] : true, &count); } else { free(box); throw InvalidInputException("timeTiles: tbox has no value dimension to dispatch on"); @@ -1663,14 +1670,16 @@ void TboxTimeTilesExec(DataChunk &args, ExpressionState &, Vector &result) { } } -// valueTimeTiles(tbox, vsize, duration [, vorigin, torigin]) +// valueTimeTiles(tbox, vsize, duration [, vorigin, torigin [, borderInc]]) void TboxValueTimeTilesExec(DataChunk &args, ExpressionState &, Vector &result) { auto &tbox_vec = args.data[0]; auto &vsize_vec = args.data[1]; auto &dur_vec = args.data[2]; Vector *vorigin_vec = args.ColumnCount() >= 4 ? &args.data[3] : nullptr; Vector *torigin_vec = args.ColumnCount() >= 5 ? &args.data[4] : nullptr; + Vector *border_vec = args.ColumnCount() >= 6 ? &args.data[5] : nullptr; idx_t row_count = args.size(); + if (border_vec) border_vec->Flatten(row_count); tbox_vec.Flatten(row_count); vsize_vec.Flatten(row_count); dur_vec.Flatten(row_count); @@ -1690,7 +1699,8 @@ void TboxValueTimeTilesExec(DataChunk &args, ExpressionState &, Vector &result) if (FlatVector::IsNull(tbox_vec, i) || FlatVector::IsNull(vsize_vec, i) || FlatVector::IsNull(dur_vec, i) || (vorigin_vec && FlatVector::IsNull(*vorigin_vec, i)) || - (torigin_vec && FlatVector::IsNull(*torigin_vec, i))) { + (torigin_vec && FlatVector::IsNull(*torigin_vec, i)) || + (border_vec && FlatVector::IsNull(*border_vec, i))) { result_validity.SetInvalid(i); continue; } @@ -1712,12 +1722,12 @@ void TboxValueTimeTilesExec(DataChunk &args, ExpressionState &, Vector &result) int32_t vsize = FlatVector::GetData(vsize_vec)[i]; int32_t vorigin = vorigin_vec ? FlatVector::GetData(*vorigin_vec)[i] : 0; tiles = tintbox_value_time_tiles(box, vsize, &iv, vorigin, - (TimestampTz) torigin_meos.value, &count); + (TimestampTz) torigin_meos.value, border_vec ? FlatVector::GetData(*border_vec)[i] : true, &count); } else if (box->span.spantype == T_FLOATSPAN) { double vsize = FlatVector::GetData(vsize_vec)[i]; double vorigin = vorigin_vec ? FlatVector::GetData(*vorigin_vec)[i] : 0.0; tiles = tfloatbox_value_time_tiles(box, vsize, &iv, vorigin, - (TimestampTz) torigin_meos.value, &count); + (TimestampTz) torigin_meos.value, border_vec ? FlatVector::GetData(*border_vec)[i] : true, &count); } else { free(box); throw InvalidInputException("valueTimeTiles: tbox has no value dimension"); @@ -1763,6 +1773,12 @@ void TemporalTypes::RegisterTileGetters(ExtensionLoader &loader) { RegisterMeosFunction(loader, ScalarFunction( "valueTiles", {TboxType::tbox(), LogicalType::DOUBLE, LogicalType::DOUBLE}, list_tbox, TboxValueTilesExec)); + RegisterMeosFunction(loader, ScalarFunction( + "valueTiles", {TboxType::tbox(), LogicalType::INTEGER, LogicalType::INTEGER, LogicalType::BOOLEAN}, + list_tbox, TboxValueTilesExec)); + RegisterMeosFunction(loader, ScalarFunction( + "valueTiles", {TboxType::tbox(), LogicalType::DOUBLE, LogicalType::DOUBLE, LogicalType::BOOLEAN}, + list_tbox, TboxValueTilesExec)); // timeTiles(tbox, duration [, torigin]) RegisterMeosFunction(loader, ScalarFunction( @@ -1771,6 +1787,10 @@ void TemporalTypes::RegisterTileGetters(ExtensionLoader &loader) { RegisterMeosFunction(loader, ScalarFunction( "timeTiles", {TboxType::tbox(), LogicalType::INTERVAL, LogicalType::TIMESTAMP_TZ}, list_tbox, TboxTimeTilesExec)); + RegisterMeosFunction(loader, ScalarFunction( + "timeTiles", + {TboxType::tbox(), LogicalType::INTERVAL, LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, + list_tbox, TboxTimeTilesExec)); // valueTimeTiles(tbox, vsize, duration [, vorigin, torigin]) RegisterMeosFunction(loader, ScalarFunction( @@ -1789,6 +1809,16 @@ void TemporalTypes::RegisterTileGetters(ExtensionLoader &loader) { {TboxType::tbox(), LogicalType::DOUBLE, LogicalType::INTERVAL, LogicalType::DOUBLE, LogicalType::TIMESTAMP_TZ}, list_tbox, TboxValueTimeTilesExec)); + RegisterMeosFunction(loader, ScalarFunction( + "valueTimeTiles", + {TboxType::tbox(), LogicalType::INTEGER, LogicalType::INTERVAL, + LogicalType::INTEGER, LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, + list_tbox, TboxValueTimeTilesExec)); + RegisterMeosFunction(loader, ScalarFunction( + "valueTimeTiles", + {TboxType::tbox(), LogicalType::DOUBLE, LogicalType::INTERVAL, + LogicalType::DOUBLE, LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, + list_tbox, TboxValueTimeTilesExec)); } // ============================================================ @@ -1869,11 +1899,11 @@ unique_ptr TemporalSplitLocalInit(ExecutionContext &, T } /* Split one input row into the local state. Input column layout: - * timeSplit: [0]=temporal, [1]=duration, [2]=origin (optional) - * valueSplit: [0]=tnumber, [1]=size, [2]=origin (optional) + * timeSplit: [0]=temporal, [1]=duration, [2]=origin (optional), [3]=borderInc (optional) + * valueSplit: [0]=tnumber, [1]=size, [2]=origin (optional), [3]=borderInc (optional) * valueTimeSplit: [0]=tnumber, [1]=vsize, [2]=duration, - * [3]=vorigin and [4]=torigin (optional, together) - * A NULL temporal, size or duration splits into no row. */ + * [3]=vorigin and [4]=torigin (optional, together), [5]=borderInc (optional) + * A NULL temporal, size, duration or borderInc splits into no row; an absent borderInc is true. */ void LoadTemporalSplitRow(TemporalSplitLocalState &state, const TemporalSplitBindData &bd, DataChunk &input, idx_t row) { state.Reset(); @@ -1891,6 +1921,14 @@ void LoadTemporalSplitRow(TemporalSplitLocalState &state, const TemporalSplitBin const idx_t torigin_col = bd.with_value ? 4 : 2; const bool has_vorigin = bd.with_value && input.ColumnCount() > vorigin_col && !FlatVector::IsNull(input.data[vorigin_col], row); + const idx_t border_col = (bd.with_value && bd.with_time) ? 5 : 3; + bool border_inc = true; + if (input.ColumnCount() > border_col) { + if (FlatVector::IsNull(input.data[border_col], row)) { + return; + } + border_inc = FlatVector::GetData(input.data[border_col])[row]; + } MeosInterval mi {}; TimestampTz torigin = DEFAULT_TIME_ORIGIN_MEOS; if (bd.with_time) { @@ -1911,19 +1949,19 @@ void LoadTemporalSplitRow(TemporalSplitLocalState &state, const TemporalSplitBin int *ibins = nullptr; double *dbins = nullptr; if (!bd.with_value) { - parts = temporal_time_split(temp, &mi, torigin, &tbins, &count); + parts = temporal_time_split(temp, &mi, torigin, border_inc, &tbins, &count); } else if (bd.is_int) { int vsize = FlatVector::GetData(input.data[1])[row]; int vorigin = has_vorigin ? FlatVector::GetData(input.data[vorigin_col])[row] : 0; parts = bd.with_time - ? tint_value_time_split(temp, vsize, &mi, vorigin, torigin, &ibins, &tbins, &count) - : tint_value_split(temp, vsize, vorigin, &ibins, &count); + ? tint_value_time_split(temp, vsize, &mi, vorigin, torigin, border_inc, &ibins, &tbins, &count) + : tint_value_split(temp, vsize, vorigin, border_inc, &ibins, &count); } else { double vsize = FlatVector::GetData(input.data[1])[row]; double vorigin = has_vorigin ? FlatVector::GetData(input.data[vorigin_col])[row] : 0.0; parts = bd.with_time - ? tfloat_value_time_split(temp, vsize, &mi, vorigin, torigin, &dbins, &tbins, &count) - : tfloat_value_split(temp, vsize, vorigin, &dbins, &count); + ? tfloat_value_time_split(temp, vsize, &mi, vorigin, torigin, border_inc, &dbins, &tbins, &count) + : tfloat_value_split(temp, vsize, vorigin, border_inc, &dbins, &count); } free(temp); @@ -2016,16 +2054,19 @@ void TemporalTypes::RegisterTemporalTileSplit(ExtensionLoader &loader) { const auto D = LogicalType::DOUBLE; const auto IV = LogicalType::INTERVAL; const auto TS = LogicalType::TIMESTAMP_TZ; + const auto B = LogicalType::BOOLEAN; - // timeSplit(temporal, interval [, timestamptz]) + // timeSplit(temporal, interval [, timestamptz [, borderInc]]) for (const auto &ttype : AllTypes()) { RegisterTemporalSplit(loader, "timeSplit", {ttype, IV}, ttype, false, false, true); RegisterTemporalSplit(loader, "timeSplit", {ttype, IV, TS}, ttype, false, false, true); + RegisterTemporalSplit(loader, "timeSplit", {ttype, IV, TS, B}, ttype, false, false, true); } // also for tgeompoint for (const auto &ttype : {TgeompointType::tgeompoint()}) { RegisterTemporalSplit(loader, "timeSplit", {ttype, IV}, ttype, false, false, true); RegisterTemporalSplit(loader, "timeSplit", {ttype, IV, TS}, ttype, false, false, true); + RegisterTemporalSplit(loader, "timeSplit", {ttype, IV, TS, B}, ttype, false, false, true); } // valueSplit is registered separately via RegisterTnumberValueSplit @@ -2036,6 +2077,9 @@ void TemporalTypes::RegisterTemporalTileSplit(ExtensionLoader &loader) { // valueTimeSplit(tfloat, double, interval [, double, timestamptz]) RegisterTemporalSplit(loader, "valueTimeSplit", {tfloat(), D, IV}, tfloat(), true, false, true); RegisterTemporalSplit(loader, "valueTimeSplit", {tfloat(), D, IV, D, TS}, tfloat(), true, false, true); + // each full form also takes borderInc + RegisterTemporalSplit(loader, "valueTimeSplit", {tint(), I, IV, I, TS, B}, tint(), true, true, true); + RegisterTemporalSplit(loader, "valueTimeSplit", {tfloat(), D, IV, D, TS, B}, tfloat(), true, false, true); } /* *************************************************** @@ -2054,6 +2098,9 @@ void TemporalTypes::RegisterTnumberValueSplit(ExtensionLoader &loader) { RegisterTemporalSplit(loader, "valueSplit", {tint(), I, I}, tint(), true, true, false); RegisterTemporalSplit(loader, "valueSplit", {tfloat(), D}, tfloat(), true, false, false); RegisterTemporalSplit(loader, "valueSplit", {tfloat(), D, D}, tfloat(), true, false, false); + const auto B = LogicalType::BOOLEAN; + RegisterTemporalSplit(loader, "valueSplit", {tint(), I, I, B}, tint(), true, true, false); + RegisterTemporalSplit(loader, "valueSplit", {tfloat(), D, D, B}, tfloat(), true, false, false); } } // namespace duckdb diff --git a/test/sql/parity/025_temporal_tile_border_inc.test b/test/sql/parity/025_temporal_tile_border_inc.test new file mode 100644 index 00000000..93584acd --- /dev/null +++ b/test/sql/parity/025_temporal_tile_border_inc.test @@ -0,0 +1,54 @@ +# name: test/sql/parity/025_temporal_tile_border_inc.test +# description: the grid functions give the cell holding the upper border its own piece unless borderInc is false +# group: [sql] +# +# Every grid function over a value or an extent with an upper border takes the trailing optional +# borderInc of MobilityDB, default true. Each case below puts the upper border of its extent on the +# lower bound of a cell: borderInc true answers that cell as a piece holding the border alone, +# false leaves it out, and the omitted argument answers as true. + +require mobilityduck + +# ============================================================================= +# valueTiles(tbox, size, origin [, borderInc]) and timeTiles(tbox, duration, origin [, borderInc]) +# ============================================================================= + +query I +SELECT len(valueTiles(tbox 'TBOXFLOAT X([1, 10])', 5.0, 0.0)); +---- +3 + +query I +SELECT len(valueTiles(tbox 'TBOXFLOAT X([1, 10])', 5.0, 0.0, false)); +---- +2 + +query I +SELECT len(timeTiles(tbox 'TBOXFLOAT XT([1, 2],[2000-01-01, 2000-01-03])', interval '1 day', timestamptz '2000-01-01', false)); +---- +2 + +# ============================================================================= +# timeSplit(temporal, duration, origin [, borderInc]) and valueSplit(tnumber, size, origin [, borderInc]) +# ============================================================================= + +query I +SELECT count(*) FROM timeSplit(tfloat '[1@2000-01-01, 3@2000-01-03]', interval '1 day', timestamptz '2000-01-01'); +---- +3 + +query I +SELECT count(*) FROM timeSplit(tfloat '[1@2000-01-01, 3@2000-01-03]', interval '1 day', timestamptz '2000-01-01', false); +---- +2 + +query I +SELECT count(*) FROM valueSplit(tfloat '[1@2000-01-01, 10@2000-01-03]', 5.0, 0.0, false); +---- +2 + +# A NULL borderInc answers no tile, as the other arguments do +query I +SELECT valueTiles(tbox 'TBOXFLOAT X([1, 10])', 5.0, 0.0, NULL) IS NULL; +---- +true diff --git a/test/sql/parity/025_temporal_tile_split.test b/test/sql/parity/025_temporal_tile_split.test index 8441c119..8a61184a 100644 --- a/test/sql/parity/025_temporal_tile_split.test +++ b/test/sql/parity/025_temporal_tile_split.test @@ -42,33 +42,40 @@ SELECT array_agg(number ORDER BY number) FROM ---- [1, 5] -# timeSplit on tfloat with 2-day duration -> 2 buckets +# timeSplit on tfloat with 2-day duration -> 3 buckets: with the default origin 2000-01-03 the bins +# are [01-01, 01-03), [01-03, 01-05) and [01-05, 01-07), and the last instant, on the lower bound of +# the third, is a piece of its own under the default borderInc true query I SELECT count(*) FROM timeSplit(tfloat '[1@2000-01-01 00:00:00+00, 5@2000-01-05 00:00:00+00]', INTERVAL '2 days'); ---- +3 + +query I +SELECT count(*) FROM timeSplit(tfloat '[1@2000-01-01 00:00:00+00, 5@2000-01-05 00:00:00+00]', INTERVAL '2 days', TIMESTAMPTZ '2000-01-03 00:00:00+00', false); +---- 2 -# timeSplit on tbool +# timeSplit on tbool: the same bins, the last instant a piece of its own query I SELECT count(*) FROM timeSplit(tbool '[t@2000-01-01 00:00:00+00, f@2000-01-05 00:00:00+00]', INTERVAL '2 days'); ---- -2 +3 # timeSplit on ttext query I SELECT count(*) FROM timeSplit(ttext '["a"@2000-01-01 00:00:00+00, "b"@2000-01-05 00:00:00+00]', INTERVAL '2 days'); ---- -2 +3 # timeSplit with explicit torigin query I SELECT count(*) FROM timeSplit(tint '[1@2000-01-01 00:00:00+00, 5@2000-01-05 00:00:00+00]', INTERVAL '2 days', TIMESTAMPTZ '2000-01-01 00:00:00+00'); ---- -2 +3 # timeSplit defaults to MEOS's time origin, a Monday: the week holding # 2001-01-03 to 2001-01-07 is one bin, starting Monday 2001-01-01 @@ -142,11 +149,12 @@ SELECT count(*) FROM ti, valueTimeSplit(ti.temp, 2, INTERVAL '2 days', 1, TIMEST query I SELECT count(*) FROM tf, valueTimeSplit(tf.temp, 2.0, INTERVAL '2 days'); ---- -5 +7 # timeSplit takes its temporal value from a column for every type it is -# registered for: each row splits as its literal does (2 + 1 time bins, 3 + 2 -# with an origin), and a NULL row splits into none +# registered for: each row splits as its literal does (3 + 2 time bins, the last +# instant of each a piece of its own, and 3 + 2 with an origin), and a NULL row +# splits into none statement ok CREATE TABLE tt AS SELECT * FROM (VALUES @@ -161,7 +169,7 @@ CREATE TABLE tp AS SELECT * FROM (VALUES query I SELECT count(*) FROM ti, timeSplit(ti.temp, INTERVAL '2 days'); ---- -3 +5 query I SELECT count(*) FROM ti, timeSplit(ti.temp, INTERVAL '2 days', TIMESTAMPTZ '2000-01-02 00:00:00+00'); @@ -171,12 +179,12 @@ SELECT count(*) FROM ti, timeSplit(ti.temp, INTERVAL '2 days', TIMESTAMPTZ '2000 query I SELECT count(*) FROM tt, timeSplit(tt.temp, INTERVAL '2 days'); ---- -3 +5 query I SELECT count(*) FROM tp, timeSplit(tp.temp, INTERVAL '2 days'); ---- -3 +5 query II SELECT typeof(time), typeof(tint) FROM ti, timeSplit(ti.temp, INTERVAL '2 days') LIMIT 1; From df97dcc264521449d043b66a7d6bdae17285a9d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 2 Oct 2026 10:42:39 +0200 Subject: [PATCH 3/4] Generate the H3 geometry functions whose resolution MEOS declares as int32 The H3 prefilter shape of tools/codegen_duck_udfs.py takes a geometry function's resolution as a 32-bit integer however MEOS spells it, `int` or the `int32` of the SQL-exposed integer convention, as the integer return check of the same file reads it. geoToH3IndexSet(geometry, integer) and latLngToCell(geometry, integer) are registered again. Why: the pinned MEOS declares geo_to_h3index_set(const GSERIALIZED *gs, int32 resolution) and geo_to_h3index_cell likewise, and the shape matched the second parameter only as `int`, so the regenerated surface dropped both registrations while the catalog still states each public with its SQL name and its (geometry, integer) signature. Witness: SELECT eEqual(geoToH3IndexSet(ST_Point(1, 1), 5), th3index('SRID=4326;[Point(1 1)@2000-01-01]'::tgeompoint, 5)) failed with "Scalar Function with name geotoh3indexset does not exist" and answers again. Measured: regenerating from the catalog of the pinned commit adds exactly the two registrations and their bodies (Gen_geo_to_h3index_set, Gen_geo_to_h3index_cell) to the surface and changes no other; h3_prefilter, container_comparison and set_declared_signature pass. --- src/generated/generated_temporal_udfs_0.cpp | 887 ++++++++-------- src/generated/generated_temporal_udfs_1.cpp | 564 ++++++----- src/generated/generated_temporal_udfs_2.cpp | 516 +++++----- src/generated/generated_temporal_udfs_3.cpp | 542 +++++----- src/generated/generated_temporal_udfs_4.cpp | 1012 +++++++++---------- src/generated/generated_temporal_udfs_5.cpp | 735 +++++++------- src/generated/generated_temporal_udfs_6.cpp | 815 ++++++++------- src/generated/generated_temporal_udfs_7.cpp | 729 ++++++------- tools/codegen_duck_udfs.py | 5 +- 9 files changed, 2916 insertions(+), 2889 deletions(-) diff --git a/src/generated/generated_temporal_udfs_0.cpp b/src/generated/generated_temporal_udfs_0.cpp index 738b4c2b..7228e414 100644 --- a/src/generated/generated_temporal_udfs_0.cpp +++ b/src/generated/generated_temporal_udfs_0.cpp @@ -1401,258 +1401,268 @@ static void PathExec_trgeometry_dyntimewarp_path(ClientContext &, TableFunctionI } -// ===== @ingroup meos_temporal_bool ===== -static void Gen_tand_bool_tbool(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](bool a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tand_bool_tbool(a1, t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tand_tbool_bool(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tand_tbool_bool(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tand_tbool_tbool(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_comp_temp ===== +static void Gen_teq_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tand_tbool_tbool(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tnot_tbool(DataChunk &args, ExpressionState &, 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); - Temporal *r = tnot_tbool(t); - free(t); + [&](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 = teq_geo_tgeo(gs, t); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tor_bool_tbool(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](bool a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tor_bool_tbool(a1, t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = teq_tgeo_geo(t, gs); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tor_tbool_bool(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tor_tbool_bool(t, a2); - free(t); + 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 = tne_geo_tgeo(gs, t); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tor_tbool_tbool(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tor_tbool_tbool(t1, t2); - free(t1); free(t2); + [&](string_t in_t, string_t in_g, 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 = tne_tgeo_geo(t, gs); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_geo_box_comp ===== -static void Gen_stbox_hash(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_box_bbox_pos ===== +static void Gen_after_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - STBox *s = BlobToStbox(in); - uint32_t r = stbox_hash(s); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = after_tbox_tbox(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_stbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_before_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - STBox *s = BlobToStbox(in); - uint64_t r = stbox_hash_extended(s, a2); - free(s); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = before_tbox_tbox(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_stbox_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_left_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_eq(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = left_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overafter_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_ge(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overafter_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overbefore_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_gt(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overbefore_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_le(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overleft_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_lt(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overright_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_stbox_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_right_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = stbox_ne(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = right_tbox_tbox(s1, s2); free(s1); free(s2); return r; }); } -// ===== @ingroup meos_h3_hierarchy ===== -static void Gen_h3_cell_to_children(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_cell_to_children(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_th3index_cell_to_parent_next(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_cell_to_parent_next(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_th3index_cell_to_center_child(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = th3index_cell_to_center_child(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_th3index_cell_to_center_child_next(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_cell_to_center_child_next(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_th3index_cell_to_child_pos(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = th3index_cell_to_child_pos(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); +// ===== @ingroup meos_rgeo_bbox_split ===== +static void Gen_trgeometry_stboxes(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + STBox * arr = trgeometry_stboxes(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_th3index_child_pos_to_cell(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in1, string_t in2, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_child_pos_to_cell(t1, t2, a2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); +static void Gen_trgeometry_split_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + STBox * arr = trgeometry_split_n_stboxes(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -static void Gen_h3_uncompact_cells(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = h3_uncompact_cells(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); - }); +static void Gen_trgeometry_split_each_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &n_vec = args.data[1]; + n_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + int32_t n_arg = FlatVector::GetData(n_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + STBox * arr = trgeometry_split_each_n_stboxes(in, n_arg, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } @@ -1726,344 +1736,345 @@ static void Gen_tne_tquadbin_tquadbin(DataChunk &args, ExpressionState &, Vector } -// ===== @ingroup meos_pointcloud_box_topo ===== -static void Gen_contains_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_geopose_accessor ===== +static void Gen_tpose_apply_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = contains_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_contained_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = contained_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + 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 = tpose_apply_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_overlaps_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_yaw(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overlaps_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tpose_yaw(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_same_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_pitch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = same_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tpose_pitch(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_adjacent_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_roll(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = adjacent_tpcbox_tpcbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tpose_roll(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_json_accessor ===== -static void Gen_tjsonb_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_speed(DataChunk &args, ExpressionState &, 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); - Jsonb * r = tjsonb_end_value(t); + Temporal *r = tpose_speed(t); free(t); - return JsonbToBlobN(result, r, mask, idx); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_angular_speed(DataChunk &args, ExpressionState &, 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); - Jsonb * r = tjsonb_start_value(t); + Temporal *r = tpose_angular_speed(t); free(t); - return JsonbToBlobN(result, r, mask, idx); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_value_at_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_pose_base_geopose ===== +static void Gen_tpose_as_geopose_stream(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2) { Temporal *t = BlobToTemporal(in); - Jsonb *o = NULL; - bool ok = tjsonb_value_at_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true, &o); + char * r = tpose_as_geopose_stream(t, a2); free(t); - if (! ok) { mask.SetInvalid(idx); return string_t(); } - return JsonbToBlob(result, o); + return TakeCString(result, r); }); } -static void Gen_tjsonb_value_n(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_as_geopose_stream_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto rc = args.size(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { Temporal *t = BlobToTemporal(in); - Jsonb *o = NULL; - bool ok = tjsonb_value_n(t, a2, &o); + char * r = tpose_as_geopose_stream(t, -1); free(t); - if (! ok) { mask.SetInvalid(idx); return string_t(); } - return JsonbToBlob(result, o); + return TakeCString(result, r); }); } - -// ===== @ingroup meos_pointcloud_box_accessor ===== -static void Gen_tpcbox_hasx(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_yaw(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - bool r = tpcbox_hasx(v); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Pose *v = BlobToPose(in); + double r = pose_yaw(v); free(v); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; }); } -static void Gen_tpcbox_hasz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_pitch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - bool r = tpcbox_hasz(v); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Pose *v = BlobToPose(in); + double r = pose_pitch(v); free(v); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; }); } -static void Gen_tpcbox_hast(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_roll(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - bool r = tpcbox_hast(v); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Pose *v = BlobToPose(in); + double r = pose_roll(v); free(v); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; }); } -static void Gen_tpcbox_srid(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_posechain_base_inout ===== +static void Gen_posechain_as_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - int32_t r = tpcbox_srid(v); - free(v); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + PoseChain *s = BlobToPosechain(a); + char *r = posechain_as_text(s, a2); + free(s); + return TakeCString(result, r); }); } -static void Gen_tpcbox_pcid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - TPCBox *v = BlobToTpcbox(in); - uint32_t r = tpcbox_pcid(v); - free(v); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + PoseChain *s = BlobToPosechain(a); + char *r = posechain_as_text(s, 15); + free(s); + return TakeCString(result, r); }); } - -// ===== @ingroup meos_temporal_spatial_rel_ever ===== -static void Gen_atouches_tpoint_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = atouches_tpoint_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + PoseChain *s = BlobToPosechain(a); + char *r = posechain_as_ewkt(s, a2); + free(s); + return TakeCString(result, r); }); } -static void Gen_etouches_tpoint_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { - 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; - } - int r = etouches_tpoint_geo(t, gs); - free(t); free(gs); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + PoseChain *s = BlobToPosechain(a); + char *r = posechain_as_ewkt(s, 15); + free(s); + return TakeCString(result, r); }); } -// ===== @ingroup meos_rgeo_conversion ===== -static void Gen_trgeometry_to_tpose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_transf ===== +static void Gen_tposechain_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_to_tpose(t); + Temporal *r = tposechain_rotate_x(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tposechain_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_to_tgeompoint(t); + Temporal *r = tposechain_rotate_y(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tposechain_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_to_tgeometry(t); + Temporal *r = tposechain_rotate_z(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_conversion ===== -static void Gen_tpose_make(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_base_inout ===== +static void Gen_s2cell_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tpose_make(t1, t2); - free(t1); free(t2); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = s2cell_from_hexwkb(a0.GetString().c_str()); + return static_cast(r); + }); +} + +static void Gen_s2cell_in(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = s2cell_in(a0.GetString().c_str()); + return static_cast(r); + }); +} + +static void Gen_s2cell_out(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + char * r = s2cell_out(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return TakeCString(result, r); + }); +} + + +// ===== @ingroup meos_json_conversion ===== +static void Gen_tjsonb_to_ttext(DataChunk &args, ExpressionState &, 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); + Temporal *r = tjsonb_to_ttext(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_to_tpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttext_to_tjsonb(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpose_to_tpoint(t); + Temporal *r = ttext_to_tjsonb(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_geo_box_inout ===== -static void Gen_stbox_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_inout ===== +static void Gen_tpcbox_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - STBox *s = BlobToStbox(a); - char *r = stbox_out(s, a2); + TPCBox *s = BlobToTpcbox(a); + char *r = tpcbox_out(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_stbox_out_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_out_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - STBox *s = BlobToStbox(a); - char *r = stbox_out(s, 15); + TPCBox *s = BlobToTpcbox(a); + char *r = tpcbox_out(s, 15); free(s); return TakeCString(result, r); }); } -// ===== @ingroup meos_h3_comp ===== -static void Gen_ever_eq_h3indexset_th3index(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_base_accessor ===== +static void Gen_pcpoint_get_pcid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_s, string_t in_t, ValidityMask &mask, idx_t idx) { - Set *s = BlobToSet(in_s); - Temporal *t = BlobToTemporal(in_t); - int r = ever_eq_h3indexset_th3index(s, t); - free(s); free(t); - if (r < 0) { mask.SetInvalid(idx); return false; } - return r != 0; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Pcpoint *v = BlobToPcpoint(in); + uint32_t r = pcpoint_get_pcid(v); + free(v); + return r; }); } - -// ===== @ingroup meos_h3_set_conversion ===== -static void Gen_h3index_to_set(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pcpatch_get_pcid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3index_to_set(static_cast(a0)); - return SetToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Pcpatch *v = BlobToPcpatch(in); + uint32_t r = pcpatch_get_pcid(v); + free(v); + return r; }); } -// ===== @ingroup meos_posechain_base_srid ===== -static void Gen_posechain_srid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_base_transf ===== +static void Gen_pose_compose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - PoseChain *v = BlobToPosechain(in); - int32_t r = posechain_srid(v); - free(v); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + Pose *r = pose_compose(s1, s2); + free(s1); free(s2); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return PoseToBlob(result, r); }); } -// ===== @ingroup meos_json_inout ===== -static void Gen_tjsonb_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_json_set_inout ===== +static void Gen_jsonbset_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = tjsonb_out(t); - free(t); + Set *s = BlobToSet(in); + char * r = jsonbset_out(s); + free(s); return TakeCString(result, r); }); } @@ -3192,48 +3203,44 @@ void RegisterGenerated_meos_rgeo_analytics_similarity(ExtensionLoader &loader) { loader.RegisterFunction(TableFunction("dynTimeWarpPath", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, PathExec_trgeometry_dyntimewarp_path, PathBindFn_trgeometry_dyntimewarp_path, PathInit_trgeometry_dyntimewarp_path)); } -void RegisterGenerated_meos_temporal_bool(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_bool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_bool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tand_tbool_bool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tand_tbool_bool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_tbool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_tbool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNot", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tnot_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tnot_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_bool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_bool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tor_tbool_bool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tor_tbool_bool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_tbool_tbool)); - RegisterSerializedScalarFunction(loader, ScalarFunction("|", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_tbool_tbool)); -} - -void RegisterGenerated_meos_geo_box_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {StboxType::stbox()}, LogicalType::UINTEGER, Gen_stbox_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {StboxType::stbox(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_stbox_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ne)); -} - -void RegisterGenerated_meos_h3_hierarchy(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToChildren", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_cell_to_children)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cell_to_parent_next)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToCenterChild", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_th3index_cell_to_center_child)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToCenterChild", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cell_to_center_child_next)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToChildPos", {H3indexTypes::th3index(), LogicalType::INTEGER}, TemporalTypes::tbigint(), Gen_th3index_cell_to_child_pos)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3ChildPosToCell", {H3indexTypes::th3index(), H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_th3index_child_pos_to_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("uncompactCells", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_uncompact_cells)); +void RegisterGenerated_meos_geo_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); +} + +void RegisterGenerated_meos_box_bbox_pos(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxAfter", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_after_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxBefore", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_before_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxLeft", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverafter", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overafter_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverbefore", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overbefore_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverleft", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverright", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxRight", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_tbox_tbox)); +} + +void RegisterGenerated_meos_rgeo_bbox_split(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TrgeometryTypes::trgeometry()}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_split_n_stboxes)); + RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_split_each_n_stboxes)); } void RegisterGenerated_meos_quadbin_comp_temp(ExtensionLoader &loader) { @@ -3245,71 +3252,65 @@ void RegisterGenerated_meos_quadbin_comp_temp(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {QuadbinTypes::tquadbin(), QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_tne_tquadbin_tquadbin)); } -void RegisterGenerated_meos_pointcloud_box_topo(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_contains_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_contains_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_contained_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_contained_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overlaps_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overlaps_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_same_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_same_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_adjacent_tpcbox_tpcbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_adjacent_tpcbox_tpcbox)); -} - -void RegisterGenerated_meos_json_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TJsonbTypes::tjsonb()}, TJsonbTypes::jsonb(), Gen_tjsonb_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TJsonbTypes::tjsonb()}, TJsonbTypes::jsonb(), Gen_tjsonb_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueAtTimestamp", {TJsonbTypes::tjsonb(), LogicalType::TIMESTAMP_TZ}, TJsonbTypes::jsonb(), Gen_tjsonb_value_at_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, TJsonbTypes::jsonb(), Gen_tjsonb_value_n)); +void RegisterGenerated_meos_pose_geopose_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {MobilityDuckGeometryType(), PoseTypes::tpose()}, TgeompointType::tgeompoint(), Gen_tpose_apply_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_yaw)); + RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_pitch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_roll)); + RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_speed)); + RegisterSerializedScalarFunction(loader, ScalarFunction("angularSpeed", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_angular_speed)); } -void RegisterGenerated_meos_pointcloud_box_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hasX", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hasx)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hasZ", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hasz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hasT", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hast)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TpcboxType::tpcbox()}, LogicalType::INTEGER, Gen_tpcbox_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TpcboxType::tpcbox()}, LogicalType::UINTEGER, Gen_tpcbox_pcid)); +void RegisterGenerated_meos_pose_base_geopose(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPoseStream", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tpose_as_geopose_stream)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPoseStream", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_tpose_as_geopose_stream_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_yaw)); + RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_pitch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_roll)); } -void RegisterGenerated_meos_temporal_spatial_rel_ever(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("aTouches", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_atouches_tpoint_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eTouches", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_etouches_tpoint_geo)); +void RegisterGenerated_meos_posechain_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::posechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_posechain_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::posechain()}, LogicalType::VARCHAR, Gen_posechain_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::posechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_posechain_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::posechain()}, LogicalType::VARCHAR, Gen_posechain_as_ewkt_d)); } -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)); +void RegisterGenerated_meos_posechain_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {PosechainTypes::tposechain(), LogicalType::DOUBLE}, PosechainTypes::tposechain(), Gen_tposechain_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {PosechainTypes::tposechain(), LogicalType::DOUBLE}, PosechainTypes::tposechain(), Gen_tposechain_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {PosechainTypes::tposechain(), LogicalType::DOUBLE}, PosechainTypes::tposechain(), Gen_tposechain_rotate_z)); } -void RegisterGenerated_meos_pose_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tpose", {PoseTypes::tpose(), PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_make)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_to_tpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_to_tpoint)); +void RegisterGenerated_meos_s2cell_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("s2cellFromHexWKB", {LogicalType::VARCHAR}, S2cellTypes::s2cell(), Gen_s2cell_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("s2cellFromText", {LogicalType::VARCHAR}, S2cellTypes::s2cell(), Gen_s2cell_in)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {S2cellTypes::s2cell()}, LogicalType::VARCHAR, Gen_s2cell_out)); } -void RegisterGenerated_meos_geo_box_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {StboxType::stbox(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_stbox_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {StboxType::stbox()}, LogicalType::VARCHAR, Gen_stbox_out_d)); +void RegisterGenerated_meos_json_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("ttext", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonb", {TemporalTypes::ttext()}, TJsonbTypes::tjsonb(), Gen_ttext_to_tjsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::ttext()}, TJsonbTypes::tjsonb(), Gen_ttext_to_tjsonb)); } -void RegisterGenerated_meos_h3_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {H3indexTypes::h3indexset(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_ever_eq_h3indexset_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {H3indexTypes::h3indexset(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_ever_eq_h3indexset_th3index)); +void RegisterGenerated_meos_pointcloud_box_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TpcboxType::tpcbox(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tpcbox_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TpcboxType::tpcbox()}, LogicalType::VARCHAR, Gen_tpcbox_out_d)); } -void RegisterGenerated_meos_h3_set_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("set", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3index_to_set)); +void RegisterGenerated_meos_pointcloud_base_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TPcpointTypes::pcpoint()}, LogicalType::UINTEGER, Gen_pcpoint_get_pcid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TPcpatchTypes::pcpatch()}, LogicalType::UINTEGER, Gen_pcpatch_get_pcid)); } -void RegisterGenerated_meos_posechain_base_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PosechainTypes::posechain()}, LogicalType::INTEGER, Gen_posechain_srid)); +void RegisterGenerated_meos_pose_base_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {PoseTypes::pose(), PoseTypes::pose()}, PoseTypes::pose(), Gen_pose_compose)); } -void RegisterGenerated_meos_json_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TJsonbTypes::tjsonb()}, LogicalType::VARCHAR, Gen_tjsonb_out)); +void RegisterGenerated_meos_json_set_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::jsonbset()}, LogicalType::VARCHAR, Gen_jsonbset_out)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_1.cpp b/src/generated/generated_temporal_udfs_1.cpp index 4e3a26a1..737b3357 100644 --- a/src/generated/generated_temporal_udfs_1.cpp +++ b/src/generated/generated_temporal_udfs_1.cpp @@ -4030,48 +4030,78 @@ static void Gen_s2cellset_cover_cells(DataChunk &args, ExpressionState &, Vector } -// ===== @ingroup meos_geo_set_inout ===== -static void Gen_spatialset_as_text(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_traversal ===== +static void Gen_h3_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Set *s = BlobToSet(a); - char *r = spatialset_as_text(s, a2); - free(s); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_grid_disk(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_spatialset_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3_grid_ring(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Set *s = BlobToSet(a); - char *r = spatialset_as_text(s, 15); - free(s); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_grid_ring(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_spatialset_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3_grid_path_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Set *s = BlobToSet(a); - char *r = spatialset_as_ewkt(s, a2); - free(s); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_grid_path_cells(static_cast(a0), static_cast(a1)); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_spatialset_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_grid_distance(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = th3index_grid_distance(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_th3index_cell_to_local_ij(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = th3index_cell_to_local_ij(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_th3index_local_ij_to_cell(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = th3index_local_ij_to_cell(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_h3indexset_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Set *s = BlobToSet(a); - char *r = spatialset_as_ewkt(s, 15); + Set *r = h3indexset_grid_disk(s, a2); free(s); - return TakeCString(result, r); + return SetToBlobN(result, r, mask, idx); }); } @@ -4227,289 +4257,301 @@ static void Gen_th3index_to_tgeompoint(DataChunk &args, ExpressionState &, Vecto } -// ===== @ingroup meos_geo_transf ===== -static void Gen_tgeo_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_box_bbox_topo ===== +static void Gen_adjacent_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeo_rotate_x(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = adjacent_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tgeo_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeo_rotate_y(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = contained_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tgeo_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeo_rotate_z(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = contains_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; }); } - -// ===== @ingroup meos_h3_accessor ===== -static void Gen_th3index_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) -> int64_t { - Temporal *t = BlobToTemporal(in); - int64_t r = (int64_t) th3index_start_value(t); - free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overlaps_tbox_tbox(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_th3index_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) -> int64_t { - Temporal *t = BlobToTemporal(in); - int64_t r = (int64_t) th3index_end_value(t); - free(t); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = same_tbox_tbox(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_th3index_value_n(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> int64_t { - Temporal *t = BlobToTemporal(in); - uint64_t v; - bool ok = th3index_value_n(t, a2, &v); - free(t); - if (!ok) { mask.SetInvalid(idx); return int64_t(); } - return (int64_t) v; - }); -} -static void Gen_th3index_values(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_restrict ===== +static void Gen_tpcpoint_at_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - uint64_t * arr = th3index_values(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - - -// ===== @ingroup meos_cbuffer_base_inout ===== -static void Gen_cbuffer_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_ewkt(s, a2); - free(s); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpoint *a2p = BlobToPcpoint(a2); + Temporal *r = tpcpoint_at_value(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_cbuffer_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpoint_minus_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_ewkt(s, 15); - free(s); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpoint *a2p = BlobToPcpoint(a2); + Temporal *r = tpcpoint_minus_value(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_cbuffer_as_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_at_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_text(s, a2); - free(s); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpatch *a2p = BlobToPcpatch(a2); + Temporal *r = tpcpatch_at_value(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_cbuffer_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_minus_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_text(s, 15); - free(s); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpatch *a2p = BlobToPcpatch(a2); + Temporal *r = tpcpatch_minus_value(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_cbuffer_accessor ===== -static void Gen_tcbuffer_end_value(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_conversion ===== +static void Gen_tcbuffer_to_tfloat(DataChunk &args, ExpressionState &, 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); - Cbuffer * r = tcbuffer_end_value(t); + Temporal *r = tcbuffer_to_tfloat(t); free(t); - return CbufferToBlobN(result, r, mask, idx); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcbuffer_convex_hull(DataChunk &args, ExpressionState &state, Vector &result) { +static void Gen_tcbuffer_to_tgeompoint(DataChunk &args, ExpressionState &, 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 = tcbuffer_convex_hull(t); + Temporal *r = tcbuffer_to_tgeompoint(t); free(t); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcbuffer_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeometry_to_tcbuffer(DataChunk &args, ExpressionState &, 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); - Cbuffer * r = tcbuffer_start_value(t); + Temporal *r = tgeometry_to_tcbuffer(t); free(t); - return CbufferToBlobN(result, r, mask, idx); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_internal_temporal_inout ===== -static void Gen_temporal_from_mfjson(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_transf ===== +static void Gen_tcbuffer_expand(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - MeosType temptype = TemporalHelpers::GetTemptypeFromAlias(result.GetType().GetAlias().c_str()); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *r = temporal_from_mfjson(in.GetString().c_str(), temptype); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcbuffer_expand(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_json_conversion ===== -static void Gen_tjsonb_to_ttext(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tjsonb_to_ttext(t); + Temporal *r = tcbuffer_rotate_z(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttext_to_tjsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_translate(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, double a2, double a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = ttext_to_tjsonb(t); + Temporal *r = tcbuffer_translate(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pointcloud_conversion ===== -static void Gen_tpcpoint_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_base_inout ===== +static void Gen_quadbin_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = quadbin_from_hexwkb(a0.GetString().c_str()); + return static_cast(r); + }); +} + +static void Gen_quadbin_in(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = quadbin_in(a0.GetString().c_str()); + return static_cast(r); + }); +} + +static void Gen_quadbin_out(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + char * r = quadbin_out(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return TakeCString(result, r); + }); +} + + +// ===== @ingroup meos_json_restrict ===== +static void Gen_tjsonb_at_value(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpcpoint_to_tgeompoint(t); - free(t); + Jsonb *a2p = BlobToJsonb(a2); + Temporal *r = tjsonb_at_value(t, a2p); + free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcpatch_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_minus_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpcpatch_to_tgeometry(t); - free(t); + Jsonb *a2p = BlobToJsonb(a2); + Temporal *r = tjsonb_minus_value(t, a2p); + free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_box_set ===== -static void Gen_intersection_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_comp_temp ===== +static void Gen_teq_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - TBox *r = intersection_tbox_tbox(s1, s2); - free(s1); free(s2); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return TboxToBlob(result, r); + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pose *a2p = BlobToPose(a2); + Temporal *r = teq_tpose_pose(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tne_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pose *a2p = BlobToPose(a2); + Temporal *r = tne_tpose_pose(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_cbuffer_base_accessor ===== -static void Gen_cbuffer_radius(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_conversion ===== +static void Gen_tposechain_to_tpose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Cbuffer *v = BlobToCbuffer(in); - double r = cbuffer_radius(v); - free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tposechain_to_tpose(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + + +// ===== @ingroup meos_h3_base_hierarchy ===== +static void Gen_h3index_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1) -> int64_t { + uint64_t r = h3index_cell_to_parent(static_cast(a0), static_cast(a1)); + return static_cast(r); }); } -// ===== @ingroup meos_h3_inout ===== -static void Gen_th3index_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_inout ===== +static void Gen_ts2cell_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { Temporal *t = BlobToTemporal(in); - char * r = th3index_out(t); + char * r = ts2cell_out(t); free(t); return TakeCString(result, r); }); @@ -5127,30 +5169,16 @@ void RegisterGenerated_meos_s2cell_accessor(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("coverCells", {SetTypes::s2cellset(), LogicalType::INTEGER}, SetTypes::s2cellset(), Gen_s2cellset_cover_cells)); } -void RegisterGenerated_meos_geo_set_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::cbufferset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::cbufferset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::npointset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::npointset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::pcpointset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::pcpatchset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::poseset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::poseset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::posechainset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::posechainset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::cbufferset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::cbufferset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {H3indexTypes::h3indexset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::npointset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::npointset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::pcpointset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::pcpatchset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::poseset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::poseset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::posechainset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::posechainset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::quadbinset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::s2cellset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); +void RegisterGenerated_meos_h3_traversal(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_grid_disk)); + RegisterSerializedScalarFunction(loader, ScalarFunction("h3GridRing", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_grid_ring)); + RegisterSerializedScalarFunction(loader, ScalarFunction("h3GridPathCells", {H3indexTypes::h3index(), H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3_grid_path_cells)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3GridDistance", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToLocalIj", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TgeompointType::tgeompoint(), Gen_th3index_cell_to_local_ij)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3LocalIjToCell", {H3indexTypes::th3index(), H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_local_ij_to_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3indexset_grid_disk)); } void RegisterGenerated_meos_s2cell_base_comp(ExtensionLoader &loader) { @@ -5174,74 +5202,68 @@ void RegisterGenerated_meos_h3_latlng(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {H3indexTypes::th3index()}, TgeompointType::tgeompoint(), Gen_th3index_to_tgeompoint)); } -void RegisterGenerated_meos_geo_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_z)); +void RegisterGenerated_meos_box_bbox_topo(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tbox_tbox)); } -void RegisterGenerated_meos_h3_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {H3indexTypes::th3index()}, H3indexTypes::h3index(), Gen_th3index_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {H3indexTypes::th3index()}, H3indexTypes::h3index(), Gen_th3index_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_th3index_value_n)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getValues", {H3indexTypes::th3index()}, LogicalType::LIST(H3indexTypes::h3index()), Gen_th3index_values)); +void RegisterGenerated_meos_pointcloud_restrict(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TPcpointTypes::tpcpoint(), Gen_tpcpoint_at_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TPcpointTypes::tpcpoint(), Gen_tpcpoint_minus_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TPcpatchTypes::tpcpatch(), Gen_tpcpatch_at_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TPcpatchTypes::tpcpatch(), Gen_tpcpatch_minus_value)); } -void RegisterGenerated_meos_cbuffer_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::cbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_cbuffer_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::cbuffer()}, LogicalType::VARCHAR, Gen_cbuffer_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::cbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_cbuffer_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::cbuffer()}, LogicalType::VARCHAR, Gen_cbuffer_as_text_d)); +void RegisterGenerated_meos_cbuffer_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloat", {CbufferTypes::tcbuffer()}, TemporalTypes::tfloat(), Gen_tcbuffer_to_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, TemporalTypes::tfloat(), Gen_tcbuffer_to_tfloat)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {CbufferTypes::tcbuffer()}, TgeompointType::tgeompoint(), Gen_tcbuffer_to_tgeompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, TgeompointType::tgeompoint(), Gen_tcbuffer_to_tgeompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tcbuffer", {TGeometryTypes::tgeometry()}, CbufferTypes::tcbuffer(), Gen_tgeometry_to_tcbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, CbufferTypes::tcbuffer(), Gen_tgeometry_to_tcbuffer)); } -void RegisterGenerated_meos_cbuffer_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {CbufferTypes::tcbuffer()}, CbufferTypes::cbuffer(), Gen_tcbuffer_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("convexHull", {CbufferTypes::tcbuffer()}, MobilityDuckGeometryType(), Gen_tcbuffer_convex_hull)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {CbufferTypes::tcbuffer()}, CbufferTypes::cbuffer(), Gen_tcbuffer_start_value)); +void RegisterGenerated_meos_cbuffer_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_expand)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_rotate_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("translate", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE, LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_translate)); } -void RegisterGenerated_meos_internal_temporal_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointFromMFJSON", {LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointFromMFJSON", {LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboolFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tintFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_from_mfjson)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ttextFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_temporal_from_mfjson)); +void RegisterGenerated_meos_quadbin_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinFromHexWKB", {LogicalType::VARCHAR}, QuadbinTypes::quadbin(), Gen_quadbin_from_hexwkb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinFromText", {LogicalType::VARCHAR}, QuadbinTypes::quadbin(), Gen_quadbin_in)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {QuadbinTypes::quadbin()}, LogicalType::VARCHAR, Gen_quadbin_out)); } -void RegisterGenerated_meos_json_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("ttext", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TJsonbTypes::tjsonb()}, TemporalTypes::ttext(), Gen_tjsonb_to_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tjsonb", {TemporalTypes::ttext()}, TJsonbTypes::tjsonb(), Gen_ttext_to_tjsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::ttext()}, TJsonbTypes::tjsonb(), Gen_ttext_to_tjsonb)); +void RegisterGenerated_meos_json_restrict(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_at_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_minus_value)); } -void RegisterGenerated_meos_pointcloud_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {TPcpointTypes::tpcpoint()}, TgeompointType::tgeompoint(), Gen_tpcpoint_to_tgeompoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TPcpatchTypes::tpcpatch()}, TGeometryTypes::tgeometry(), Gen_tpcpatch_to_tgeometry)); +void RegisterGenerated_meos_pose_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tbool(), Gen_teq_tpose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tbool(), Gen_tne_tpose_pose)); } -void RegisterGenerated_meos_box_set(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxIntersection", {TboxType::tbox(), TboxType::tbox()}, TboxType::tbox(), Gen_intersection_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("*", {TboxType::tbox(), TboxType::tbox()}, TboxType::tbox(), Gen_intersection_tbox_tbox)); +void RegisterGenerated_meos_posechain_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tpose", {PosechainTypes::tposechain()}, PoseTypes::tpose(), Gen_tposechain_to_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PosechainTypes::tposechain()}, PoseTypes::tpose(), Gen_tposechain_to_tpose)); } -void RegisterGenerated_meos_cbuffer_base_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("radius", {CbufferTypes::cbuffer()}, LogicalType::DOUBLE, Gen_cbuffer_radius)); +void RegisterGenerated_meos_h3_base_hierarchy(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_h3index_cell_to_parent)); } -void RegisterGenerated_meos_h3_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {H3indexTypes::th3index()}, LogicalType::VARCHAR, Gen_th3index_out)); +void RegisterGenerated_meos_s2cell_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {S2cellTypes::ts2cell()}, LogicalType::VARCHAR, Gen_ts2cell_out)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_2.cpp b/src/generated/generated_temporal_udfs_2.cpp index cf789f80..a4a4c5e6 100644 --- a/src/generated/generated_temporal_udfs_2.cpp +++ b/src/generated/generated_temporal_udfs_2.cpp @@ -2614,78 +2614,48 @@ static void Gen_nad_trgeometry_stbox(DataChunk &args, ExpressionState &, Vector } -// ===== @ingroup meos_h3_conversion ===== -static void Gen_tbigint_to_th3index(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_set_inout ===== +static void Gen_spatialset_as_text(DataChunk &args, ExpressionState &, 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); - Temporal *r = tbigint_to_th3index(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_th3index_to_tbigint(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_to_tbigint(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_h3index_cell_to_cover(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3index_cell_to_cover(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_h3index_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - STBox * r = h3index_to_stbox(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Set *s = BlobToSet(a); + char *r = spatialset_as_text(s, a2); + free(s); + return TakeCString(result, r); }); } -static void Gen_h3index_timestamptz_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, timestamp_tz_t a1, ValidityMask &mask, idx_t idx) -> string_t { - STBox * r = h3index_timestamptz_to_stbox(static_cast(a0), DuckDBToMeosTimestamp(a1).value); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Set *s = BlobToSet(a); + char *r = spatialset_as_text(s, 15); + free(s); + return TakeCString(result, r); }); } -static void Gen_h3index_tstzspan_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, string_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Span *p1 = BlobToSpan(a1); - STBox * r = h3index_tstzspan_to_stbox(static_cast(a0), p1); - free(p1); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Set *s = BlobToSet(a); + char *r = spatialset_as_ewkt(s, a2); + free(s); + return TakeCString(result, r); }); } -static void Gen_h3indexset_cover_cells(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { Set *s = BlobToSet(a); - Set *r = h3indexset_cover_cells(s, a2); + char *r = spatialset_as_ewkt(s, 15); free(s); - return SetToBlobN(result, r, mask, idx); + return TakeCString(result, r); }); } @@ -2826,160 +2796,154 @@ static void Gen_trgeometry_as_tinstant(DataChunk &args, ExpressionState &, Vecto } -// ===== @ingroup meos_box_bbox_topo ===== -static void Gen_adjacent_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_transf ===== +static void Gen_tpose_compose_pose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = adjacent_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_contained_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = contained_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pose *a2p = BlobToPose(a2); + Temporal *r = tpose_compose_pose(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_contains_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_compose_tpose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = contains_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tpose_compose_tpose(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_overlaps_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_inverse(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overlaps_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tpose_inverse(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_same_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = same_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tpose_rotate_x(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_pointcloud_restrict ===== -static void Gen_tpcpoint_at_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - Temporal *r = tpcpoint_at_value(t, a2p); - free(a2p); free(t); + Temporal *r = tpose_rotate_y(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcpoint_minus_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - Temporal *r = tpcpoint_minus_value(t, a2p); - free(a2p); free(t); + Temporal *r = tpose_rotate_z(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcpatch_at_value(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_rgeo_rel_temp ===== +static void Gen_tdwithin_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - Temporal *r = tpcpatch_at_value(t, a2p); - free(a2p); free(t); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in_g, string_t in_t, double d, 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 = tdwithin_geo_trgeometry(gs, t, d); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcpatch_minus_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdwithin_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - Temporal *r = tpcpatch_minus_value(t, a2p); - free(a2p); free(t); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in_t, string_t in_g, double d, 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 = tdwithin_trgeometry_geo(t, gs, d); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_rgeo_inout ===== -static void Gen_trgeometry_as_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdwithin_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { - Temporal *t = BlobToTemporal(in); - char * r = trgeometry_as_text(t, a2); - free(t); - return TakeCString(result, r); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in1, string_t in2, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tdwithin_trgeometry_trgeometry(t1, t2, a2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_rgeo_modif ===== +static void Gen_trgeometry_delete_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, timestamp_tz_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = trgeometry_as_text(t, 15); + Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); free(t); - return TakeCString(result, r); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_delete_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = trgeometry_as_ewkt(t, a2); + Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); free(t); - return TakeCString(result, r); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_merge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = trgeometry_as_ewkt(t, 15); - free(t); - return TakeCString(result, r); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = trgeometry_merge(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } @@ -3059,120 +3023,94 @@ static void Gen_h3_is_valid_vertex(DataChunk &args, ExpressionState &, Vector &r } -// ===== @ingroup meos_h3_base_latlng ===== -static void Gen_h3index_cell_to_point(DataChunk &args, ExpressionState &state, Vector &result) { +// ===== @ingroup meos_json_comp_temp ===== +static void Gen_teq_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - GSERIALIZED * r = h3index_cell_to_point(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Jsonb *a2p = BlobToJsonb(a2); + Temporal *r = teq_tjsonb_jsonb(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_h3index_cell_to_boundary(DataChunk &args, ExpressionState &state, Vector &result) { +static void Gen_tne_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - GSERIALIZED * r = h3index_cell_to_boundary(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - string_t out = GSerializedToGeometry(r, state, result); - free(r); - return out; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Jsonb *a2p = BlobToJsonb(a2); + Temporal *r = tne_tjsonb_jsonb(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_s2cell_set_accessor ===== -static void Gen_s2cellset_values(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Set *in = BlobToSet(blob); - int count = 0; - uint64_t * arr = s2cellset_values(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } -} - - -// ===== @ingroup meos_npoint_base_srid ===== -static void Gen_npoint_srid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_conversion ===== +static void Gen_tpcpoint_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Npoint *v = BlobToNpoint(in); - int32_t r = npoint_srid(v); - free(v); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tpcpoint_to_tgeompoint(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_nsegment_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Nsegment *v = BlobToNsegment(in); - int32_t r = nsegment_srid(v); - free(v); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tpcpatch_to_tgeometry(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_posechain_accessor ===== -static void Gen_tposechain_num_poses(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_box_set ===== +static void Gen_intersection_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - int32_t r = tposechain_num_poses(t); - free(t); - return (int32_t) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + TBox *r = intersection_tbox_tbox(s1, s2); + free(s1); free(s2); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return TboxToBlob(result, r); }); } -// ===== @ingroup meos_h3_base_inout ===== -static void Gen_h3index_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_base_accessor ===== +static void Gen_cbuffer_radius(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a0) -> int64_t { - uint64_t r = h3index_from_hexwkb(a0.GetString().c_str()); - return static_cast(r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> double { + Cbuffer *v = BlobToCbuffer(in); + double r = cbuffer_radius(v); + free(v); + if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } + return r; }); } -// ===== @ingroup meos_h3_base_metrics ===== -static void Gen_h3index_cell_area(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_inout ===== +static void Gen_th3index_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> double { - double r = h3index_cell_area(static_cast(a0)); - return (double) r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = th3index_out(t); + free(t); + return TakeCString(result, r); }); } @@ -4064,17 +4002,30 @@ void RegisterGenerated_meos_rgeo_dist(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("|=|", {TrgeometryTypes::trgeometry(), StboxType::stbox()}, LogicalType::DOUBLE, Gen_nad_trgeometry_stbox)); } -void RegisterGenerated_meos_h3_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TemporalTypes::tbigint()}, H3indexTypes::th3index(), Gen_tbigint_to_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, H3indexTypes::th3index(), Gen_tbigint_to_th3index)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToCover", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3index_cell_to_cover)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index()}, StboxType::stbox(), Gen_h3index_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::h3index()}, StboxType::stbox(), Gen_h3index_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index(), LogicalType::TIMESTAMP_TZ}, StboxType::stbox(), Gen_h3index_timestamptz_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index(), SpanTypes::tstzspan()}, StboxType::stbox(), Gen_h3index_tstzspan_to_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("coverCells", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3indexset_cover_cells)); +void RegisterGenerated_meos_geo_set_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::cbufferset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::cbufferset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::npointset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::npointset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::pcpointset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::pcpatchset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::poseset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::poseset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::posechainset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::posechainset()}, LogicalType::VARCHAR, Gen_spatialset_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::cbufferset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::cbufferset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {H3indexTypes::h3indexset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::npointset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::npointset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::pcpointset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::pcpatchset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::poseset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::poseset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::posechainset(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::posechainset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::quadbinset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {SetTypes::s2cellset()}, LogicalType::VARCHAR, Gen_spatialset_as_ewkt_d)); } void RegisterGenerated_meos_geo_conversion(ExtensionLoader &loader) { @@ -4101,31 +4052,25 @@ void RegisterGenerated_meos_rgeo_transf(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("trgeometryInst", {TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_as_tinstant)); } -void RegisterGenerated_meos_box_bbox_topo(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tbox_tbox)); +void RegisterGenerated_meos_pose_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_compose_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {PoseTypes::tpose(), PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_compose_tpose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("poseInverse", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_inverse)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_tpose_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_tpose_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_tpose_rotate_z)); } -void RegisterGenerated_meos_pointcloud_restrict(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TPcpointTypes::tpcpoint(), Gen_tpcpoint_at_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TPcpointTypes::tpcpoint(), Gen_tpcpoint_minus_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TPcpatchTypes::tpcpatch(), Gen_tpcpatch_at_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TPcpatchTypes::tpcpatch(), Gen_tpcpatch_minus_value)); +void RegisterGenerated_meos_rgeo_rel_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_trgeometry_trgeometry)); } -void RegisterGenerated_meos_rgeo_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_trgeometry_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TrgeometryTypes::trgeometry()}, LogicalType::VARCHAR, Gen_trgeometry_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_trgeometry_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TrgeometryTypes::trgeometry()}, LogicalType::VARCHAR, Gen_trgeometry_as_ewkt_d)); +void RegisterGenerated_meos_rgeo_modif(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_trgeometry_delete_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_delete_timestamptz_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("merge", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_merge)); } void RegisterGenerated_meos_pointcloud_base_comp(ExtensionLoader &loader) { @@ -4141,26 +4086,27 @@ void RegisterGenerated_meos_h3_base_accessor(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("isValidVertex", {H3indexTypes::h3index()}, LogicalType::BOOLEAN, Gen_h3_is_valid_vertex)); } -void RegisterGenerated_meos_h3_base_latlng(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {H3indexTypes::h3index()}, MobilityDuckGeometryType(), Gen_h3index_cell_to_point)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {H3indexTypes::h3index()}, MobilityDuckGeometryType(), Gen_h3index_cell_to_boundary)); +void RegisterGenerated_meos_json_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TemporalTypes::tbool(), Gen_teq_tjsonb_jsonb)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TemporalTypes::tbool(), Gen_tne_tjsonb_jsonb)); } -void RegisterGenerated_meos_npoint_base_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::npoint()}, LogicalType::INTEGER, Gen_npoint_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::nsegment()}, LogicalType::INTEGER, Gen_nsegment_srid)); +void RegisterGenerated_meos_pointcloud_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {TPcpointTypes::tpcpoint()}, TgeompointType::tgeompoint(), Gen_tpcpoint_to_tgeompoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TPcpatchTypes::tpcpatch()}, TGeometryTypes::tgeometry(), Gen_tpcpatch_to_tgeometry)); } -void RegisterGenerated_meos_posechain_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("numPoses", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tposechain_num_poses)); +void RegisterGenerated_meos_box_set(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tboxIntersection", {TboxType::tbox(), TboxType::tbox()}, TboxType::tbox(), Gen_intersection_tbox_tbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("*", {TboxType::tbox(), TboxType::tbox()}, TboxType::tbox(), Gen_intersection_tbox_tbox)); } -void RegisterGenerated_meos_h3_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("h3indexFromHexWKB", {LogicalType::VARCHAR}, H3indexTypes::h3index(), Gen_h3index_from_hexwkb)); +void RegisterGenerated_meos_cbuffer_base_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("radius", {CbufferTypes::cbuffer()}, LogicalType::DOUBLE, Gen_cbuffer_radius)); } -void RegisterGenerated_meos_h3_base_metrics(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {H3indexTypes::h3index()}, LogicalType::DOUBLE, Gen_h3index_cell_area)); +void RegisterGenerated_meos_h3_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {H3indexTypes::th3index()}, LogicalType::VARCHAR, Gen_th3index_out)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_3.cpp b/src/generated/generated_temporal_udfs_3.cpp index 44a2c9fe..7c1df81d 100644 --- a/src/generated/generated_temporal_udfs_3.cpp +++ b/src/generated/generated_temporal_udfs_3.cpp @@ -3330,279 +3330,274 @@ static void Gen_tpoint_speed(DataChunk &args, ExpressionState &, Vector &result) } -// ===== @ingroup meos_cellindex ===== -static void Gen_tcellindex_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_conversion ===== +static void Gen_tbigint_to_th3index(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcellindex_get_resolution(t); + Temporal *r = tbigint_to_th3index(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcellindex_is_valid_cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_to_tbigint(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcellindex_is_valid_cell(t); + Temporal *r = th3index_to_tbigint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tcellindex_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_cell_to_cover(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tcellindex_cell_to_parent(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3index_cell_to_cover(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_tcellindex_cell_to_point(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_to_stbox(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcellindex_cell_to_point(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + STBox * r = h3index_to_stbox(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } -static void Gen_tcellindex_cell_to_boundary(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_timestamptz_to_stbox(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcellindex_cell_to_boundary(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, timestamp_tz_t a1, ValidityMask &mask, idx_t idx) -> string_t { + STBox * r = h3index_timestamptz_to_stbox(static_cast(a0), DuckDBToMeosTimestamp(a1).value); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } -static void Gen_tcellindex_cell_area(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_tstzspan_to_stbox(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcellindex_cell_area(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, string_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Span *p1 = BlobToSpan(a1); + STBox * r = h3index_tstzspan_to_stbox(static_cast(a0), p1); + free(p1); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } -static void Gen_tquadbin_cell_to_quadkey(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3indexset_cover_cells(DataChunk &args, ExpressionState &, 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); - Temporal *r = tquadbin_cell_to_quadkey(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = h3indexset_cover_cells(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + +static void Gen_geo_to_h3index_cell(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, int32_t res) { + GSERIALIZED *gs = GeometryToGSerialized(in_g, 4326); + uint64_t r = geo_to_h3index_cell(gs, res); + free(gs); + return (int64_t) r; + }); +} + +static void Gen_geo_to_h3index_set(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in_g, int32_t res) { + GSERIALIZED *gs = GeometryToGSerialized(in_g, 4326); + Set *r = geo_to_h3index_set(gs, res); + free(gs); + return SetToBlob(result, r); }); } -// ===== @ingroup meos_box_comp ===== -static void Gen_tbox_hash(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_box_comp ===== +static void Gen_stbox_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - TBox *s = BlobToTbox(in); - uint32_t r = tbox_hash(s); + STBox *s = BlobToStbox(in); + uint32_t r = stbox_hash(s); free(s); return r; }); } -static void Gen_tbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t in, uint64_t a2) { - TBox *s = BlobToTbox(in); - uint64_t r = tbox_hash_extended(s, a2); + STBox *s = BlobToStbox(in); + uint64_t r = stbox_hash_extended(s, a2); free(s); return r; }); } -static void Gen_tbox_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_eq(s1, s2); + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_eq(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_tbox_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_ge(s1, s2); + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_ge(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_tbox_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_gt(s1, s2); + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_gt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_tbox_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_le(s1, s2); + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_le(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_tbox_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_lt(s1, s2); + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_lt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_tbox_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_ne(s1, s2); + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_ne(s1, s2); free(s1); free(s2); return r; }); } -// ===== @ingroup meos_rgeo_bbox_split ===== -static void Gen_trgeometry_stboxes(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_conversion ===== +static void Gen_bigint_to_s2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - STBox * arr = trgeometry_stboxes(in, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> int64_t { + uint64_t r = bigint_to_s2cell(a0); + return static_cast(r); + }); } -static void Gen_trgeometry_split_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbigint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - STBox * arr = trgeometry_split_n_stboxes(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tbigint_to_ts2cell(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); } -static void Gen_trgeometry_split_each_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ts2cell_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - auto &in_vec = args.data[0]; - idx_t row_count = args.size(); - in_vec.Flatten(row_count); - auto &n_vec = args.data[1]; - n_vec.Flatten(row_count); - auto &result_validity = FlatVector::Validity(result); - auto list_entries = FlatVector::GetData(result); - idx_t off = 0; - for (idx_t i = 0; i < row_count; ++i) { - if (in_vec.GetValue(i).IsNull() || n_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } - string_t blob = FlatVector::GetData(in_vec)[i]; - int32_t n_arg = FlatVector::GetData(n_vec)[i]; - Temporal *in = BlobToTemporal(blob); - int count = 0; - STBox * arr = trgeometry_split_each_n_stboxes(in, n_arg, &count); - free(in); - int n = (arr && count > 0) ? count : 0; - ListVector::Reserve(result, off + n); - ListVector::SetListSize(result, off + n); - list_entries[i] = list_entry_t{off, (uint64_t) n}; - if (n > 0) { - auto &child_vector = ListVector::GetEntry(result); - child_vector.SetVectorType(VectorType::FLAT_VECTOR); - auto *cd = FlatVector::GetData(child_vector); - for (int j = 0; j < n; ++j) { cd[off + j] = StringVector::AddStringOrBlob(child_vector, (const char *) &arr[j], sizeof(STBox)); } - off += n; - } - if (arr) free(arr); - result_validity.SetValid(i); - } + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = ts2cell_to_tbigint(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tgeogpoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeogpoint_to_ts2cell(t, a2, a3); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tgeogpoint_to_ts2cell_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeogpoint_to_ts2cell(t, a2, true); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tgeompoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeompoint_to_ts2cell(t, a2, a3); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tgeompoint_to_ts2cell_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeompoint_to_ts2cell(t, a2, true); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); } @@ -3676,72 +3671,64 @@ static void Gen_tne_th3index_th3index(DataChunk &args, ExpressionState &, Vector } -// ===== @ingroup meos_pose_transf ===== -static void Gen_tpose_compose_pose(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = tpose_compose_pose(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tpose_compose_tpose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_topo ===== +static void Gen_contains_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tpose_compose_tpose(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = contains_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpose_inverse(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_tpcbox_tpcbox(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpose_inverse(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = contained_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpose_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tpose_rotate_x(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overlaps_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpose_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tpose_rotate_y(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = same_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpose_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_adjacent_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tpose_rotate_z(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = adjacent_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } @@ -3991,26 +3978,24 @@ static void Gen_quadbinset_out(DataChunk &args, ExpressionState &, Vector &resul } -// ===== @ingroup meos_s2cell_set_inout ===== -static void Gen_s2cellset_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_base_inout ===== +static void Gen_h3index_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Set *s = BlobToSet(in); - char * r = s2cellset_out(s); - free(s); - return TakeCString(result, r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a0) -> int64_t { + uint64_t r = h3index_from_hexwkb(a0.GetString().c_str()); + return static_cast(r); }); } -// ===== @ingroup meos_cbuffer_base_srid ===== -static void Gen_cbuffer_srid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_base_srid ===== +static void Gen_pose_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Cbuffer *v = BlobToCbuffer(in); - int32_t r = cbuffer_srid(v); + Pose *v = BlobToPose(in); + int32_t r = pose_srid(v); free(v); return r; }); @@ -4665,48 +4650,49 @@ void RegisterGenerated_meos_geo_accessor(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tpoint_speed)); } -void RegisterGenerated_meos_cellindex(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {H3indexTypes::th3index()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {QuadbinTypes::tquadbin()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {S2cellTypes::ts2cell()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_tcellindex_cell_to_parent)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, QuadbinTypes::tquadbin(), Gen_tcellindex_cell_to_parent)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tcellindex_cell_to_parent)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {QuadbinTypes::tquadbin()}, TgeompointType::tgeompoint(), Gen_tcellindex_cell_to_point)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {S2cellTypes::ts2cell()}, TgeogpointType::tgeogpoint(), Gen_tcellindex_cell_to_point)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {H3indexTypes::th3index()}, TGeographyTypes::tgeography(), Gen_tcellindex_cell_to_boundary)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {QuadbinTypes::tquadbin()}, TGeometryTypes::tgeometry(), Gen_tcellindex_cell_to_boundary)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {S2cellTypes::ts2cell()}, TGeographyTypes::tgeography(), Gen_tcellindex_cell_to_boundary)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {H3indexTypes::th3index()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {QuadbinTypes::tquadbin()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {S2cellTypes::ts2cell()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbinCellToQuadkey", {QuadbinTypes::tquadbin()}, TemporalTypes::ttext(), Gen_tquadbin_cell_to_quadkey)); -} - -void RegisterGenerated_meos_box_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {TboxType::tbox()}, LogicalType::UINTEGER, Gen_tbox_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {TboxType::tbox(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_tbox_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ne)); -} - -void RegisterGenerated_meos_rgeo_bbox_split(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxes", {TrgeometryTypes::trgeometry()}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitNStboxes", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_split_n_stboxes)); - RegisterSerializedScalarFunction(loader, ScalarFunction("splitEachNStboxes", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::LIST(StboxType::stbox()), Gen_trgeometry_split_each_n_stboxes)); +void RegisterGenerated_meos_h3_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("th3index", {TemporalTypes::tbigint()}, H3indexTypes::th3index(), Gen_tbigint_to_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, H3indexTypes::th3index(), Gen_tbigint_to_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToCover", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3index_cell_to_cover)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index()}, StboxType::stbox(), Gen_h3index_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {H3indexTypes::h3index()}, StboxType::stbox(), Gen_h3index_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index(), LogicalType::TIMESTAMP_TZ}, StboxType::stbox(), Gen_h3index_timestamptz_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("stbox", {H3indexTypes::h3index(), SpanTypes::tstzspan()}, StboxType::stbox(), Gen_h3index_tstzspan_to_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("coverCells", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3indexset_cover_cells)); + RegisterSerializedScalarFunction(loader, ScalarFunction("latLngToCell", {MobilityDuckGeometryType(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_geo_to_h3index_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("geoToH3IndexSet", {MobilityDuckGeometryType(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_geo_to_h3index_set)); +} + +void RegisterGenerated_meos_geo_box_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {StboxType::stbox()}, LogicalType::UINTEGER, Gen_stbox_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {StboxType::stbox(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_stbox_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_stbox_ne)); +} + +void RegisterGenerated_meos_s2cell_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("s2cell", {LogicalType::BIGINT}, S2cellTypes::s2cell(), Gen_bigint_to_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {LogicalType::BIGINT}, S2cellTypes::s2cell(), Gen_bigint_to_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TemporalTypes::tbigint()}, S2cellTypes::ts2cell(), Gen_tbigint_to_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, S2cellTypes::ts2cell(), Gen_tbigint_to_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {S2cellTypes::ts2cell()}, TemporalTypes::tbigint(), Gen_ts2cell_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {S2cellTypes::ts2cell()}, TemporalTypes::tbigint(), Gen_ts2cell_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_tgeogpoint_to_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tgeogpoint_to_ts2cell_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeompointType::tgeompoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_tgeompoint_to_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tgeompoint_to_ts2cell_d)); } void RegisterGenerated_meos_h3_comp_temp(ExtensionLoader &loader) { @@ -4718,13 +4704,17 @@ void RegisterGenerated_meos_h3_comp_temp(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_tne_th3index_th3index)); } -void RegisterGenerated_meos_pose_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_compose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {PoseTypes::tpose(), PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_compose_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("poseInverse", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_inverse)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_tpose_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_tpose_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {PoseTypes::tpose(), LogicalType::DOUBLE}, PoseTypes::tpose(), Gen_tpose_rotate_z)); +void RegisterGenerated_meos_pointcloud_box_topo(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_contains_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_contains_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_contained_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_contained_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overlaps_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_overlaps_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_same_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_same_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_adjacent_tpcbox_tpcbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_adjacent_tpcbox_tpcbox)); } void RegisterGenerated_meos_h3_vertex(ExtensionLoader &loader) { @@ -4774,12 +4764,12 @@ void RegisterGenerated_meos_quadbin_set_inout(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::quadbinset()}, LogicalType::VARCHAR, Gen_quadbinset_out)); } -void RegisterGenerated_meos_s2cell_set_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::s2cellset()}, LogicalType::VARCHAR, Gen_s2cellset_out)); +void RegisterGenerated_meos_h3_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("h3indexFromHexWKB", {LogicalType::VARCHAR}, H3indexTypes::h3index(), Gen_h3index_from_hexwkb)); } -void RegisterGenerated_meos_cbuffer_base_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {CbufferTypes::cbuffer()}, LogicalType::INTEGER, Gen_cbuffer_srid)); +void RegisterGenerated_meos_pose_base_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PoseTypes::pose()}, LogicalType::INTEGER, Gen_pose_srid)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_4.cpp b/src/generated/generated_temporal_udfs_4.cpp index 40b5d05c..ce694fb7 100644 --- a/src/generated/generated_temporal_udfs_4.cpp +++ b/src/generated/generated_temporal_udfs_4.cpp @@ -2362,675 +2362,587 @@ static void Gen_ever_ne_tjsonb_tjsonb(DataChunk &args, ExpressionState &, Vector } -// ===== @ingroup meos_pose_base_comp ===== -static void Gen_pose_hash(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cellindex ===== +static void Gen_tcellindex_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Pose *v = BlobToPose(in); - uint32_t r = pose_hash(v); - free(v); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_get_resolution(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_is_valid_cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, uint64_t a2) { - Pose *s = BlobToPose(in); - uint64_t r = pose_hash_extended(s, a2); - free(s); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_is_valid_cell(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_eq(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_cell_to_parent(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_cell_to_point(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_ge(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_cell_to_point(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_cell_to_boundary(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_gt(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_cell_to_boundary(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcellindex_cell_area(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_le(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_cell_area(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tquadbin_cell_to_quadkey(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_lt(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tquadbin_cell_to_quadkey(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_ne(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_geo_srid ===== +static void Gen_tspatial_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_ne(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + int32_t r = tspatial_srid(t); + free(t); + return (int32_t) r; }); } -static void Gen_pose_same(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tspatial_set_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_same(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tspatial_set_srid(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_box_bbox_pos ===== -static void Gen_after_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tspatial_transform(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = after_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tspatial_transform(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_before_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_quadbin_base_comp ===== +static void Gen_quadbin_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = before_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_eq(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_left_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = left_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_ne(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_overafter_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overafter_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_lt(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_overbefore_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overbefore_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_le(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_overleft_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overleft_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_gt(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_overright_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overright_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_ge(static_cast(a0), static_cast(a1)); + return (bool) r; }); } -static void Gen_right_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_cmp(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = right_tbox_tbox(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int64_t a1) -> int32_t { + int32_t r = quadbin_cmp(static_cast(a0), static_cast(a1)); + return (int32_t) r; }); } - -// ===== @ingroup meos_s2cell_conversion ===== -static void Gen_bigint_to_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> int64_t { - uint64_t r = bigint_to_s2cell(a0); - return static_cast(r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> uint32_t { + uint32_t r = quadbin_hash(static_cast(a0)); + return r; }); } -static void Gen_tbigint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_hash_extended(DataChunk &args, ExpressionState &, 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); - Temporal *r = tbigint_to_ts2cell(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, uint64_t a1) -> uint64_t { + uint64_t r = quadbin_hash_extended(static_cast(a0), a1); + return r; }); } -static void Gen_ts2cell_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_s2cell_comp_temp ===== +static void Gen_teq_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = ts2cell_to_tbigint(t); + Temporal *r = teq_s2cell_ts2cell((uint64_t) a1, t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeogpoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeogpoint_to_ts2cell(t, a2, a3); + Temporal *r = teq_ts2cell_s2cell(t, (uint64_t) a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeogpoint_to_ts2cell_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeogpoint_to_ts2cell(t, a2, true); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = teq_ts2cell_ts2cell(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeompoint_to_ts2cell(t, a2, a3); + Temporal *r = tne_s2cell_ts2cell((uint64_t) a1, t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_ts2cell_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeompoint_to_ts2cell(t, a2, true); + Temporal *r = tne_ts2cell_s2cell(t, (uint64_t) a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_pose_restrict ===== -static void Gen_tpose_at_geom(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tpose_at_geom(t, gs); - free(t); free(gs); + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tne_ts2cell_ts2cell(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_at_pose(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_geo_box_topo ===== +static void Gen_adjacent_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = tpose_at_pose(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = adjacent_stbox_stbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpose_minus_geom(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contained_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tpose_minus_geom(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = contained_stbox_stbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpose_minus_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_contains_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = tpose_minus_pose(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = contains_stbox_stbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpose_at_elevation(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - Temporal *r = tpose_at_elevation(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = overlaps_stbox_stbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpose_minus_elevation(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(a); - Span *cc = BlobToSpan(b); - Temporal *r = tpose_minus_elevation(t, cc); - free(t); free(cc); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = same_stbox_stbox(s1, s2); + free(s1); free(s2); + return r; }); } -// ===== @ingroup meos_cbuffer_restrict ===== -static void Gen_tcbuffer_at_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_json_accessor ===== +static void Gen_tjsonb_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tcbuffer_at_cbuffer(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + Jsonb * r = tjsonb_end_value(t); + free(t); + return JsonbToBlobN(result, r, mask, idx); }); } -static void Gen_tcbuffer_at_geom(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_start_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tcbuffer_at_geom(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Jsonb * r = tjsonb_start_value(t); + free(t); + return JsonbToBlobN(result, r, mask, idx); }); } -static void Gen_tcbuffer_minus_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_value_at_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + auto rc = args.size(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tcbuffer_minus_cbuffer(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + Jsonb *o = NULL; + bool ok = tjsonb_value_at_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true, &o); + free(t); + if (! ok) { mask.SetInvalid(idx); return string_t(); } + return JsonbToBlob(result, o); }); } -static void Gen_tcbuffer_minus_geom(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_value_n(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tcbuffer_minus_geom(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + auto rc = args.size(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, rc, + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Jsonb *o = NULL; + bool ok = tjsonb_value_n(t, a2, &o); + free(t); + if (! ok) { mask.SetInvalid(idx); return string_t(); } + return JsonbToBlob(result, o); }); } -// ===== @ingroup meos_pointcloud_comp_temp ===== -static void Gen_teq_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_accessor ===== +static void Gen_tpcbox_hasx(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - Temporal *r = teq_tpcpoint_pcpoint(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + bool r = tpcbox_hasx(v); + free(v); + return r; }); } -static void Gen_tne_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_hasz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pcpoint *a2p = BlobToPcpoint(a2); - Temporal *r = tne_tpcpoint_pcpoint(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + bool r = tpcbox_hasz(v); + free(v); + return r; }); } -static void Gen_teq_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_hast(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - Temporal *r = teq_tpcpatch_pcpatch(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + bool r = tpcbox_hast(v); + free(v); + return r; }); } -static void Gen_tne_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Pcpatch *a2p = BlobToPcpatch(a2); - Temporal *r = tne_tpcpatch_pcpatch(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + int32_t r = tpcbox_srid(v); + free(v); + return r; }); } - -// ===== @ingroup meos_pointcloud_accessor ===== -static void Gen_tpcpoint_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_pcid(DataChunk &args, ExpressionState &, 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); - Pcpoint * r = tpcpoint_start_value(t); - free(t); - return PcpointToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + uint32_t r = tpcbox_pcid(v); + free(v); + return r; }); } -static void Gen_tpcpoint_end_value(DataChunk &args, ExpressionState &, 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); - Pcpoint * r = tpcpoint_end_value(t); - free(t); - return PcpointToBlobN(result, r, mask, idx); - }); -} -static void Gen_tpcpatch_start_value(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_set_srid ===== +static void Gen_spatialset_set_srid(DataChunk &args, ExpressionState &, 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); - Pcpatch * r = tpcpatch_start_value(t); - free(t); - return PcpatchToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = spatialset_set_srid(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_tpcpatch_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_transform(DataChunk &args, ExpressionState &, 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); - Pcpatch * r = tpcpatch_end_value(t); - free(t); - return PcpatchToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = spatialset_transform(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_posechain_transf ===== -static void Gen_tposechain_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_conversion ===== +static void Gen_trgeometry_to_tpose(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tposechain_rotate_x(t, a2); + Temporal *r = trgeometry_to_tpose(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tposechain_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tposechain_rotate_y(t, a2); + Temporal *r = trgeometry_to_tgeompoint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tposechain_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tposechain_rotate_z(t, a2); + Temporal *r = trgeometry_to_tgeometry(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_quadbin_base_inout ===== -static void Gen_quadbin_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_metrics ===== +static void Gen_th3index_edge_length(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a0) -> int64_t { - uint64_t r = quadbin_from_hexwkb(a0.GetString().c_str()); - return static_cast(r); - }); -} - -static void Gen_quadbin_in(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a0) -> int64_t { - uint64_t r = quadbin_in(a0.GetString().c_str()); - return static_cast(r); - }); -} - -static void Gen_quadbin_out(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - char * r = quadbin_out(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return TakeCString(result, r); - }); -} - - -// ===== @ingroup meos_json_restrict ===== -static void Gen_tjsonb_at_value(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - Temporal *r = tjsonb_at_value(t, a2p); - free(a2p); free(t); + Temporal *r = th3index_edge_length(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_minus_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_great_circle_distance(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - Temporal *r = tjsonb_minus_value(t, a2p); - free(a2p); free(t); + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tgeogpoint_great_circle_distance(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_comp_temp ===== -static void Gen_teq_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_inout ===== +static void Gen_tpcpoint_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = teq_tpose_pose(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + char * r = tpcpoint_out(t); + free(t); + return TakeCString(result, r); }); } -static void Gen_tne_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { Temporal *t = BlobToTemporal(in); - Pose *a2p = BlobToPose(a2); - Temporal *r = tne_tpose_pose(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + char * r = tpcpatch_out(t); + free(t); + return TakeCString(result, r); }); } -// ===== @ingroup meos_posechain_conversion ===== -static void Gen_tposechain_to_tpose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_box_set ===== +static void Gen_intersection_stbox_stbox(DataChunk &args, ExpressionState &, 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); - Temporal *r = tposechain_to_tpose(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + STBox *r = intersection_stbox_stbox(s1, s2); + free(s1); free(s2); + if (!r) { mask.SetInvalid(idx); return string_t(); } + return StboxToBlob(result, r); }); } -// ===== @ingroup meos_h3_base_hierarchy ===== -static void Gen_h3index_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_npoint_set_accessor ===== +static void Gen_npointset_routes(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1) -> int64_t { - uint64_t r = h3index_cell_to_parent(static_cast(a0), static_cast(a1)); - return static_cast(r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(in); + Set *r = npointset_routes(s); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_s2cell_inout ===== -static void Gen_ts2cell_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_base_inspection ===== +static void Gen_h3index_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = ts2cell_out(t); - free(t); - return TakeCString(result, r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> uint32_t { + uint32_t r = h3index_get_resolution(static_cast(a0)); + return r; }); } @@ -4003,116 +3915,142 @@ void RegisterGenerated_meos_json_comp_ever(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {TJsonbTypes::tjsonb(), TJsonbTypes::tjsonb()}, LogicalType::BOOLEAN, Gen_ever_ne_tjsonb_tjsonb)); } -void RegisterGenerated_meos_pose_base_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {PoseTypes::pose()}, LogicalType::UINTEGER, Gen_pose_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {PoseTypes::pose(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_pose_hash_extended)); - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_same)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_same)); -} - -void RegisterGenerated_meos_box_bbox_pos(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxAfter", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_after_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxBefore", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_before_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxLeft", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverafter", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overafter_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverbefore", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overbefore_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverleft", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxOverright", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tboxRight", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_tbox_tbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_tbox_tbox)); -} - -void RegisterGenerated_meos_s2cell_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("s2cell", {LogicalType::BIGINT}, S2cellTypes::s2cell(), Gen_bigint_to_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {LogicalType::BIGINT}, S2cellTypes::s2cell(), Gen_bigint_to_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TemporalTypes::tbigint()}, S2cellTypes::ts2cell(), Gen_tbigint_to_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, S2cellTypes::ts2cell(), Gen_tbigint_to_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {S2cellTypes::ts2cell()}, TemporalTypes::tbigint(), Gen_ts2cell_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {S2cellTypes::ts2cell()}, TemporalTypes::tbigint(), Gen_ts2cell_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_tgeogpoint_to_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tgeogpoint_to_ts2cell_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeompointType::tgeompoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, S2cellTypes::ts2cell(), Gen_tgeompoint_to_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ts2cell", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tgeompoint_to_ts2cell_d)); -} - -void RegisterGenerated_meos_pose_restrict(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {PoseTypes::tpose(), MobilityDuckGeometryType()}, PoseTypes::tpose(), Gen_tpose_at_geom)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_at_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {PoseTypes::tpose(), MobilityDuckGeometryType()}, PoseTypes::tpose(), Gen_tpose_minus_geom)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_minus_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atElevation", {PoseTypes::tpose(), SpanTypes::floatspan()}, PoseTypes::tpose(), Gen_tpose_at_elevation)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusElevation", {PoseTypes::tpose(), SpanTypes::floatspan()}, PoseTypes::tpose(), Gen_tpose_minus_elevation)); -} - -void RegisterGenerated_meos_cbuffer_restrict(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_at_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_at_geom)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_minus_cbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_minus_geom)); -} - -void RegisterGenerated_meos_pointcloud_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TemporalTypes::tbool(), Gen_teq_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TemporalTypes::tbool(), Gen_tne_tpcpoint_pcpoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TemporalTypes::tbool(), Gen_teq_tpcpatch_pcpatch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TemporalTypes::tbool(), Gen_tne_tpcpatch_pcpatch)); -} - -void RegisterGenerated_meos_pointcloud_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TPcpointTypes::tpcpoint()}, TPcpointTypes::pcpoint(), Gen_tpcpoint_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TPcpointTypes::tpcpoint()}, TPcpointTypes::pcpoint(), Gen_tpcpoint_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TPcpatchTypes::tpcpatch()}, TPcpatchTypes::pcpatch(), Gen_tpcpatch_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TPcpatchTypes::tpcpatch()}, TPcpatchTypes::pcpatch(), Gen_tpcpatch_end_value)); -} - -void RegisterGenerated_meos_posechain_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {PosechainTypes::tposechain(), LogicalType::DOUBLE}, PosechainTypes::tposechain(), Gen_tposechain_rotate_x)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {PosechainTypes::tposechain(), LogicalType::DOUBLE}, PosechainTypes::tposechain(), Gen_tposechain_rotate_y)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {PosechainTypes::tposechain(), LogicalType::DOUBLE}, PosechainTypes::tposechain(), Gen_tposechain_rotate_z)); -} - -void RegisterGenerated_meos_quadbin_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinFromHexWKB", {LogicalType::VARCHAR}, QuadbinTypes::quadbin(), Gen_quadbin_from_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("quadbinFromText", {LogicalType::VARCHAR}, QuadbinTypes::quadbin(), Gen_quadbin_in)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {QuadbinTypes::quadbin()}, LogicalType::VARCHAR, Gen_quadbin_out)); -} - -void RegisterGenerated_meos_json_restrict(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_at_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TJsonbTypes::tjsonb(), Gen_tjsonb_minus_value)); -} - -void RegisterGenerated_meos_pose_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tbool(), Gen_teq_tpose_pose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {PoseTypes::tpose(), PoseTypes::pose()}, TemporalTypes::tbool(), Gen_tne_tpose_pose)); -} - -void RegisterGenerated_meos_posechain_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tpose", {PosechainTypes::tposechain()}, PoseTypes::tpose(), Gen_tposechain_to_tpose)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PosechainTypes::tposechain()}, PoseTypes::tpose(), Gen_tposechain_to_tpose)); -} - -void RegisterGenerated_meos_h3_base_hierarchy(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_h3index_cell_to_parent)); -} - -void RegisterGenerated_meos_s2cell_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {S2cellTypes::ts2cell()}, LogicalType::VARCHAR, Gen_ts2cell_out)); +void RegisterGenerated_meos_cellindex(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {H3indexTypes::th3index()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {QuadbinTypes::tquadbin()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {S2cellTypes::ts2cell()}, TemporalTypes::tint(), Gen_tcellindex_get_resolution)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {QuadbinTypes::tquadbin()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidCell", {S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tcellindex_is_valid_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_tcellindex_cell_to_parent)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {QuadbinTypes::tquadbin(), LogicalType::INTEGER}, QuadbinTypes::tquadbin(), Gen_tcellindex_cell_to_parent)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {S2cellTypes::ts2cell(), LogicalType::INTEGER}, S2cellTypes::ts2cell(), Gen_tcellindex_cell_to_parent)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {QuadbinTypes::tquadbin()}, TgeompointType::tgeompoint(), Gen_tcellindex_cell_to_point)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {S2cellTypes::ts2cell()}, TgeogpointType::tgeogpoint(), Gen_tcellindex_cell_to_point)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {H3indexTypes::th3index()}, TGeographyTypes::tgeography(), Gen_tcellindex_cell_to_boundary)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {QuadbinTypes::tquadbin()}, TGeometryTypes::tgeometry(), Gen_tcellindex_cell_to_boundary)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {S2cellTypes::ts2cell()}, TGeographyTypes::tgeography(), Gen_tcellindex_cell_to_boundary)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {H3indexTypes::th3index()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {QuadbinTypes::tquadbin()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {S2cellTypes::ts2cell()}, TemporalTypes::tfloat(), Gen_tcellindex_cell_area)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbinCellToQuadkey", {QuadbinTypes::tquadbin()}, TemporalTypes::ttext(), Gen_tquadbin_cell_to_quadkey)); +} + +void RegisterGenerated_meos_geo_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TgeompointType::tgeompoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TgeogpointType::tgeogpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TGeometryTypes::tgeometry()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TGeographyTypes::tgeography()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {CbufferTypes::tcbuffer()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TPcpointTypes::tpcpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TPcpatchTypes::tpcpatch()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::tnpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PoseTypes::tpose()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TrgeometryTypes::trgeometry()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tspatial_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_tspatial_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_tspatial_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_tspatial_transform)); +} + +void RegisterGenerated_meos_quadbin_base_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::INTEGER, Gen_quadbin_cmp)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {QuadbinTypes::quadbin()}, LogicalType::UINTEGER, Gen_quadbin_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {QuadbinTypes::quadbin(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_quadbin_hash_extended)); +} + +void RegisterGenerated_meos_s2cell_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_teq_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, TemporalTypes::tbool(), Gen_teq_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_teq_ts2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tne_s2cell_ts2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, TemporalTypes::tbool(), Gen_tne_ts2cell_s2cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tne_ts2cell_ts2cell)); +} + +void RegisterGenerated_meos_geo_box_topo(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_adjacent_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_adjacent_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contained_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contained_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contains_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contains_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_overlaps_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_overlaps_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_same_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_same_stbox_stbox)); +} + +void RegisterGenerated_meos_json_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TJsonbTypes::tjsonb()}, TJsonbTypes::jsonb(), Gen_tjsonb_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TJsonbTypes::tjsonb()}, TJsonbTypes::jsonb(), Gen_tjsonb_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueAtTimestamp", {TJsonbTypes::tjsonb(), LogicalType::TIMESTAMP_TZ}, TJsonbTypes::jsonb(), Gen_tjsonb_value_at_timestamptz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {TJsonbTypes::tjsonb(), LogicalType::INTEGER}, TJsonbTypes::jsonb(), Gen_tjsonb_value_n)); +} + +void RegisterGenerated_meos_pointcloud_box_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hasX", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hasx)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hasZ", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hasz)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hasT", {TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_hast)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TpcboxType::tpcbox()}, LogicalType::INTEGER, Gen_tpcbox_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TpcboxType::tpcbox()}, LogicalType::UINTEGER, Gen_tpcbox_pcid)); +} + +void RegisterGenerated_meos_geo_set_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_spatialset_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_spatialset_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_spatialset_set_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_spatialset_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_spatialset_transform)); + RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_spatialset_transform)); +} + +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)); +} + +void RegisterGenerated_meos_h3_metrics(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("th3EdgeLength", {H3indexTypes::th3index()}, TemporalTypes::tfloat(), Gen_th3index_edge_length)); + RegisterSerializedScalarFunction(loader, ScalarFunction("greatCircleDistance", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tgeogpoint_great_circle_distance)); +} + +void RegisterGenerated_meos_pointcloud_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TPcpointTypes::tpcpoint()}, LogicalType::VARCHAR, Gen_tpcpoint_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TPcpatchTypes::tpcpatch()}, LogicalType::VARCHAR, Gen_tpcpatch_out)); +} + +void RegisterGenerated_meos_geo_box_set(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("stboxIntersection", {StboxType::stbox(), StboxType::stbox()}, StboxType::stbox(), Gen_intersection_stbox_stbox)); + RegisterSerializedScalarFunction(loader, ScalarFunction("*", {StboxType::stbox(), StboxType::stbox()}, StboxType::stbox(), Gen_intersection_stbox_stbox)); +} + +void RegisterGenerated_meos_npoint_set_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("routes", {SetTypes::npointset()}, SetTypes::bigintset(), Gen_npointset_routes)); +} + +void RegisterGenerated_meos_h3_base_inspection(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {H3indexTypes::h3index()}, LogicalType::UINTEGER, Gen_h3index_get_resolution)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_5.cpp b/src/generated/generated_temporal_udfs_5.cpp index 72dda64d..866c801b 100644 --- a/src/generated/generated_temporal_udfs_5.cpp +++ b/src/generated/generated_temporal_udfs_5.cpp @@ -3447,237 +3447,243 @@ static void Gen_posechain_ge(DataChunk &args, ExpressionState &, Vector &result) } -// ===== @ingroup meos_h3_traversal ===== -static void Gen_h3_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_npoint_base_comp ===== +static void Gen_npoint_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_grid_disk(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); - }); -} - -static void Gen_h3_grid_ring(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_grid_ring(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_h3_grid_path_cells(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_grid_path_cells(static_cast(a0), static_cast(a1)); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_th3index_grid_distance(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_grid_distance(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_th3index_cell_to_local_ij(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_cell_to_local_ij(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_th3index_local_ij_to_cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_local_ij_to_cell(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_lt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_h3indexset_grid_disk(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = h3indexset_grid_disk(s, a2); - free(s); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_ne(s1, s2); + free(s1); free(s2); + return r; }); } - -// ===== @ingroup meos_quadbin_base_comp ===== -static void Gen_quadbin_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_same(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_eq(static_cast(a0), static_cast(a1)); - return (bool) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_same(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_ne(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_ne(static_cast(a0), static_cast(a1)); - return (bool) r; - }); -} -static void Gen_quadbin_lt(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_hierarchy ===== +static void Gen_h3_cell_to_children(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_lt(static_cast(a0), static_cast(a1)); - return (bool) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_cell_to_children(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_quadbin_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cell_to_parent_next(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_le(static_cast(a0), static_cast(a1)); - return (bool) r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_cell_to_parent_next(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_quadbin_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cell_to_center_child(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_gt(static_cast(a0), static_cast(a1)); - return (bool) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_cell_to_center_child(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_quadbin_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cell_to_center_child_next(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_ge(static_cast(a0), static_cast(a1)); - return (bool) r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_cell_to_center_child_next(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_quadbin_cmp(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cell_to_child_pos(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, int64_t a1) -> int32_t { - int32_t r = quadbin_cmp(static_cast(a0), static_cast(a1)); - return (int32_t) r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_cell_to_child_pos(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_quadbin_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_child_pos_to_cell(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> uint32_t { - uint32_t r = quadbin_hash(static_cast(a0)); - return r; + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in1, string_t in2, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = th3index_child_pos_to_cell(t1, t2, a2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_quadbin_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3_uncompact_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](int64_t a0, uint64_t a1) -> uint64_t { - uint64_t r = quadbin_hash_extended(static_cast(a0), a1); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Set *s = BlobToSet(a); + Set *r = h3_uncompact_cells(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_s2cell_comp_temp ===== -static void Gen_teq_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_text ===== +static void Gen_textcat_text_ttext(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = teq_s2cell_ts2cell((uint64_t) a1, t); - free(t); + text *a1t = MakeText(a1); + Temporal *r = textcat_text_ttext(a1t, t); + free(a1t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_textcat_ttext_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = teq_ts2cell_s2cell(t, (uint64_t) a2); - free(t); + text *a2t = MakeText(a2); + Temporal *r = textcat_ttext_text(t, a2t); + free(a2t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_textcat_ttext_ttext(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - Temporal *r = teq_ts2cell_ts2cell(t1, t2); + Temporal *r = textcat_ttext_ttext(t1, t2); free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttext_initcap(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tne_s2cell_ts2cell((uint64_t) a1, t); + Temporal *r = ttext_initcap(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttext_upper(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tne_ts2cell_s2cell(t, (uint64_t) a2); + Temporal *r = ttext_upper(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttext_lower(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tne_ts2cell_ts2cell(t1, t2); - free(t1); free(t2); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = ttext_lower(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_geopose_accessor ===== -static void Gen_tpose_apply_geo(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_comp_temp ===== +static void Gen_teq_geo_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 { @@ -3687,63 +3693,56 @@ static void Gen_tpose_apply_geo(DataChunk &args, ExpressionState &, Vector &resu GSERIALIZED *gs_geog = geom_to_geog(gs); free(gs); gs = gs_geog; } - Temporal *r = tpose_apply_geo(t, gs); + Temporal *r = teq_geo_trgeometry(gs, t); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_yaw(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_trgeometry_geo(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpose_yaw(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tpose_pitch(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpose_pitch(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tpose_roll(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpose_roll(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = teq_trgeometry_geo(t, gs); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_speed(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_geo_trgeometry(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpose_speed(t); - free(t); + 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 = tne_geo_trgeometry(gs, t); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_angular_speed(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_trgeometry_geo(DataChunk &args, ExpressionState &, 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); - Temporal *r = tpose_angular_speed(t); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tne_trgeometry_geo(t, gs); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } @@ -3809,106 +3808,130 @@ static void Gen_nsegment_start_position(DataChunk &args, ExpressionState &, Vect } -// ===== @ingroup meos_posechain_base_inout ===== -static void Gen_posechain_as_text(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_inout ===== +static void Gen_trgeometry_as_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_text(s, a2); - free(s); + [&](string_t in, int32_t a2) { + Temporal *t = BlobToTemporal(in); + char * r = trgeometry_as_text(t, a2); + free(t); return TakeCString(result, r); }); } -static void Gen_posechain_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_text(s, 15); - free(s); + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = trgeometry_as_text(t, 15); + free(t); return TakeCString(result, r); }); } -static void Gen_posechain_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2) { + Temporal *t = BlobToTemporal(in); + char * r = trgeometry_as_ewkt(t, a2); + free(t); + return TakeCString(result, r); + }); +} + +static void Gen_trgeometry_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = trgeometry_as_ewkt(t, 15); + free(t); + return TakeCString(result, r); + }); +} + + +// ===== @ingroup meos_pose_base_inout ===== +static void Gen_pose_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_ewkt(s, a2); + Pose *s = BlobToPose(a); + char *r = pose_as_ewkt(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_posechain_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_ewkt(s, 15); + Pose *s = BlobToPose(a); + char *r = pose_as_ewkt(s, 15); free(s); return TakeCString(result, r); }); } - -// ===== @ingroup meos_geo_set_srid ===== -static void Gen_spatialset_set_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_as_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = spatialset_set_srid(s, a2); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, int32_t a2) { + Pose *s = BlobToPose(a); + char *r = pose_as_text(s, a2); free(s); - return SetToBlobN(result, r, mask, idx); + return TakeCString(result, r); }); } -static void Gen_spatialset_transform(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Set *s = BlobToSet(a); - Set *r = spatialset_transform(s, a2); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + Pose *s = BlobToPose(a); + char *r = pose_as_text(s, 15); free(s); - return SetToBlobN(result, r, mask, idx); + return TakeCString(result, r); }); } -// ===== @ingroup meos_pose_accessor ===== -static void Gen_tpose_end_value(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_comp_temp ===== +static void Gen_teq_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pose * r = tpose_end_value(t); - free(t); - return PoseToBlobN(result, r, mask, idx); + PoseChain *a2p = BlobToPosechain(a2); + Temporal *r = teq_tposechain_posechain(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_start_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Pose * r = tpose_start_value(t); - free(t); - return PoseToBlobN(result, r, mask, idx); + PoseChain *a2p = BlobToPosechain(a2); + Temporal *r = tne_tposechain_posechain(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_trajectory(DataChunk &args, ExpressionState &state, Vector &result) { + +// ===== @ingroup meos_h3_base_latlng ===== +static void Gen_h3index_cell_to_point(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 = tpose_trajectory(t); - free(t); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + GSERIALIZED * r = h3index_cell_to_point(static_cast(a0)); if (!r) { mask.SetInvalid(idx); return string_t(); } string_t out = GSerializedToGeometry(r, state, result); free(r); @@ -3916,90 +3939,110 @@ static void Gen_tpose_trajectory(DataChunk &args, ExpressionState &state, Vector }); } - -// ===== @ingroup meos_h3_metrics ===== -static void Gen_th3index_edge_length(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_cell_to_boundary(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); - Temporal *r = th3index_edge_length(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + GSERIALIZED * r = h3index_cell_to_boundary(static_cast(a0)); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; }); } -static void Gen_tgeogpoint_great_circle_distance(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tgeogpoint_great_circle_distance(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); + +// ===== @ingroup meos_s2cell_set_accessor ===== +static void Gen_s2cellset_values(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Set *in = BlobToSet(blob); + int count = 0; + uint64_t * arr = s2cellset_values(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } } -// ===== @ingroup meos_pointcloud_inout ===== -static void Gen_tpcpoint_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_npoint_base_srid ===== +static void Gen_npoint_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), + UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = tpcpoint_out(t); - free(t); - return TakeCString(result, r); + Npoint *v = BlobToNpoint(in); + int32_t r = npoint_srid(v); + free(v); + return r; }); } -static void Gen_tpcpatch_out(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nsegment_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), + UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = tpcpatch_out(t); - free(t); - return TakeCString(result, r); + Nsegment *v = BlobToNsegment(in); + int32_t r = nsegment_srid(v); + free(v); + return r; }); } -// ===== @ingroup meos_geo_box_set ===== -static void Gen_intersection_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_accessor ===== +static void Gen_tposechain_num_poses(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - STBox *r = intersection_stbox_stbox(s1, s2); - free(s1); free(s2); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return StboxToBlob(result, r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + int32_t r = tposechain_num_poses(t); + free(t); + return (int32_t) r; }); } -// ===== @ingroup meos_npoint_set_accessor ===== -static void Gen_npointset_routes(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_inout ===== +static void Gen_tquadbin_out(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 = npointset_routes(s); - free(s); - return SetToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Temporal *t = BlobToTemporal(in); + char * r = tquadbin_out(t); + free(t); + return TakeCString(result, r); }); } -// ===== @ingroup meos_h3_base_inspection ===== -static void Gen_h3index_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_base_srid ===== +static void Gen_cbuffer_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> uint32_t { - uint32_t r = h3index_get_resolution(static_cast(a0)); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Cbuffer *v = BlobToCbuffer(in); + int32_t r = cbuffer_srid(v); + free(v); return r; }); } @@ -4689,46 +4732,50 @@ void RegisterGenerated_meos_posechain_base_comp(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {PosechainTypes::posechain(), PosechainTypes::posechain()}, LogicalType::BOOLEAN, Gen_posechain_ge)); } -void RegisterGenerated_meos_h3_traversal(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_grid_disk)); - RegisterSerializedScalarFunction(loader, ScalarFunction("h3GridRing", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_grid_ring)); - RegisterSerializedScalarFunction(loader, ScalarFunction("h3GridPathCells", {H3indexTypes::h3index(), H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3_grid_path_cells)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3GridDistance", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDistance", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<->", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbigint(), Gen_th3index_grid_distance)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToLocalIj", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TgeompointType::tgeompoint(), Gen_th3index_cell_to_local_ij)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3LocalIjToCell", {H3indexTypes::th3index(), H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_local_ij_to_cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gridDisk", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3indexset_grid_disk)); -} - -void RegisterGenerated_meos_quadbin_base_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::BOOLEAN, Gen_quadbin_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("cmp", {QuadbinTypes::quadbin(), QuadbinTypes::quadbin()}, LogicalType::INTEGER, Gen_quadbin_cmp)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {QuadbinTypes::quadbin()}, LogicalType::UINTEGER, Gen_quadbin_hash)); - RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {QuadbinTypes::quadbin(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_quadbin_hash_extended)); -} - -void RegisterGenerated_meos_s2cell_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_teq_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, TemporalTypes::tbool(), Gen_teq_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_teq_ts2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::s2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tne_s2cell_ts2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::s2cell()}, TemporalTypes::tbool(), Gen_tne_ts2cell_s2cell)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {S2cellTypes::ts2cell(), S2cellTypes::ts2cell()}, TemporalTypes::tbool(), Gen_tne_ts2cell_ts2cell)); -} - -void RegisterGenerated_meos_pose_geopose_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {MobilityDuckGeometryType(), PoseTypes::tpose()}, TgeompointType::tgeompoint(), Gen_tpose_apply_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_yaw)); - RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_pitch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_roll)); - RegisterSerializedScalarFunction(loader, ScalarFunction("speed", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_speed)); - RegisterSerializedScalarFunction(loader, ScalarFunction("angularSpeed", {PoseTypes::tpose()}, TemporalTypes::tfloat(), Gen_tpose_angular_speed)); +void RegisterGenerated_meos_npoint_base_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_same)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_same)); +} + +void RegisterGenerated_meos_h3_hierarchy(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToChildren", {H3indexTypes::h3index(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_cell_to_children)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToParent", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cell_to_parent_next)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToCenterChild", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_th3index_cell_to_center_child)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToCenterChild", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cell_to_center_child_next)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellToChildPos", {H3indexTypes::th3index(), LogicalType::INTEGER}, TemporalTypes::tbigint(), Gen_th3index_cell_to_child_pos)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3ChildPosToCell", {H3indexTypes::th3index(), H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::th3index(), Gen_th3index_child_pos_to_cell)); + RegisterSerializedScalarFunction(loader, ScalarFunction("uncompactCells", {H3indexTypes::h3indexset(), LogicalType::INTEGER}, H3indexTypes::h3indexset(), Gen_h3_uncompact_cells)); +} + +void RegisterGenerated_meos_temporal_text(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {LogicalType::VARCHAR, TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_text_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("||", {LogicalType::VARCHAR, TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_text_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_textcat_ttext_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_textcat_ttext_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TemporalTypes::ttext(), TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_ttext_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TemporalTypes::ttext(), TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_ttext_ttext)); + RegisterSerializedScalarFunction(loader, ScalarFunction("initcap", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_initcap)); + RegisterSerializedScalarFunction(loader, ScalarFunction("upper", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_upper)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lower", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_lower)); +} + +void RegisterGenerated_meos_rgeo_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tbool(), Gen_teq_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_trgeometry_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tbool(), Gen_tne_geo_trgeometry)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_trgeometry_geo)); } void RegisterGenerated_meos_npoint_base_accessor(ExtensionLoader &loader) { @@ -4739,49 +4786,45 @@ void RegisterGenerated_meos_npoint_base_accessor(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("startPosition", {NpointTypes::nsegment()}, LogicalType::DOUBLE, Gen_nsegment_start_position)); } -void RegisterGenerated_meos_posechain_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::posechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_posechain_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PosechainTypes::posechain()}, LogicalType::VARCHAR, Gen_posechain_as_text_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::posechain(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_posechain_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PosechainTypes::posechain()}, LogicalType::VARCHAR, Gen_posechain_as_ewkt_d)); +void RegisterGenerated_meos_rgeo_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_trgeometry_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TrgeometryTypes::trgeometry()}, LogicalType::VARCHAR, Gen_trgeometry_as_text_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_trgeometry_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {TrgeometryTypes::trgeometry()}, LogicalType::VARCHAR, Gen_trgeometry_as_ewkt_d)); } -void RegisterGenerated_meos_geo_set_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_spatialset_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_spatialset_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_spatialset_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::cbufferset(), LogicalType::INTEGER}, SetTypes::cbufferset(), Gen_spatialset_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::poseset(), LogicalType::INTEGER}, SetTypes::poseset(), Gen_spatialset_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {SetTypes::posechainset(), LogicalType::INTEGER}, SetTypes::posechainset(), Gen_spatialset_transform)); +void RegisterGenerated_meos_pose_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::pose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_pose_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::pose()}, LogicalType::VARCHAR, Gen_pose_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::pose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_pose_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::pose()}, LogicalType::VARCHAR, Gen_pose_as_text_d)); } -void RegisterGenerated_meos_pose_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {PoseTypes::tpose()}, PoseTypes::pose(), Gen_tpose_end_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {PoseTypes::tpose()}, PoseTypes::pose(), Gen_tpose_start_value)); - RegisterSerializedScalarFunction(loader, ScalarFunction("trajectory", {PoseTypes::tpose()}, MobilityDuckGeometryType(), Gen_tpose_trajectory)); +void RegisterGenerated_meos_posechain_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, TemporalTypes::tbool(), Gen_teq_tposechain_posechain)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, TemporalTypes::tbool(), Gen_tne_tposechain_posechain)); } -void RegisterGenerated_meos_h3_metrics(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("th3EdgeLength", {H3indexTypes::th3index()}, TemporalTypes::tfloat(), Gen_th3index_edge_length)); - RegisterSerializedScalarFunction(loader, ScalarFunction("greatCircleDistance", {TgeogpointType::tgeogpoint(), TgeogpointType::tgeogpoint()}, TemporalTypes::tfloat(), Gen_tgeogpoint_great_circle_distance)); +void RegisterGenerated_meos_h3_base_latlng(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToPoint", {H3indexTypes::h3index()}, MobilityDuckGeometryType(), Gen_h3index_cell_to_point)); + RegisterSerializedScalarFunction(loader, ScalarFunction("cellToBoundary", {H3indexTypes::h3index()}, MobilityDuckGeometryType(), Gen_h3index_cell_to_boundary)); } -void RegisterGenerated_meos_pointcloud_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TPcpointTypes::tpcpoint()}, LogicalType::VARCHAR, Gen_tpcpoint_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TPcpatchTypes::tpcpatch()}, LogicalType::VARCHAR, Gen_tpcpatch_out)); +void RegisterGenerated_meos_npoint_base_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::npoint()}, LogicalType::INTEGER, Gen_npoint_srid)); + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::nsegment()}, LogicalType::INTEGER, Gen_nsegment_srid)); } -void RegisterGenerated_meos_geo_box_set(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("stboxIntersection", {StboxType::stbox(), StboxType::stbox()}, StboxType::stbox(), Gen_intersection_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("*", {StboxType::stbox(), StboxType::stbox()}, StboxType::stbox(), Gen_intersection_stbox_stbox)); +void RegisterGenerated_meos_posechain_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("numPoses", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tposechain_num_poses)); } -void RegisterGenerated_meos_npoint_set_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("routes", {SetTypes::npointset()}, SetTypes::bigintset(), Gen_npointset_routes)); +void RegisterGenerated_meos_quadbin_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {QuadbinTypes::tquadbin()}, LogicalType::VARCHAR, Gen_tquadbin_out)); } -void RegisterGenerated_meos_h3_base_inspection(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {H3indexTypes::h3index()}, LogicalType::UINTEGER, Gen_h3index_get_resolution)); +void RegisterGenerated_meos_cbuffer_base_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {CbufferTypes::cbuffer()}, LogicalType::INTEGER, Gen_cbuffer_srid)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_6.cpp b/src/generated/generated_temporal_udfs_6.cpp index 4b1a07a3..a4c234e9 100644 --- a/src/generated/generated_temporal_udfs_6.cpp +++ b/src/generated/generated_temporal_udfs_6.cpp @@ -2074,276 +2074,304 @@ static void Gen_ever_ne_tposechain_tposechain(DataChunk &args, ExpressionState & } -// ===== @ingroup meos_geo_comp_temp ===== -static void Gen_teq_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_base_comp ===== +static void Gen_pose_hash(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 = teq_geo_tgeo(gs, t); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + Pose *v = BlobToPose(in); + uint32_t r = pose_hash(v); + free(v); + return r; }); } -static void Gen_teq_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = teq_tgeo_geo(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + Pose *s = BlobToPose(in); + uint64_t r = pose_hash_extended(s, a2); + free(s); + return r; }); } -static void Gen_tne_geo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_eq(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 = tne_geo_tgeo(gs, t); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tne_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in_t, string_t in_g, 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 = tne_tgeo_geo(t, gs); - free(t); free(gs); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_ge(s1, s2); + free(s1); free(s2); + return r; }); } - -// ===== @ingroup meos_geo_srid ===== -static void Gen_tspatial_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Temporal *t = BlobToTemporal(in); - int32_t r = tspatial_srid(t); - free(t); - return (int32_t) r; + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tspatial_set_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tspatial_set_srid(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tspatial_transform(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tspatial_transform(t, a2); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_lt(s1, s2); + free(s1); free(s2); + return r; }); } +static void Gen_pose_ne(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_ne(s1, s2); + free(s1); free(s2); + return r; + }); +} -// ===== @ingroup meos_quadbin_conversion ===== -static void Gen_bigint_to_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_same(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](int64_t a0) -> int64_t { - uint64_t r = bigint_to_quadbin(a0); - return static_cast(r); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + Pose *s1 = BlobToPose(a); + Pose *s2 = BlobToPose(b); + bool r = pose_same(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tbigint_to_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_temporal_bool ===== +static void Gen_tand_bool_tbool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](bool a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tbigint_to_tquadbin(t); + Temporal *r = tand_bool_tbool(a1, t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tquadbin_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tand_tbool_bool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tquadbin_to_tbigint(t); + Temporal *r = tand_tbool_bool(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeogpoint_to_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tand_tbool_tbool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeogpoint_to_tquadbin(t, a2, a3); - free(t); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tand_tbool_tbool(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeogpoint_to_tquadbin_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tnot_tbool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeogpoint_to_tquadbin(t, a2, true); + Temporal *r = tnot_tbool(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tor_bool_tbool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](bool a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeompoint_to_tquadbin(t, a2, a3); + Temporal *r = tor_bool_tbool(a1, t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_tquadbin_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tor_tbool_bool(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, bool a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeompoint_to_tquadbin(t, a2, true); + Temporal *r = tor_tbool_bool(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } +static void Gen_tor_tbool_tbool(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tor_tbool_tbool(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + -// ===== @ingroup meos_pointcloud_box_comp ===== -static void Gen_tpcbox_eq(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_edges ===== +static void Gen_h3_origin_to_directed_edges(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_eq(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3_origin_to_directed_edges(static_cast(a0)); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_tpcbox_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_are_neighbor_cells(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_ne(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = th3index_are_neighbor_cells(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcbox_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cells_to_directed_edge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_lt(s1, s2); - free(s1); free(s2); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = th3index_cells_to_directed_edge(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcbox_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_is_valid_directed_edge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_le(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_is_valid_directed_edge(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcbox_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_get_directed_edge_origin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_gt(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_get_directed_edge_origin(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcbox_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_get_directed_edge_destination(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = tpcbox_ge(s1, s2); - free(s1); free(s2); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = th3index_get_directed_edge_destination(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_th3index_directed_edge_to_boundary(DataChunk &args, ExpressionState &, 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); + Temporal *r = th3index_directed_edge_to_boundary(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_rgeo_comp_temp ===== -static void Gen_teq_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_restrict ===== +static void Gen_tpose_at_geom(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 { + [&](string_t in_t, string_t in_g, 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 = teq_geo_trgeometry(gs, t); + Temporal *r = tpose_at_geom(t, gs); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_at_pose(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pose *a2p = BlobToPose(a2); + Temporal *r = tpose_at_pose(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tpose_minus_geom(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> string_t { @@ -2353,29 +2381,91 @@ static void Gen_teq_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &r GSERIALIZED *gs_geog = geom_to_geog(gs); free(gs); gs = gs_geog; } - Temporal *r = teq_trgeometry_geo(t, gs); + Temporal *r = tpose_minus_geom(t, gs); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_minus_pose(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 { + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pose *a2p = BlobToPose(a2); + Temporal *r = tpose_minus_pose(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tpose_at_elevation(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + Temporal *r = tpose_at_elevation(t, cc); + free(t); free(cc); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tpose_minus_elevation(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(a); + Span *cc = BlobToSpan(b); + Temporal *r = tpose_minus_elevation(t, cc); + free(t); free(cc); + return TemporalToBlobN(result, r, mask, idx); + }); +} + + +// ===== @ingroup meos_cbuffer_restrict ===== +static void Gen_tcbuffer_at_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = tcbuffer_at_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tcbuffer_at_geom(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, 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 = tne_geo_trgeometry(gs, t); + Temporal *r = tcbuffer_at_geom(t, gs); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_minus_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer *a2p = BlobToCbuffer(a2); + Temporal *r = tcbuffer_minus_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tcbuffer_minus_geom(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> string_t { @@ -2385,169 +2475,155 @@ static void Gen_tne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &r GSERIALIZED *gs_geog = geom_to_geog(gs); free(gs); gs = gs_geog; } - Temporal *r = tne_trgeometry_geo(t, gs); + Temporal *r = tcbuffer_minus_geom(t, gs); free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_base_geopose ===== -static void Gen_tpose_as_geopose_stream(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_comp_temp ===== +static void Gen_teq_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tpose_as_geopose_stream(t, a2); - free(t); - return TakeCString(result, r); + Pcpoint *a2p = BlobToPcpoint(a2); + Temporal *r = teq_tpcpoint_pcpoint(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_as_geopose_stream_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tpose_as_geopose_stream(t, -1); - free(t); - return TakeCString(result, r); - }); -} - -static void Gen_pose_yaw(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Pose *v = BlobToPose(in); - double r = pose_yaw(v); - free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return r; + Pcpoint *a2p = BlobToPcpoint(a2); + Temporal *r = tne_tpcpoint_pcpoint(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_pitch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Pose *v = BlobToPose(in); - double r = pose_pitch(v); - free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpatch *a2p = BlobToPcpatch(a2); + Temporal *r = teq_tpcpatch_pcpatch(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_pose_roll(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> double { - Pose *v = BlobToPose(in); - double r = pose_roll(v); - free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Pcpatch *a2p = BlobToPcpatch(a2); + Temporal *r = tne_tpcpatch_pcpatch(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_cbuffer_conversion ===== -static void Gen_tcbuffer_to_tfloat(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_accessor ===== +static void Gen_tpcpoint_start_value(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcbuffer_to_tfloat(t); + Pcpoint * r = tpcpoint_start_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return PcpointToBlobN(result, r, mask, idx); }); } -static void Gen_tcbuffer_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpoint_end_value(DataChunk &args, ExpressionState &, 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); - Temporal *r = tcbuffer_to_tgeompoint(t); + Pcpoint * r = tpcpoint_end_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return PcpointToBlobN(result, r, mask, idx); }); } -static void Gen_tgeometry_to_tcbuffer(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_start_value(DataChunk &args, ExpressionState &, 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); - Temporal *r = tgeometry_to_tcbuffer(t); + Pcpatch * r = tpcpatch_start_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return PcpatchToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_cbuffer_transf ===== -static void Gen_tcbuffer_expand(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tcbuffer_expand(t, a2); + Pcpatch * r = tpcpatch_end_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return PcpatchToBlobN(result, r, mask, idx); }); } -static void Gen_tcbuffer_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_cbuffer_accessor ===== +static void Gen_tcbuffer_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tcbuffer_rotate_z(t, a2); + Cbuffer * r = tcbuffer_end_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return CbufferToBlobN(result, r, mask, idx); }); } -static void Gen_tcbuffer_translate(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_convex_hull(DataChunk &args, ExpressionState &state, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, double a2, double a3, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tcbuffer_translate(t, a2, a3); + GSERIALIZED * r = tcbuffer_convex_hull(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; }); } - -// ===== @ingroup meos_s2cell_base_inout ===== -static void Gen_s2cell_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_start_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a0) -> int64_t { - uint64_t r = s2cell_from_hexwkb(a0.GetString().c_str()); - return static_cast(r); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Cbuffer * r = tcbuffer_start_value(t); + free(t); + return CbufferToBlobN(result, r, mask, idx); }); } -static void Gen_s2cell_in(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t a0) -> int64_t { - uint64_t r = s2cell_in(a0.GetString().c_str()); - return static_cast(r); - }); -} -static void Gen_s2cell_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_internal_temporal_inout ===== +static void Gen_temporal_from_mfjson(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - char * r = s2cell_out(static_cast(a0)); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return TakeCString(result, r); + MeosType temptype = TemporalHelpers::GetTemptypeFromAlias(result.GetType().GetAlias().c_str()); + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *r = temporal_from_mfjson(in.GetString().c_str(), temptype); + return TemporalToBlobN(result, r, mask, idx); }); } @@ -2642,28 +2718,26 @@ static void Gen_posechain_num_poses(DataChunk &args, ExpressionState &, Vector & } -// ===== @ingroup meos_quadbin_inout ===== -static void Gen_tquadbin_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_set_inout ===== +static void Gen_s2cellset_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Temporal *t = BlobToTemporal(in); - char * r = tquadbin_out(t); - free(t); + Set *s = BlobToSet(in); + char * r = s2cellset_out(s); + free(s); return TakeCString(result, r); }); } -// ===== @ingroup meos_pose_base_srid ===== -static void Gen_pose_srid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_base_metrics ===== +static void Gen_h3index_cell_area(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Pose *v = BlobToPose(in); - int32_t r = pose_srid(v); - free(v); - return r; + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> double { + double r = h3index_cell_area(static_cast(a0)); + return (double) r; }); } @@ -3624,117 +3698,96 @@ void RegisterGenerated_meos_posechain_comp_ever(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("?<>", {PosechainTypes::tposechain(), PosechainTypes::tposechain()}, LogicalType::BOOLEAN, Gen_ever_ne_tposechain_tposechain)); } -void RegisterGenerated_meos_geo_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tbool(), Gen_teq_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TgeompointType::tgeompoint()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TgeogpointType::tgeogpoint()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TGeometryTypes::tgeometry()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TGeographyTypes::tgeography()}, TemporalTypes::tbool(), Gen_tne_geo_tgeo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TgeogpointType::tgeogpoint(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TGeometryTypes::tgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TGeographyTypes::tgeography(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_tgeo_geo)); -} - -void RegisterGenerated_meos_geo_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TgeompointType::tgeompoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TgeogpointType::tgeogpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TGeometryTypes::tgeometry()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TGeographyTypes::tgeography()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {CbufferTypes::tcbuffer()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TPcpointTypes::tpcpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TPcpatchTypes::tpcpatch()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {NpointTypes::tnpoint()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PoseTypes::tpose()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {TrgeometryTypes::trgeometry()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tspatial_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("setSRID", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_tspatial_set_srid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, TgeompointType::tgeompoint(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, TgeogpointType::tgeogpoint(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TGeometryTypes::tgeometry(), LogicalType::INTEGER}, TGeometryTypes::tgeometry(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TGeographyTypes::tgeography(), LogicalType::INTEGER}, TGeographyTypes::tgeography(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {CbufferTypes::tcbuffer(), LogicalType::INTEGER}, CbufferTypes::tcbuffer(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {PoseTypes::tpose(), LogicalType::INTEGER}, PoseTypes::tpose(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {TrgeometryTypes::trgeometry(), LogicalType::INTEGER}, TrgeometryTypes::trgeometry(), Gen_tspatial_transform)); - RegisterSerializedScalarFunction(loader, ScalarFunction("transform", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::tposechain(), Gen_tspatial_transform)); -} - -void RegisterGenerated_meos_quadbin_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("quadbin", {LogicalType::BIGINT}, QuadbinTypes::quadbin(), Gen_bigint_to_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {LogicalType::BIGINT}, QuadbinTypes::quadbin(), Gen_bigint_to_quadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TemporalTypes::tbigint()}, QuadbinTypes::tquadbin(), Gen_tbigint_to_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, QuadbinTypes::tquadbin(), Gen_tbigint_to_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {QuadbinTypes::tquadbin()}, TemporalTypes::tbigint(), Gen_tquadbin_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {QuadbinTypes::tquadbin()}, TemporalTypes::tbigint(), Gen_tquadbin_to_tbigint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_tgeogpoint_to_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, QuadbinTypes::tquadbin(), Gen_tgeogpoint_to_tquadbin_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TgeompointType::tgeompoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_tgeompoint_to_tquadbin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, QuadbinTypes::tquadbin(), Gen_tgeompoint_to_tquadbin_d)); -} - -void RegisterGenerated_meos_pointcloud_box_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ge)); -} - -void RegisterGenerated_meos_rgeo_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tbool(), Gen_teq_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_teq_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry()}, TemporalTypes::tbool(), Gen_tne_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TemporalTypes::tbool(), Gen_tne_trgeometry_geo)); -} - -void RegisterGenerated_meos_pose_base_geopose(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPoseStream", {PoseTypes::tpose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tpose_as_geopose_stream)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asGeoPoseStream", {PoseTypes::tpose()}, LogicalType::VARCHAR, Gen_tpose_as_geopose_stream_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("yaw", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_yaw)); - RegisterSerializedScalarFunction(loader, ScalarFunction("pitch", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_pitch)); - RegisterSerializedScalarFunction(loader, ScalarFunction("roll", {PoseTypes::pose()}, LogicalType::DOUBLE, Gen_pose_roll)); -} - -void RegisterGenerated_meos_cbuffer_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tfloat", {CbufferTypes::tcbuffer()}, TemporalTypes::tfloat(), Gen_tcbuffer_to_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, TemporalTypes::tfloat(), Gen_tcbuffer_to_tfloat)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {CbufferTypes::tcbuffer()}, TgeompointType::tgeompoint(), Gen_tcbuffer_to_tgeompoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {CbufferTypes::tcbuffer()}, TgeompointType::tgeompoint(), Gen_tcbuffer_to_tgeompoint)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tcbuffer", {TGeometryTypes::tgeometry()}, CbufferTypes::tcbuffer(), Gen_tgeometry_to_tcbuffer)); - RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, CbufferTypes::tcbuffer(), Gen_tgeometry_to_tcbuffer)); -} - -void RegisterGenerated_meos_cbuffer_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("expand", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_expand)); - RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_rotate_z)); - RegisterSerializedScalarFunction(loader, ScalarFunction("translate", {CbufferTypes::tcbuffer(), LogicalType::DOUBLE, LogicalType::DOUBLE}, CbufferTypes::tcbuffer(), Gen_tcbuffer_translate)); -} - -void RegisterGenerated_meos_s2cell_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("s2cellFromHexWKB", {LogicalType::VARCHAR}, S2cellTypes::s2cell(), Gen_s2cell_from_hexwkb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("s2cellFromText", {LogicalType::VARCHAR}, S2cellTypes::s2cell(), Gen_s2cell_in)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {S2cellTypes::s2cell()}, LogicalType::VARCHAR, Gen_s2cell_out)); +void RegisterGenerated_meos_pose_base_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {PoseTypes::pose()}, LogicalType::UINTEGER, Gen_pose_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {PoseTypes::pose(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_pose_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("same", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_same)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {PoseTypes::pose(), PoseTypes::pose()}, LogicalType::BOOLEAN, Gen_pose_same)); +} + +void RegisterGenerated_meos_temporal_bool(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_bool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_bool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tand_tbool_bool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tand_tbool_bool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tAnd", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_tbool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("&", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tand_tbool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNot", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tnot_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("~", {TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tnot_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_bool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|", {LogicalType::BOOLEAN, TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_bool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tor_tbool_bool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|", {TemporalTypes::tbool(), LogicalType::BOOLEAN}, TemporalTypes::tbool(), Gen_tor_tbool_bool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tOr", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_tbool_tbool)); + RegisterSerializedScalarFunction(loader, ScalarFunction("|", {TemporalTypes::tbool(), TemporalTypes::tbool()}, TemporalTypes::tbool(), Gen_tor_tbool_tbool)); +} + +void RegisterGenerated_meos_h3_edges(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("h3OriginToDirectedEdges", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3_origin_to_directed_edges)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3AreNeighborCells", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_are_neighbor_cells)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellsToDirectedEdge", {H3indexTypes::th3index(), H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cells_to_directed_edge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("isValidDirectedEdge", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_is_valid_directed_edge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetDirectedEdgeOrigin", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_get_directed_edge_origin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetDirectedEdgeDestination", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_get_directed_edge_destination)); + RegisterSerializedScalarFunction(loader, ScalarFunction("th3DirectedEdgeToBoundary", {H3indexTypes::th3index()}, TGeographyTypes::tgeography(), Gen_th3index_directed_edge_to_boundary)); +} + +void RegisterGenerated_meos_pose_restrict(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {PoseTypes::tpose(), MobilityDuckGeometryType()}, PoseTypes::tpose(), Gen_tpose_at_geom)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_at_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {PoseTypes::tpose(), MobilityDuckGeometryType()}, PoseTypes::tpose(), Gen_tpose_minus_geom)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {PoseTypes::tpose(), PoseTypes::pose()}, PoseTypes::tpose(), Gen_tpose_minus_pose)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atElevation", {PoseTypes::tpose(), SpanTypes::floatspan()}, PoseTypes::tpose(), Gen_tpose_at_elevation)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusElevation", {PoseTypes::tpose(), SpanTypes::floatspan()}, PoseTypes::tpose(), Gen_tpose_minus_elevation)); +} + +void RegisterGenerated_meos_cbuffer_restrict(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("atValue", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_at_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("atGeometry", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_at_geom)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusValue", {CbufferTypes::tcbuffer(), CbufferTypes::cbuffer()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_minus_cbuffer)); + RegisterSerializedScalarFunction(loader, ScalarFunction("minusGeometry", {CbufferTypes::tcbuffer(), MobilityDuckGeometryType()}, CbufferTypes::tcbuffer(), Gen_tcbuffer_minus_geom)); +} + +void RegisterGenerated_meos_pointcloud_comp_temp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TemporalTypes::tbool(), Gen_teq_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TPcpointTypes::tpcpoint(), TPcpointTypes::pcpoint()}, TemporalTypes::tbool(), Gen_tne_tpcpoint_pcpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TemporalTypes::tbool(), Gen_teq_tpcpatch_pcpatch)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TPcpatchTypes::tpcpatch(), TPcpatchTypes::pcpatch()}, TemporalTypes::tbool(), Gen_tne_tpcpatch_pcpatch)); +} + +void RegisterGenerated_meos_pointcloud_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TPcpointTypes::tpcpoint()}, TPcpointTypes::pcpoint(), Gen_tpcpoint_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TPcpointTypes::tpcpoint()}, TPcpointTypes::pcpoint(), Gen_tpcpoint_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {TPcpatchTypes::tpcpatch()}, TPcpatchTypes::pcpatch(), Gen_tpcpatch_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {TPcpatchTypes::tpcpatch()}, TPcpatchTypes::pcpatch(), Gen_tpcpatch_end_value)); +} + +void RegisterGenerated_meos_cbuffer_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {CbufferTypes::tcbuffer()}, CbufferTypes::cbuffer(), Gen_tcbuffer_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("convexHull", {CbufferTypes::tcbuffer()}, MobilityDuckGeometryType(), Gen_tcbuffer_convex_hull)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {CbufferTypes::tcbuffer()}, CbufferTypes::cbuffer(), Gen_tcbuffer_start_value)); +} + +void RegisterGenerated_meos_internal_temporal_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompointFromMFJSON", {LogicalType::VARCHAR}, TgeompointType::tgeompoint(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeogpointFromMFJSON", {LogicalType::VARCHAR}, TgeogpointType::tgeogpoint(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tboolFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tbool(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tintFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tint(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigintFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tbigint(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tfloatFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::tfloat(), Gen_temporal_from_mfjson)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ttextFromMFJSON", {LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_temporal_from_mfjson)); } void RegisterGenerated_meos_npoint_restrict(ExtensionLoader &loader) { @@ -3750,12 +3803,12 @@ void RegisterGenerated_meos_posechain_base_accessor(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("numPoses", {PosechainTypes::posechain()}, LogicalType::INTEGER, Gen_posechain_num_poses)); } -void RegisterGenerated_meos_quadbin_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {QuadbinTypes::tquadbin()}, LogicalType::VARCHAR, Gen_tquadbin_out)); +void RegisterGenerated_meos_s2cell_set_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::s2cellset()}, LogicalType::VARCHAR, Gen_s2cellset_out)); } -void RegisterGenerated_meos_pose_base_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PoseTypes::pose()}, LogicalType::INTEGER, Gen_pose_srid)); +void RegisterGenerated_meos_h3_base_metrics(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {H3indexTypes::h3index()}, LogicalType::DOUBLE, Gen_h3index_cell_area)); } } // namespace duckdb diff --git a/src/generated/generated_temporal_udfs_7.cpp b/src/generated/generated_temporal_udfs_7.cpp index 40a8a68e..42a7024f 100644 --- a/src/generated/generated_temporal_udfs_7.cpp +++ b/src/generated/generated_temporal_udfs_7.cpp @@ -3152,555 +3152,572 @@ static void Gen_cbuffer_same(DataChunk &args, ExpressionState &, Vector &result) } -// ===== @ingroup meos_npoint_base_comp ===== -static void Gen_npoint_eq(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_box_comp ===== +static void Gen_tbox_hash(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_eq(s1, s2); - free(s1); free(s2); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TBox *s = BlobToTbox(in); + uint32_t r = tbox_hash(s); + free(s); return r; }); } -static void Gen_npoint_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_ge(s1, s2); - free(s1); free(s2); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, uint64_t a2) { + TBox *s = BlobToTbox(in); + uint64_t r = tbox_hash_extended(s, a2); + free(s); return r; }); } -static void Gen_npoint_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_eq(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_gt(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_eq(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_npoint_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_le(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_ge(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_npoint_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_lt(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_gt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_npoint_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_ne(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_le(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_npoint_same(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_same(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_lt(s1, s2); free(s1); free(s2); return r; }); } - -// ===== @ingroup meos_h3_edges ===== -static void Gen_h3_origin_to_directed_edges(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = h3_origin_to_directed_edges(static_cast(a0)); - return SetToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_ne(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_th3index_are_neighbor_cells(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_are_neighbor_cells(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); -} -static void Gen_th3index_cells_to_directed_edge(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_conversion ===== +static void Gen_bigint_to_quadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = th3index_cells_to_directed_edge(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](int64_t a0) -> int64_t { + uint64_t r = bigint_to_quadbin(a0); + return static_cast(r); }); } -static void Gen_th3index_is_valid_directed_edge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbigint_to_tquadbin(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_is_valid_directed_edge(t); + Temporal *r = tbigint_to_tquadbin(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_get_directed_edge_origin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tquadbin_to_tbigint(DataChunk &args, ExpressionState &, 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); - Temporal *r = th3index_get_directed_edge_origin(t); + Temporal *r = tquadbin_to_tbigint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_get_directed_edge_destination(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_to_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = th3index_get_directed_edge_destination(t); + Temporal *r = tgeogpoint_to_tquadbin(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_directed_edge_to_boundary(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_to_tquadbin_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = th3index_directed_edge_to_boundary(t); + Temporal *r = tgeogpoint_to_tquadbin(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_temporal_text ===== -static void Gen_textcat_text_ttext(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - text *a1t = MakeText(a1); - Temporal *r = textcat_text_ttext(a1t, t); - free(a1t); free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_textcat_ttext_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeompoint_to_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), + [&](string_t in, int32_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - text *a2t = MakeText(a2); - Temporal *r = textcat_ttext_text(t, a2t); - free(a2t); free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_textcat_ttext_ttext(DataChunk &args, ExpressionState &, Vector &result) { - EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = textcat_ttext_ttext(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_ttext_initcap(DataChunk &args, ExpressionState &, 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); - Temporal *r = ttext_initcap(t); + Temporal *r = tgeompoint_to_tquadbin(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttext_upper(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeompoint_to_tquadbin_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), - [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = ttext_upper(t); + Temporal *r = tgeompoint_to_tquadbin(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ttext_lower(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_pointcloud_box_comp ===== +static void Gen_tpcbox_eq(DataChunk &args, ExpressionState &, 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); - Temporal *r = ttext_lower(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t a, string_t b) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_eq(s1, s2); + free(s1); free(s2); + return r; }); } - -// ===== @ingroup meos_geo_box_topo ===== -static void Gen_adjacent_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_ne(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = adjacent_stbox_stbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_ne(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_contained_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_lt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = contained_stbox_stbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_lt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_contains_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_le(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = contains_stbox_stbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_le(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overlaps_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_gt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = overlaps_stbox_stbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_gt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_same_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_ge(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, string_t b) { - STBox *s1 = BlobToStbox(a); - STBox *s2 = BlobToStbox(b); - bool r = same_stbox_stbox(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_ge(s1, s2); free(s1); free(s2); return r; }); } -// ===== @ingroup meos_rgeo_rel_temp ===== -static void Gen_tdwithin_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_transf ===== +static void Gen_tgeo_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in_g, string_t in_t, double d, 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 = tdwithin_geo_trgeometry(gs, t, d); - free(t); free(gs); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeo_rotate_x(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdwithin_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeo_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in_t, string_t in_g, double d, 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 = tdwithin_trgeometry_geo(t, gs, d); - free(t); free(gs); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeo_rotate_y(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tdwithin_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeo_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in1, string_t in2, double a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = tdwithin_trgeometry_trgeometry(t1, t2, a2); - free(t1); free(t2); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, double a2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t = BlobToTemporal(in); + Temporal *r = tgeo_rotate_z(t, a2); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_rgeo_modif ===== -static void Gen_trgeometry_delete_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_accessor ===== +static void Gen_th3index_start_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - TernaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], args.data[2], result, args.size(), - [&](string_t in, timestamp_tz_t a2, bool a3, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) -> int64_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); + int64_t r = (int64_t) th3index_start_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return r; }); } -static void Gen_trgeometry_delete_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_end_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, timestamp_tz_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) -> int64_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); + int64_t r = (int64_t) th3index_end_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return r; }); } -static void Gen_trgeometry_merge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_value_n(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = trgeometry_merge(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int32_t a2, ValidityMask &mask, idx_t idx) -> int64_t { + Temporal *t = BlobToTemporal(in); + uint64_t v; + bool ok = th3index_value_n(t, a2, &v); + free(t); + if (!ok) { mask.SetInvalid(idx); return int64_t(); } + return (int64_t) v; }); } +static void Gen_th3index_values(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + auto &in_vec = args.data[0]; + idx_t row_count = args.size(); + in_vec.Flatten(row_count); + auto &result_validity = FlatVector::Validity(result); + auto list_entries = FlatVector::GetData(result); + idx_t off = 0; + for (idx_t i = 0; i < row_count; ++i) { + if (in_vec.GetValue(i).IsNull()) { result_validity.SetInvalid(i); continue; } + string_t blob = FlatVector::GetData(in_vec)[i]; + Temporal *in = BlobToTemporal(blob); + int count = 0; + uint64_t * arr = th3index_values(in, &count); + free(in); + int n = (arr && count > 0) ? count : 0; + ListVector::Reserve(result, off + n); + ListVector::SetListSize(result, off + n); + list_entries[i] = list_entry_t{off, (uint64_t) n}; + if (n > 0) { + auto &child_vector = ListVector::GetEntry(result); + child_vector.SetVectorType(VectorType::FLAT_VECTOR); + auto *cd = FlatVector::GetData(child_vector); + for (int j = 0; j < n; ++j) { cd[off + j] = (int64_t) arr[j]; } + off += n; + } + if (arr) free(arr); + result_validity.SetValid(i); + } +} + -// ===== @ingroup meos_pose_base_inout ===== -static void Gen_pose_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_base_inout ===== +static void Gen_cbuffer_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - Pose *s = BlobToPose(a); - char *r = pose_as_ewkt(s, a2); + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_as_ewkt(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_pose_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - Pose *s = BlobToPose(a); - char *r = pose_as_ewkt(s, 15); + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_as_ewkt(s, 15); free(s); return TakeCString(result, r); }); } -static void Gen_pose_as_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_as_text(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - Pose *s = BlobToPose(a); - char *r = pose_as_text(s, a2); + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_as_text(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_pose_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_cbuffer_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - Pose *s = BlobToPose(a); - char *r = pose_as_text(s, 15); + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_as_text(s, 15); free(s); return TakeCString(result, r); }); } -// ===== @ingroup meos_posechain_comp_temp ===== -static void Gen_teq_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_spatial_rel_ever ===== +static void Gen_atouches_tpoint_geo(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = atouches_tpoint_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; + }); +} + +static void Gen_etouches_tpoint_geo(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_t, string_t in_g, ValidityMask &mask, idx_t idx) -> bool { + 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; + } + int r = etouches_tpoint_geo(t, gs); + free(t); free(gs); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; + }); +} + + +// ===== @ingroup meos_pose_accessor ===== +static void Gen_tpose_end_value(DataChunk &args, ExpressionState &, 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); - PoseChain *a2p = BlobToPosechain(a2); - Temporal *r = teq_tposechain_posechain(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + Pose * r = tpose_end_value(t); + free(t); + return PoseToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tposechain_posechain(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_start_value(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - PoseChain *a2p = BlobToPosechain(a2); - Temporal *r = tne_tposechain_posechain(t, a2p); - free(a2p); free(t); - return TemporalToBlobN(result, r, mask, idx); + Pose * r = tpose_start_value(t); + free(t); + return PoseToBlobN(result, r, mask, idx); }); } +static void Gen_tpose_trajectory(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 = tpose_trajectory(t); + free(t); + if (!r) { mask.SetInvalid(idx); return string_t(); } + string_t out = GSerializedToGeometry(r, state, result); + free(r); + return out; + }); +} -// ===== @ingroup meos_json_comp_temp ===== -static void Gen_teq_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_pose_conversion ===== +static void Gen_tpose_make(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - Temporal *r = teq_tjsonb_jsonb(t, a2p); - free(a2p); free(t); + [&](string_t in1, string_t in2, ValidityMask &mask, idx_t idx) -> string_t { + Temporal *t1 = BlobToTemporal(in1); + Temporal *t2 = BlobToTemporal(in2); + Temporal *r = tpose_make(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tjsonb_jsonb(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_to_tpoint(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t in, string_t a2, ValidityMask &mask, idx_t idx) -> string_t { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Jsonb *a2p = BlobToJsonb(a2); - Temporal *r = tne_tjsonb_jsonb(t, a2p); - free(a2p); free(t); + Temporal *r = tpose_to_tpoint(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pointcloud_box_inout ===== -static void Gen_tpcbox_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_box_inout ===== +static void Gen_stbox_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), [&](string_t a, int32_t a2) { - TPCBox *s = BlobToTpcbox(a); - char *r = tpcbox_out(s, a2); + STBox *s = BlobToStbox(a); + char *r = stbox_out(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_tpcbox_out_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_out_d(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t a) { - TPCBox *s = BlobToTpcbox(a); - char *r = tpcbox_out(s, 15); + STBox *s = BlobToStbox(a); + char *r = stbox_out(s, 15); free(s); return TakeCString(result, r); }); } -// ===== @ingroup meos_pointcloud_base_accessor ===== -static void Gen_pcpoint_get_pcid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_comp ===== +static void Gen_ever_eq_h3indexset_th3index(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Pcpoint *v = BlobToPcpoint(in); - uint32_t r = pcpoint_get_pcid(v); - free(v); - return r; + BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), + [&](string_t in_s, string_t in_t, ValidityMask &mask, idx_t idx) { + Set *s = BlobToSet(in_s); + Temporal *t = BlobToTemporal(in_t); + int r = ever_eq_h3indexset_th3index(s, t); + free(s); free(t); + if (r < 0) { mask.SetInvalid(idx); return false; } + return r != 0; }); } -static void Gen_pcpatch_get_pcid(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_h3_set_conversion ===== +static void Gen_h3index_to_set(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - Pcpatch *v = BlobToPcpatch(in); - uint32_t r = pcpatch_get_pcid(v); - free(v); - return r; + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](int64_t a0, ValidityMask &mask, idx_t idx) -> string_t { + Set * r = h3index_to_set(static_cast(a0)); + return SetToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_base_transf ===== -static void Gen_pose_compose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_base_srid ===== +static void Gen_posechain_srid(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::ExecuteWithNulls(args.data[0], args.data[1], result, args.size(), - [&](string_t a, string_t b, ValidityMask &mask, idx_t idx) -> string_t { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - Pose *r = pose_compose(s1, s2); - free(s1); free(s2); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return PoseToBlob(result, r); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + PoseChain *v = BlobToPosechain(in); + int32_t r = posechain_srid(v); + free(v); + return r; }); } -// ===== @ingroup meos_json_set_inout ===== -static void Gen_jsonbset_out(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_json_inout ===== +static void Gen_tjsonb_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); UnaryExecutor::Execute(args.data[0], result, args.size(), [&](string_t in) { - Set *s = BlobToSet(in); - char * r = jsonbset_out(s); - free(s); + Temporal *t = BlobToTemporal(in); + char * r = tjsonb_out(t); + free(t); return TakeCString(result, r); }); } @@ -4360,103 +4377,117 @@ void RegisterGenerated_meos_cbuffer_base_comp(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {CbufferTypes::cbuffer(), CbufferTypes::cbuffer()}, LogicalType::BOOLEAN, Gen_cbuffer_same)); } -void RegisterGenerated_meos_npoint_base_comp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_eq)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction(">", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_gt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("le", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_le)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_lt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_ne)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_same)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {NpointTypes::npoint(), NpointTypes::npoint()}, LogicalType::BOOLEAN, Gen_npoint_same)); +void RegisterGenerated_meos_box_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("hash", {TboxType::tbox()}, LogicalType::UINTEGER, Gen_tbox_hash)); + RegisterSerializedScalarFunction(loader, ScalarFunction("hashExtended", {TboxType::tbox(), LogicalType::UBIGINT}, LogicalType::UBIGINT, Gen_tbox_hash_extended)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_tbox_ne)); } -void RegisterGenerated_meos_h3_edges(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("h3OriginToDirectedEdges", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3_origin_to_directed_edges)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3AreNeighborCells", {H3indexTypes::th3index(), H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_are_neighbor_cells)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3CellsToDirectedEdge", {H3indexTypes::th3index(), H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_cells_to_directed_edge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("isValidDirectedEdge", {H3indexTypes::th3index()}, TemporalTypes::tbool(), Gen_th3index_is_valid_directed_edge)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetDirectedEdgeOrigin", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_get_directed_edge_origin)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3GetDirectedEdgeDestination", {H3indexTypes::th3index()}, H3indexTypes::th3index(), Gen_th3index_get_directed_edge_destination)); - RegisterSerializedScalarFunction(loader, ScalarFunction("th3DirectedEdgeToBoundary", {H3indexTypes::th3index()}, TGeographyTypes::tgeography(), Gen_th3index_directed_edge_to_boundary)); +void RegisterGenerated_meos_quadbin_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("quadbin", {LogicalType::BIGINT}, QuadbinTypes::quadbin(), Gen_bigint_to_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {LogicalType::BIGINT}, QuadbinTypes::quadbin(), Gen_bigint_to_quadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TemporalTypes::tbigint()}, QuadbinTypes::tquadbin(), Gen_tbigint_to_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::tbigint()}, QuadbinTypes::tquadbin(), Gen_tbigint_to_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tbigint", {QuadbinTypes::tquadbin()}, TemporalTypes::tbigint(), Gen_tquadbin_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {QuadbinTypes::tquadbin()}, TemporalTypes::tbigint(), Gen_tquadbin_to_tbigint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_tgeogpoint_to_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TgeogpointType::tgeogpoint(), LogicalType::INTEGER}, QuadbinTypes::tquadbin(), Gen_tgeogpoint_to_tquadbin_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TgeompointType::tgeompoint(), LogicalType::INTEGER, LogicalType::BOOLEAN}, QuadbinTypes::tquadbin(), Gen_tgeompoint_to_tquadbin)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tquadbin", {TgeompointType::tgeompoint(), LogicalType::INTEGER}, QuadbinTypes::tquadbin(), Gen_tgeompoint_to_tquadbin_d)); } -void RegisterGenerated_meos_temporal_text(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {LogicalType::VARCHAR, TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_text_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("||", {LogicalType::VARCHAR, TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_text_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_textcat_ttext_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TemporalTypes::ttext(), LogicalType::VARCHAR}, TemporalTypes::ttext(), Gen_textcat_ttext_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tConcat", {TemporalTypes::ttext(), TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_ttext_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("||", {TemporalTypes::ttext(), TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_textcat_ttext_ttext)); - RegisterSerializedScalarFunction(loader, ScalarFunction("initcap", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_initcap)); - RegisterSerializedScalarFunction(loader, ScalarFunction("upper", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_upper)); - RegisterSerializedScalarFunction(loader, ScalarFunction("lower", {TemporalTypes::ttext()}, TemporalTypes::ttext(), Gen_ttext_lower)); +void RegisterGenerated_meos_pointcloud_box_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eq", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_eq)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ne", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<>", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ne)); + RegisterSerializedScalarFunction(loader, ScalarFunction("lt", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_lt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("le", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("<=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_le)); + RegisterSerializedScalarFunction(loader, ScalarFunction("gt", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_gt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("ge", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ge)); + RegisterSerializedScalarFunction(loader, ScalarFunction(">=", {TpcboxType::tpcbox(), TpcboxType::tpcbox()}, LogicalType::BOOLEAN, Gen_tpcbox_ge)); } -void RegisterGenerated_meos_geo_box_topo(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("adjacent", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_adjacent_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("-|-", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_adjacent_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contained", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contained_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("<@", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contained_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("contains", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contains_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("@>", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_contains_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("overlaps", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_overlaps_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("&&", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_overlaps_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("same", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_same_stbox_stbox)); - RegisterSerializedScalarFunction(loader, ScalarFunction("~=", {StboxType::stbox(), StboxType::stbox()}, LogicalType::BOOLEAN, Gen_same_stbox_stbox)); +void RegisterGenerated_meos_geo_transf(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateX", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_x)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateY", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_y)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TgeompointType::tgeompoint(), LogicalType::DOUBLE}, TgeompointType::tgeompoint(), Gen_tgeo_rotate_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TgeogpointType::tgeogpoint(), LogicalType::DOUBLE}, TgeogpointType::tgeogpoint(), Gen_tgeo_rotate_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TGeometryTypes::tgeometry(), LogicalType::DOUBLE}, TGeometryTypes::tgeometry(), Gen_tgeo_rotate_z)); + RegisterSerializedScalarFunction(loader, ScalarFunction("rotateZ", {TGeographyTypes::tgeography(), LogicalType::DOUBLE}, TGeographyTypes::tgeography(), Gen_tgeo_rotate_z)); } -void RegisterGenerated_meos_rgeo_rel_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {MobilityDuckGeometryType(), TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_geo_trgeometry)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_trgeometry_geo)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tDwithin", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry(), LogicalType::DOUBLE}, TemporalTypes::tbool(), Gen_tdwithin_trgeometry_trgeometry)); +void RegisterGenerated_meos_h3_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {H3indexTypes::th3index()}, H3indexTypes::h3index(), Gen_th3index_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {H3indexTypes::th3index()}, H3indexTypes::h3index(), Gen_th3index_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("valueN", {H3indexTypes::th3index(), LogicalType::INTEGER}, H3indexTypes::h3index(), Gen_th3index_value_n)); + RegisterSerializedScalarFunction(loader, ScalarFunction("getValues", {H3indexTypes::th3index()}, LogicalType::LIST(H3indexTypes::h3index()), Gen_th3index_values)); } -void RegisterGenerated_meos_rgeo_modif(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ, LogicalType::BOOLEAN}, TrgeometryTypes::trgeometry(), Gen_trgeometry_delete_timestamptz)); - RegisterSerializedScalarFunction(loader, ScalarFunction("deleteTime", {TrgeometryTypes::trgeometry(), LogicalType::TIMESTAMP_TZ}, TrgeometryTypes::trgeometry(), Gen_trgeometry_delete_timestamptz_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("merge", {TrgeometryTypes::trgeometry(), TrgeometryTypes::trgeometry()}, TrgeometryTypes::trgeometry(), Gen_trgeometry_merge)); +void RegisterGenerated_meos_cbuffer_base_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::cbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_cbuffer_as_ewkt)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {CbufferTypes::cbuffer()}, LogicalType::VARCHAR, Gen_cbuffer_as_ewkt_d)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::cbuffer(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_cbuffer_as_text)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {CbufferTypes::cbuffer()}, LogicalType::VARCHAR, Gen_cbuffer_as_text_d)); } -void RegisterGenerated_meos_pose_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::pose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_pose_as_ewkt)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asEWKT", {PoseTypes::pose()}, LogicalType::VARCHAR, Gen_pose_as_ewkt_d)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::pose(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_pose_as_text)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {PoseTypes::pose()}, LogicalType::VARCHAR, Gen_pose_as_text_d)); +void RegisterGenerated_meos_temporal_spatial_rel_ever(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("aTouches", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_atouches_tpoint_geo)); + RegisterSerializedScalarFunction(loader, ScalarFunction("eTouches", {TgeompointType::tgeompoint(), MobilityDuckGeometryType()}, LogicalType::BOOLEAN, Gen_etouches_tpoint_geo)); } -void RegisterGenerated_meos_posechain_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, TemporalTypes::tbool(), Gen_teq_tposechain_posechain)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {PosechainTypes::tposechain(), PosechainTypes::posechain()}, TemporalTypes::tbool(), Gen_tne_tposechain_posechain)); +void RegisterGenerated_meos_pose_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("endValue", {PoseTypes::tpose()}, PoseTypes::pose(), Gen_tpose_end_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {PoseTypes::tpose()}, PoseTypes::pose(), Gen_tpose_start_value)); + RegisterSerializedScalarFunction(loader, ScalarFunction("trajectory", {PoseTypes::tpose()}, MobilityDuckGeometryType(), Gen_tpose_trajectory)); } -void RegisterGenerated_meos_json_comp_temp(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TemporalTypes::tbool(), Gen_teq_tjsonb_jsonb)); - RegisterSerializedScalarFunction(loader, ScalarFunction("tNotEqual", {TJsonbTypes::tjsonb(), TJsonbTypes::jsonb()}, TemporalTypes::tbool(), Gen_tne_tjsonb_jsonb)); +void RegisterGenerated_meos_pose_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("tpose", {PoseTypes::tpose(), PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_make)); + RegisterSerializedScalarFunction(loader, ScalarFunction("tgeompoint", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_to_tpoint)); + RegisterSerializedScalarFunction(loader, ScalarFunction("::", {PoseTypes::tpose()}, PoseTypes::tpose(), Gen_tpose_to_tpoint)); } -void RegisterGenerated_meos_pointcloud_box_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TpcboxType::tpcbox(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_tpcbox_out)); - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TpcboxType::tpcbox()}, LogicalType::VARCHAR, Gen_tpcbox_out_d)); +void RegisterGenerated_meos_geo_box_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {StboxType::stbox(), LogicalType::INTEGER}, LogicalType::VARCHAR, Gen_stbox_out)); + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {StboxType::stbox()}, LogicalType::VARCHAR, Gen_stbox_out_d)); } -void RegisterGenerated_meos_pointcloud_base_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TPcpointTypes::pcpoint()}, LogicalType::UINTEGER, Gen_pcpoint_get_pcid)); - RegisterSerializedScalarFunction(loader, ScalarFunction("pcid", {TPcpatchTypes::pcpatch()}, LogicalType::UINTEGER, Gen_pcpatch_get_pcid)); -} +void RegisterGenerated_meos_h3_comp(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("eEqual", {H3indexTypes::h3indexset(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_ever_eq_h3indexset_th3index)); + RegisterSerializedScalarFunction(loader, ScalarFunction("?=", {H3indexTypes::h3indexset(), H3indexTypes::th3index()}, LogicalType::BOOLEAN, Gen_ever_eq_h3indexset_th3index)); +} + +void RegisterGenerated_meos_h3_set_conversion(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("set", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3index_to_set)); +} -void RegisterGenerated_meos_pose_base_transf(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("applyPose", {PoseTypes::pose(), PoseTypes::pose()}, PoseTypes::pose(), Gen_pose_compose)); +void RegisterGenerated_meos_posechain_base_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PosechainTypes::posechain()}, LogicalType::INTEGER, Gen_posechain_srid)); } -void RegisterGenerated_meos_json_set_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::jsonbset()}, LogicalType::VARCHAR, Gen_jsonbset_out)); +void RegisterGenerated_meos_json_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TJsonbTypes::tjsonb()}, LogicalType::VARCHAR, Gen_tjsonb_out)); } } // namespace duckdb diff --git a/tools/codegen_duck_udfs.py b/tools/codegen_duck_udfs.py index 6da4b26f..d03f1959 100644 --- a/tools/codegen_duck_udfs.py +++ b/tools/codegen_duck_udfs.py @@ -3637,7 +3637,10 @@ def shape_h3_prefilter(f): b0, b1 = base(ins[0]["canonical"]), base(ins[1]["canonical"]) rb, rn = base(f["returnType"]["canonical"]), norm(f["returnType"]["canonical"]) ptr = lambda p: norm(p["canonical"]).endswith("*") - if b0 == "GSERIALIZED" and ptr(ins[0]) and b1 == "int" and "*" not in norm(ins[1]["canonical"]): + # The resolution is a 32-bit integer however MEOS spells it (`int` or the `int32` of the + # SQL-exposed integer convention), as the integer return check of this file reads it. + if (b0 == "GSERIALIZED" and ptr(ins[0]) and b1 in ("int", "int32_t") + and "*" not in norm(ins[1]["canonical"])): if rb == "Set" and rn.endswith("*"): return "geo2set" if rb == "uint64_t" and "*" not in rn: From 39b38dd15180c88f441b79c8e46d041ffe4474a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 2 Oct 2026 10:43:07 +0200 Subject: [PATCH 4/4] State the point cloud MF-JSON answers of the pinned MEOS pointcloud_schema.test expects asMFJSON(tpcpoint) of a registered pcid to carry each instant's point under "values", {"pcid":7,"pt":[1,2,3]}, beside its coordinates, and tpcpatch.test expects asMFJSON(tpcpatch) of a pcid no schema states to report "PCSCHEMA for pcid 1 not registered", as tpcpoint.test expects of the point of the same pcid. Why: the pinned MEOS writes the point cloud value of every instant into its MF-JSON so that the text reads back into the value (MobilityDB a362004728, "Read every temporal type back from the MF-JSON it writes"), which MobilityDB's own 421_tpcpoint_mfjson expected output carries. Writing the points of a patch decodes them through the schema of its pcid, so a pcid no schema states is refused; reading a value needs no schema, writing its coordinates does. The patch test keeps pcid 1 unregistered because a registered schema lives as long as the process the suite runs in, and tpcpoint.test asserts that same pcid resolves to nothing. Witness: asMFJSON(tpcpoint '2300000007...@2024-01-01') answers {"type":"MovingPCPoint","coordinates":[[1,2,3]],"values":[{"pcid":7,"pt":[1,2,3]}],...}. Measured: with this and the two commits before it, the full suite passes 3066 assertions in 108 test cases. --- test/sql/pointcloud_schema.test | 2 +- test/sql/tpcpatch.test | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/test/sql/pointcloud_schema.test b/test/sql/pointcloud_schema.test index 50b52d2e..45638612 100644 --- a/test/sql/pointcloud_schema.test +++ b/test/sql/pointcloud_schema.test @@ -63,7 +63,7 @@ true query I SELECT asMFJSON(tpcpoint '2300000007000000000000000000F03F00000000000000400000000000000840000000@2024-01-01'); ---- -{"type":"MovingPCPoint","coordinates":[[1,2,3]],"datetimes":["2024-01-01T00:00:00+01:00"],"interpolation":"None"} +{"type":"MovingPCPoint","coordinates":[[1,2,3]],"values":[{"pcid":7,"pt":[1,2,3]}],"datetimes":["2024-01-01T00:00:00+01:00"],"interpolation":"None"} # The contrast that gives the answer above its meaning: a pcid no row states # resolves to nothing, so the engine reads a coordinate through a schema it was diff --git a/test/sql/tpcpatch.test b/test/sql/tpcpatch.test index 5d1c69e4..de937593 100644 --- a/test/sql/tpcpatch.test +++ b/test/sql/tpcpatch.test @@ -132,12 +132,14 @@ SELECT numInstants(tpcpatch '4F000000010000000000000002000000000000000000F03F000 ---- 1 -# Test asMFJSON produces valid MF-JSON (pcid / npoints / 2D bounds from the -# serialized value; schema-free) -query I -SELECT asMFJSON(tpcpatch '4F000000010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040000000000000000000000000000000@2024-01-01') IS NOT NULL; +# Test asMFJSON is registered. The MF-JSON form writes the points of each patch, +# which requires decoding them against the pgPointCloud PCSCHEMA of its pcid. +# This file registers none, so the call reports the missing schema, as +# test/sql/tpcpoint.test states for the point of the same pcid. +statement error +SELECT asMFJSON(tpcpatch '4F000000010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040000000000000000000000000000000@2024-01-01'); ---- -true +PCSCHEMA for pcid 1 not registered # A negative MF-JSON precision reaches MEOS, which refuses it statement error