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/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..7228e414 100644 --- a/src/generated/generated_temporal_udfs_0.cpp +++ b/src/generated/generated_temporal_udfs_0.cpp @@ -1215,206 +1215,189 @@ 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); - }); -} - -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_tposechain_tposechain(t1, t2); - free(t1); free(t2); - 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_ne_tposechain_posechain(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 in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { 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); - }); -} - -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_tposechain_tposechain(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); + char * r = tspatial_as_ewkt(t, 15); + free(t); + return TakeCString(result, r); }); } -static void Gen_ever_eq_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 = 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_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_tposechain_tposechain(t1, t2); - free(t1); free(t2); - 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_ever_ne_tposechain_posechain(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 in, string_t a2, ValidityMask &mask, idx_t idx) -> bool { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { 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); - }); -} - -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_tposechain_tposechain(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); - }); -} - - -// ===== @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 { - 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); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -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 { - 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); - return TemporalToBlobN(result, r, mask, idx); + char * r = tspatial_as_text(t, 15); + free(t); + return TakeCString(result, r); }); } -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_trgeometry_tpoint(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); - }); -} -static void Gen_tdistance_trgeometry_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_analytics_similarity ===== +static void Gen_trgeometry_hausdorff_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 { + 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); - Temporal *r = tdistance_trgeometry_trgeometry(t1, t2); + double r = trgeometry_hausdorff_distance(t1, t2); free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + return (double) r; }); } -static void Gen_nad_trgeometry_tpoint(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 in1, string_t in2, ValidityMask &mask, idx_t idx) -> double { + 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_trgeometry_tpoint(t1, t2); + double r = trgeometry_frechet_distance(t1, t2); free(t1); free(t2); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return (double) r; }); } -static void Gen_nad_trgeometry_trgeometry(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) -> double { + 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_trgeometry_trgeometry(t1, t2); + double r = trgeometry_dyntimewarp_distance(t1, t2); free(t1); free(t2); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return (double) r; }); } -static void Gen_nad_trgeometry_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) -> 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; - }); +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); } @@ -1484,246 +1467,187 @@ static void Gen_tne_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) } -// ===== @ingroup meos_geo_set_inout ===== -static void Gen_spatialset_as_text(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, int32_t a2) { - Set *s = BlobToSet(a); - char *r = spatialset_as_text(s, a2); - free(s); - return TakeCString(result, r); - }); -} - -static void Gen_spatialset_as_text_d(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); - }); -} - -static void Gen_spatialset_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) { - Set *s = BlobToSet(a); - char *r = spatialset_as_ewkt(s, a2); - free(s); - return TakeCString(result, r); - }); -} - -static void Gen_spatialset_as_ewkt_d(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_ewkt(s, 15); - free(s); - return TakeCString(result, r); - }); -} - - -// ===== @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_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); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -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 { - 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_minus_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_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); + 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_tpose_minus_elevation(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_before_tbox_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) -> 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) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = before_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; }); } - -// ===== @ingroup meos_pointcloud_box_topo ===== -static void Gen_contains_tpcbox_tpcbox(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) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = contains_tpcbox_tpcbox(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_contained_tpcbox_tpcbox(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) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = contained_tpcbox_tpcbox(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_overlaps_tpcbox_tpcbox(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) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overlaps_tpcbox_tpcbox(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_same_tpcbox_tpcbox(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) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = same_tpcbox_tpcbox(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_adjacent_tpcbox_tpcbox(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) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = adjacent_tpcbox_tpcbox(s1, s2); + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = overright_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_right_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 = right_tbox_tbox(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_th3index_end_value(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_rgeo_bbox_split ===== +static void Gen_trgeometry_stboxes(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; - }); + 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_value_n(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 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; - }); + 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_th3index_values(DataChunk &args, ExpressionState &, Vector &result) { +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()) { result_validity.SetInvalid(i); continue; } + 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; - uint64_t * arr = th3index_values(in, &count); + 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); @@ -1732,8 +1656,8 @@ static void Gen_th3index_values(DataChunk &args, ExpressionState &, Vector &resu 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]; } + 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); @@ -1742,128 +1666,316 @@ static void Gen_th3index_values(DataChunk &args, ExpressionState &, Vector &resu } -// ===== @ingroup meos_h3_inspection ===== -static void Gen_h3_get_icosahedron_faces(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_comp_temp ===== +static void Gen_teq_quadbin_tquadbin(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); + 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_th3index_get_base_cell_number(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_tquadbin_quadbin(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 = th3index_get_base_cell_number(t); + Temporal *r = teq_tquadbin_quadbin(t, (uint64_t) a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_is_res_class_iii(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 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_tne_quadbin_tquadbin(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_quadbin_tquadbin((uint64_t) a1, t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +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 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_tne_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) -> 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); + }); +} + + +// ===== @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 = th3index_is_res_class_iii(t); + Temporal *r = tpose_yaw(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_is_pentagon(DataChunk &args, ExpressionState &, Vector &result) { +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 = th3index_is_pentagon(t); + Temporal *r = tpose_pitch(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_rgeo_modif ===== -static void Gen_trgeometry_delete_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_roll(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::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, a3); + Temporal *r = tpose_roll(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_delete_timestamptz_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_speed(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::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = trgeometry_delete_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true); + Temporal *r = tpose_speed(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_merge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_angular_speed(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); + 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); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pointcloud_base_comp ===== -static void Gen_pcpoint_hash(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_base_geopose ===== +static void Gen_tpose_as_geopose_stream(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 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_tpose_as_geopose_stream_d(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_hash(v); + 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; }); } -static void Gen_pcpatch_hash(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) { - Pcpatch *v = BlobToPcpatch(in); - uint32_t r = pcpatch_hash(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_pcpoint_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_roll(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); + 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_pcpatch_hash_extended(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 in, uint64_t a2) { - Pcpatch *s = BlobToPcpatch(in); - uint64_t r = pcpatch_hash_extended(s, a2); + 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 r; + return TakeCString(result, r); + }); +} + +static void Gen_posechain_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); + return TakeCString(result, r); + }); +} + +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) { + PoseChain *s = BlobToPosechain(a); + char *r = posechain_as_ewkt(s, a2); + free(s); + return TakeCString(result, r); + }); +} + +static void Gen_posechain_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); + free(s); + return TakeCString(result, r); + }); +} + + +// ===== @ingroup meos_posechain_transf ===== +static void Gen_tposechain_rotate_x(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 = tposechain_rotate_x(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tposechain_rotate_y(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 = tposechain_rotate_y(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tposechain_rotate_z(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 = tposechain_rotate_z(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + + +// ===== @ingroup meos_s2cell_base_inout ===== +static void Gen_s2cell_from_hexwkb(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); + }); +} + +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); }); } @@ -1892,45 +2004,50 @@ static void Gen_ttext_to_tjsonb(DataChunk &args, ExpressionState &, Vector &resu } -// ===== @ingroup meos_h3_metrics ===== -static void Gen_th3index_edge_length(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_inout ===== +static void Gen_tpcbox_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 = th3index_edge_length(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) { + TPCBox *s = BlobToTpcbox(a); + char *r = tpcbox_out(s, a2); + free(s); + return TakeCString(result, r); }); } -static void Gen_tgeogpoint_great_circle_distance(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_out_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 = tgeogpoint_great_circle_distance(t1, t2); - free(t1); free(t2); - return TemporalToBlobN(result, r, mask, idx); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t a) { + TPCBox *s = BlobToTpcbox(a); + char *r = tpcbox_out(s, 15); + free(s); + return TakeCString(result, r); }); } -// ===== @ingroup meos_rgeo_spatialfuncs ===== -static void Gen_trgeometry_body_point_trajectory(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_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); + 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; + }); +} + +static void Gen_pcpatch_get_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_get_pcid(v); + free(v); + return r; }); } @@ -1950,27 +2067,14 @@ 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(); - 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_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); }); } @@ -3046,40 +3150,57 @@ 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_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_geo_comp_temp(ExtensionLoader &loader) { @@ -3101,79 +3222,70 @@ void RegisterGenerated_meos_geo_comp_temp(ExtensionLoader &loader) { 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_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_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_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_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) { - 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_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) { + 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_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_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_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_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_conversion(ExtensionLoader &loader) { @@ -3183,25 +3295,22 @@ void RegisterGenerated_meos_json_conversion(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TemporalTypes::ttext()}, TJsonbTypes::tjsonb(), Gen_ttext_to_tjsonb)); } -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_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_rgeo_spatialfuncs(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("bodyPointTrajectory", {TrgeometryTypes::trgeometry(), MobilityDuckGeometryType()}, TgeompointType::tgeompoint(), Gen_trgeometry_body_point_trajectory)); +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_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_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 ca7f5644..737b3357 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); @@ -1520,248 +2696,439 @@ static void Gen_tstzspanset_duration(DataChunk &args, ExpressionState &, Vector }); } -static void Gen_tstzspanset_end_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tstzspanset_end_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + SpanSet *s = BlobToSpanSet(in); + TimestampTz r = tstzspanset_end_timestamptz(s); + free(s); + return TakeTimestamp(r); + }); +} + +static void Gen_tstzspanset_lower(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + SpanSet *s = BlobToSpanSet(in); + TimestampTz r = tstzspanset_lower(s); + free(s); + return TakeTimestamp(r); + }); +} + +static void Gen_tstzspanset_num_timestamps(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + SpanSet *s = BlobToSpanSet(in); + int32_t r = tstzspanset_num_timestamps(s); + free(s); + return r; + }); +} + +static void Gen_tstzspanset_start_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + SpanSet *s = BlobToSpanSet(in); + TimestampTz r = tstzspanset_start_timestamptz(s); + free(s); + return TakeTimestamp(r); + }); +} + +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(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - SpanSet *s = BlobToSpanSet(in); - TimestampTz r = tstzspanset_end_timestamptz(s); - free(s); - return TakeTimestamp(r); + 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_tstzspanset_lower(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_exists_any(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - SpanSet *s = BlobToSpanSet(in); - TimestampTz r = tstzspanset_lower(s); - free(s); - return TakeTimestamp(r); + 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_tstzspanset_num_timestamps(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_extract_path(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - SpanSet *s = BlobToSpanSet(in); - int32_t r = tstzspanset_num_timestamps(s); - free(s); - return r; + 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_tstzspanset_start_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_insert(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - UnaryExecutor::Execute(args.data[0], result, args.size(), - [&](string_t in) { - SpanSet *s = BlobToSpanSet(in); - TimestampTz r = tstzspanset_start_timestamptz(s); - free(s); - return TakeTimestamp(r); + 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_tstzspanset_upper(DataChunk &args, ExpressionState &, Vector &result) { +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 = (Temporal *) trgeometry_start_instant(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +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 = tbool_to_tint(t); + Temporal *r = (Temporal *) trgeometry_start_sequence(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_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_tint(t); + Temporal *r = trgeometry_centroid(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tfloat_to_tbigint(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 = tfloat_to_tbigint(t); + Temporal *r = trgeometry_cumulative_length(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tint_to_tfloat(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_tfloat(t); + Temporal *r = trgeometry_angular_speed(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tint_to_tbigint(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 = tint_to_tbigint(t); + Temporal *r = trgeometry_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_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); - Temporal *r = tbigint_to_tint(t); + GSERIALIZED * r = trgeometry_twcentroid(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; }); } -static void Gen_tbigint_to_tfloat(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_json_set_json ===== +static void Gen_jsonbset_delete_array(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); + 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_temporal_to_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_jsonbset_delete_path(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); + 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_tnumber_to_span(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_jsonbset_extract_path(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); + 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_tnumber_to_tbox(DataChunk &args, ExpressionState &, Vector &result) { +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 { - 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_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); + }); +} -// ===== @ingroup meos_geo_dist ===== -static void Gen_tdistance_tgeo_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_jsonbset_delete(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); + [&](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_tdistance_tgeo_geo_rev(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_jsonbset_strip_nulls(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::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_tdistance_tgeo_tgeo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_jsonbset_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) -> 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); + 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_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 { + Set *s = BlobToSet(in); + Set *r = jsonbset_pretty(s); + free(s); + return SetToBlobN(result, r, mask, idx); + }); +} + + +// ===== @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, 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_nad_tgeo_tgeo(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 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_eq_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_always_ne_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 = 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_stbox(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 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 = always_ne_tcbuffer_tcbuffer(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) { + 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); + free(a2p); free(t); + 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) { +static void Gen_ever_eq_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 &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); - } + 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); + }); } -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,112 @@ 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); - free(s); - return SetToBlobN(result, r, mask, idx); - }); -} - -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 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_compact_cells(s); free(s); return SetToBlobN(result, r, mask, idx); }); } -static void Gen_quadbinset_cover_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_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); + Set *r = s2cellset_uncompact_cells(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; + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_pose_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_s2cellset_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) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_gt(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 = s2cellset_cover_cells(s, a2); + free(s); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_pose_le(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, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_le(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 = h3_grid_disk(static_cast(a0), a1); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_pose_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3_grid_ring(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; + 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_pose_ne(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, string_t b) { - Pose *s1 = BlobToPose(a); - Pose *s2 = BlobToPose(b); - bool r = pose_ne(s1, s2); - free(s1); free(s2); - return 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_pose_same(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_grid_distance(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 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); }); } - -// ===== @ingroup meos_geo_srid ===== -static void Gen_tspatial_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cell_to_local_ij(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::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_tspatial_set_srid(DataChunk &args, ExpressionState &, Vector &result) { +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 in, int32_t a2, ValidityMask &mask, idx_t idx) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tspatial_set_srid(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_local_ij_to_cell(t1, t2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tspatial_transform(DataChunk &args, ExpressionState &, Vector &result) { +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 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); + [&](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); }); } @@ -2677,179 +4189,180 @@ 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) { +// ===== @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, 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); + 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_tcbuffer_at_geom(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_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); + 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_tcbuffer_minus_cbuffer(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, 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); + 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_tcbuffer_minus_geom(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_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); + 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_same_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 = same_tbox_tbox(s1, s2); + free(s1); free(s2); + return r; }); } -// ===== @ingroup meos_pointcloud_comp_temp ===== -static void Gen_teq_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_restrict ===== +static void Gen_tpcpoint_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); Pcpoint *a2p = BlobToPcpoint(a2); - Temporal *r = teq_tpcpoint_pcpoint(t, a2p); + Temporal *r = tpcpoint_at_value(t, a2p); free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tpcpoint_pcpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpoint_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); Pcpoint *a2p = BlobToPcpoint(a2); - Temporal *r = tne_tpcpoint_pcpoint(t, a2p); + Temporal *r = tpcpoint_minus_value(t, a2p); free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_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); Pcpatch *a2p = BlobToPcpatch(a2); - Temporal *r = teq_tpcpatch_pcpatch(t, a2p); + Temporal *r = tpcpatch_at_value(t, a2p); free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tpcpatch_pcpatch(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_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); Pcpatch *a2p = BlobToPcpatch(a2); - Temporal *r = tne_tpcpatch_pcpatch(t, a2p); + Temporal *r = tpcpatch_minus_value(t, a2p); free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); @@ -2891,724 +4404,480 @@ static void Gen_tgeometry_to_tcbuffer(DataChunk &args, ExpressionState &, Vector } -// ===== @ingroup meos_pose_base_inout ===== -static void Gen_pose_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_transf ===== +static void Gen_tcbuffer_expand(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); + 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); }); } -static void Gen_pose_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_rotate_z(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); + 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); }); } -static void Gen_pose_as_text(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_translate(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); + 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); }); } -static void Gen_pose_as_text_d(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 a) { - Pose *s = BlobToPose(a); - char *r = pose_as_text(s, 15); - free(s); - return TakeCString(result, r); + 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); + }); +} -// ===== @ingroup meos_npoint_restrict ===== -static void Gen_tnpoint_at_npointset(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_quadbin_out(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(), + [&](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); }); } -static void Gen_tnpoint_minus_npointset(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @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 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); + [&](string_t in, string_t a2, 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); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_quadbin_set_accessor ===== -static void Gen_quadbinset_values(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tjsonb_minus_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]; - 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); - } + 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); + }); } -// ===== @ingroup meos_posechain_inout ===== -static void Gen_tposechain_as_geopose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pose_comp_temp ===== +static void Gen_teq_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) -> string_t { Temporal *t = BlobToTemporal(in); - char * r = tposechain_as_geopose(t, a2); - free(t); - return TakeCString(result, r); + Pose *a2p = BlobToPose(a2); + Temporal *r = teq_tpose_pose(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tposechain_as_geopose_d(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 = tposechain_as_geopose(t, -1); - 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); }); } -// ===== @ingroup meos_box_set ===== -static void Gen_intersection_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_posechain_conversion ===== +static void Gen_tposechain_to_tpose(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); + 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_inout ===== -static void Gen_h3index_from_hexwkb(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_base_hierarchy ===== +static void Gen_h3index_cell_to_parent(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()); + 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_base_metrics ===== -static void Gen_h3index_cell_area(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(), - [&](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 = ts2cell_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 +4946,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 +5040,145 @@ 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_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) { @@ -4046,30 +5193,33 @@ 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_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_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_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_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_conversion(ExtensionLoader &loader) { @@ -4081,34 +5231,39 @@ void RegisterGenerated_meos_cbuffer_conversion(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("::", {TGeometryTypes::tgeometry()}, CbufferTypes::tcbuffer(), Gen_tgeometry_to_tcbuffer)); } -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_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_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_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_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_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_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_h3_base_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("h3indexFromHexWKB", {LogicalType::VARCHAR}, H3indexTypes::h3index(), Gen_h3index_from_hexwkb)); +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_base_metrics(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("cellArea", {H3indexTypes::h3index()}, LogicalType::DOUBLE, Gen_h3index_cell_area)); +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 4f452503..a4a4c5e6 100644 --- a/src/generated/generated_temporal_udfs_2.cpp +++ b/src/generated/generated_temporal_udfs_2.cpp @@ -345,1674 +345,498 @@ 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; - }); -} - -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; + 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; }); } @@ -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,580 +2544,452 @@ 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) { +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 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); + 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; }); } -static void Gen_nad_tpose_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_trgeometry_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) -> 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; - }); -} - -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) { - PoseChain *s1 = BlobToPosechain(a); - PoseChain *s2 = BlobToPosechain(b); - bool r = posechain_ge(s1, s2); - free(s1); free(s2); - return r; - }); -} - - -// ===== @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(), - [&](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_npoint_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_ge(s1, s2); - free(s1); free(s2); - return r; - }); -} - -static void Gen_npoint_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_gt(s1, s2); - free(s1); free(s2); - return r; + 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; }); } -static void Gen_npoint_le(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @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, string_t b) { - Npoint *s1 = BlobToNpoint(a); - Npoint *s2 = BlobToNpoint(b); - bool r = npoint_le(s1, s2); - free(s1); free(s2); - return 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_npoint_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_as_text_d(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; + 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_npoint_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_as_ewkt(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::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_npoint_same(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_as_ewkt_d(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; + 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); }); } -// ===== @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_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) { 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); + Temporal *r = tpose_compose_tpose(t1, t2); free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_geo_transf ===== -static void Gen_tgeo_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_inverse(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 = tgeo_rotate_x(t, a2); + Temporal *r = tpose_inverse(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeo_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_rotate_x(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); + Temporal *r = tpose_rotate_x(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeo_rotate_z(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, double a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeo_rotate_z(t, a2); + Temporal *r = tpose_rotate_y(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_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_at_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_tpcpoint_minus_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); - Pcpoint *a2p = BlobToPcpoint(a2); - Temporal *r = tpcpoint_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_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_at_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_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_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_tpcpatch_minus_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdwithin_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); - 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 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_rgeo_inout ===== -static void Gen_trgeometry_as_text(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_modif ===== +static void Gen_trgeometry_delete_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), - [&](string_t in, int32_t a2) { + 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, a2); + 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_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_delete_timestamptz_d(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, timestamp_tz_t a2, 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, true); 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_merge(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); + 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); }); } -static void Gen_trgeometry_as_ewkt_d(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_pointcloud_base_comp ===== +static void Gen_pcpoint_hash(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 = trgeometry_as_ewkt(t, 15); - free(t); - return TakeCString(result, r); + Pcpoint *v = BlobToPcpoint(in); + uint32_t r = pcpoint_hash(v); + free(v); + return r; }); } - -// ===== @ingroup meos_cbuffer_transf ===== -static void Gen_tcbuffer_expand(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_expand(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_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pcpoint_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 = tcbuffer_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 in, uint64_t a2) { + Pcpoint *s = BlobToPcpoint(in); + uint64_t r = pcpoint_hash_extended(s, a2); + free(s); + return r; }); } -static void Gen_tcbuffer_translate(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pcpatch_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) { + Pcpatch *s = BlobToPcpatch(in); + uint64_t r = pcpatch_hash_extended(s, a2); + free(s); + return r; }); } @@ -4028,378 +3023,650 @@ 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_json_comp_temp ===== +static void Gen_teq_tjsonb_jsonb(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); + [&](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_tpose_to_tpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_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) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpose_to_tpoint(t); - free(t); + Jsonb *a2p = BlobToJsonb(a2); + Temporal *r = tne_tjsonb_jsonb(t, a2p); + free(a2p); 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_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 a, int32_t a2) { - STBox *s = BlobToStbox(a); - char *r = stbox_out(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 = tpcpoint_to_tgeompoint(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_stbox_out_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 a) { - STBox *s = BlobToStbox(a); - char *r = stbox_out(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); + Temporal *r = tpcpatch_to_tgeometry(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_npoint_set_accessor ===== -static void Gen_npointset_routes(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_box_set ===== +static void Gen_intersection_tbox_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 { - Set *s = BlobToSet(in); - Set *r = npointset_routes(s); - free(s); - return SetToBlobN(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 { + 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_set_conversion ===== -static void Gen_h3index_to_set(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_cbuffer_base_accessor ===== +static void Gen_cbuffer_radius(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::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_inspection ===== -static void Gen_h3index_get_resolution(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) -> uint32_t { - uint32_t r = h3index_get_resolution(static_cast(a0)); - return 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_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,357 +3772,312 @@ 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_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_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_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_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_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) { + 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_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_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_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 +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_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_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_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_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_npoint_set_accessor(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("routes", {SetTypes::npointset()}, SetTypes::bigintset(), Gen_npointset_routes)); +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_set_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("set", {H3indexTypes::h3index()}, H3indexTypes::h3indexset(), Gen_h3index_to_set)); +void RegisterGenerated_meos_cbuffer_base_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("radius", {CbufferTypes::cbuffer()}, LogicalType::DOUBLE, Gen_cbuffer_radius)); } -void RegisterGenerated_meos_h3_base_inspection(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("getResolution", {H3indexTypes::h3index()}, LogicalType::UINTEGER, Gen_h3index_get_resolution)); +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 d1158455..7c1df81d 100644 --- a/src/generated/generated_temporal_udfs_3.cpp +++ b/src/generated/generated_temporal_udfs_3.cpp @@ -2681,1250 +2681,1052 @@ 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); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -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 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); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_trgeometry_at_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_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_insert(t1, t2, a2); + free(t1); free(t2); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_minus_values(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 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); + [&](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_tstzset(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_tstzset(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_tstzset(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); - }); -} -static void Gen_trgeometry_at_tstzspan(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); - 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 &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_tstzspan(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); - 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 &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_tstzspanset(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); - 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]; + 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_tstzspanset(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); - 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 &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_elevation(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); - Span *cc = BlobToSpan(b); - Temporal *r = trgeometry_at_elevation(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_elevation(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); - Span *cc = BlobToSpan(b); - Temporal *r = trgeometry_minus_elevation(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); + } } -// ===== @ingroup meos_pointcloud_comp_ever ===== -static void Gen_ever_eq_tpcpoint_pcpoint(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 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); - 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_tpcpoint_tpcpoint(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(); } + int32_t r = ever_eq_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_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_ne_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_ne_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_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 = ever_ne_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_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 = always_eq_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_always_eq_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 = 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_eq_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_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_ne_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_ne_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_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_ne_quadbin_tquadbin((uint64_t) a1, t); + free(t); return (r != 0); }); } -static void Gen_ever_eq_tpcpatch_pcpatch(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); - 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(); } + int32_t r = always_ne_tquadbin_quadbin(t, (uint64_t) a2); + free(t); return (r != 0); }); } -static void Gen_ever_eq_tpcpatch_tpcpatch(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 = ever_eq_tpcpatch_tpcpatch(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_ne_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_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 { + 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 = ever_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) { +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 = 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 { + 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_tpcpatch_tpcpatch(t1, t2); + int32_t r = always_eq_tquadbin_tquadbin(t1, t2); free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_ne_tpcpatch_pcpatch(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 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 { + 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_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); }); } -// ===== @ingroup meos_temporal_dist ===== -static void Gen_tdistance_tfloat_float(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, 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 = ever_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_ever_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 = ever_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_ever_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 = ever_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_ever_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 = ever_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_always_eq_s2cell_ts2cell(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 = nad_tfloat_tfloat(t1, t2); - free(t1); free(t2); - return (double) r; + 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); }); } -static void Gen_nad_tbigint_bigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_ts2cell_s2cell(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 in, int64_t a2) { Temporal *t = BlobToTemporal(in); - int64_t r = nad_tbigint_bigint(t, a2); + int32_t r = always_eq_ts2cell_s2cell(t, (uint64_t) a2); free(t); - return (double) r; + return (r != 0); }); } -static void Gen_nad_tbigint_tbigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_s2cell_ts2cell(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); - int64_t r = nad_tbigint_tbigint(t1, t2); - free(t1); free(t2); - return (double) r; + 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_tint_int(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, int32_t a2) { + BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), + [&](string_t in, int64_t a2) { Temporal *t = BlobToTemporal(in); - int32_t r = nad_tint_int(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_tint_tint(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); - int32_t r = nad_tint_tint(t1, t2); + int32_t r = ever_eq_ts2cell_ts2cell(t1, t2); free(t1); free(t2); - return (double) r; + return (r != 0); }); } -static void Gen_nad_tfloat_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_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); - 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; + 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); }); } -static void Gen_nad_tbigint_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_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); - 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; + 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); }); } -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) { - 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); - }); -} -static void Gen_tstzspanset_to_datespanset(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 { - SpanSet *s = BlobToSpanSet(in); - SpanSet *r = tstzspanset_to_datespanset(s); - free(s); - if (!r) { mask.SetInvalid(idx); return string_t(); } - return SpanSetToBlob(result, r); - }); -} - - -// ===== @ingroup meos_pose_comp_ever ===== -static void Gen_always_eq_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) -> bool { - 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); - }); -} - -static void Gen_always_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 = always_eq_tpose_tpose(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); - }); -} - -static void Gen_always_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) -> bool { - 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); - }); -} - -static void Gen_always_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 = always_ne_tpose_tpose(t1, t2); - free(t1); free(t2); - if (r < 0) { mask.SetInvalid(idx); return bool(); } - return (r != 0); - }); -} - -static void Gen_ever_eq_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) -> bool { 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); - }); -} - -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); + Temporal *r = tbigint_to_th3index(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_ever_ne_tpose_pose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_to_tbigint(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_ne_tpose_pose(t, a2p); - free(a2p); free(t); - 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); - }); -} - - -// ===== @ingroup meos_s2cell_accessor ===== -static void Gen_s2cell_edge_neighbors_set(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); - }); -} - -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 = s2cell_cell_to_children_set(static_cast(a0), a1); - return SetToBlobN(result, r, mask, idx); + Temporal *r = th3index_to_tbigint(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_s2cell_cell_to_cover(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(), [&](int64_t a0, int32_t a1, ValidityMask &mask, idx_t idx) -> string_t { - Set * r = s2cell_cell_to_cover(static_cast(a0), a1); + Set * r = h3index_cell_to_cover(static_cast(a0), a1); return SetToBlobN(result, r, mask, idx); }); } -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) ts2cell_start_value(t); - free(t); - return r; - }); -} - -static void Gen_ts2cell_end_value(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_to_stbox(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); - 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_ts2cell_value_n(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_h3index_timestamptz_to_stbox(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::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_ts2cell_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 = 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_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_s2cellset_uncompact_cells(DataChunk &args, ExpressionState &, Vector &result) { +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 = s2cellset_uncompact_cells(s, a2); + Set *r = h3indexset_cover_cells(s, a2); free(s); return SetToBlobN(result, r, mask, idx); }); } -static void Gen_s2cellset_cover_cells(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_geo_to_h3index_cell(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); + 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_h3_traversal ===== -static void Gen_h3_grid_disk(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(), - [&](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); + 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_h3_grid_ring(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(), - [&](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 in, uint64_t a2) { + STBox *s = BlobToStbox(in); + uint64_t r = stbox_hash_extended(s, a2); + free(s); + return r; }); } -static void Gen_h3_grid_path_cells(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(), - [&](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) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_th3index_grid_distance(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_stbox_ge(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) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_th3index_cell_to_local_ij(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 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) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_th3index_local_ij_to_cell(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 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) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_h3indexset_grid_disk(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 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) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_lt(s1, s2); + free(s1); free(s2); + return r; + }); +} + +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) { + STBox *s1 = BlobToStbox(a); + STBox *s2 = BlobToStbox(b); + bool r = stbox_ne(s1, s2); + free(s1); free(s2); + return r; }); } -// ===== @ingroup meos_geo_conversion ===== -static void Gen_tgeogpoint_to_tgeography(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_s2cell_conversion ===== +static void Gen_bigint_to_s2cell(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); + }); +} + +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 = tgeogpoint_to_tgeography(t); + Temporal *r = tbigint_to_ts2cell(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeography_to_tgeogpoint(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 = tgeography_to_tgeogpoint(t); + Temporal *r = ts2cell_to_tbigint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeography_to_tgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_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 { + 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 = tgeography_to_tgeometry(t); + Temporal *r = tgeogpoint_to_ts2cell(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeometry_to_tgeography(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_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 = tgeometry_to_tgeography(t); + Temporal *r = tgeogpoint_to_ts2cell(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeometry_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeompoint_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 { + 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 = tgeometry_to_tgeompoint(t); + Temporal *r = tgeompoint_to_ts2cell(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_tgeometry(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 = tgeompoint_to_tgeometry(t); + Temporal *r = tgeompoint_to_ts2cell(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -// ===== @ingroup meos_pose_transf ===== -static void Gen_tpose_compose_pose(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_comp_temp ===== +static void Gen_teq_h3index_th3index(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_compose_pose(t, a2p); - free(a2p); free(t); + Temporal *r = teq_h3index_th3index((uint64_t) a1, t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_compose_tpose(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_th3index_h3index(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); + 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); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_inverse(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 = tpose_inverse(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_tpose_rotate_x(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_h3index_th3index(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(), + [&](int64_t a1, string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpose_rotate_x(t, a2); + Temporal *r = tne_h3index_th3index((uint64_t) a1, t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_th3index_h3index(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, int64_t a2, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tpose_rotate_y(t, a2); + Temporal *r = tne_th3index_h3index(t, (uint64_t) a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_rotate_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_th3index_th3index(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); + 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); }); } -// ===== @ingroup meos_geo_box_topo ===== -static void Gen_adjacent_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_topo ===== +static void Gen_contains_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) { - 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 = contains_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_contained_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +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) { - 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 = contained_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_contains_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overlaps_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) { - 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 = overlaps_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overlaps_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_same_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) { - 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 = same_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_same_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_adjacent_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) { - 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 = adjacent_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); @@ -3975,183 +3777,225 @@ 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_cbuffer_base_srid ===== -static void Gen_cbuffer_srid(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 a0) -> int64_t { + uint64_t r = h3index_from_hexwkb(a0.GetString().c_str()); + return static_cast(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) { - Cbuffer *v = BlobToCbuffer(in); - int32_t r = cbuffer_srid(v); + Pose *v = BlobToPose(in); + int32_t r = pose_srid(v); free(v); return r; }); @@ -4610,199 +4454,267 @@ 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_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_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_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_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) { + 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_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) { @@ -4812,49 +4724,52 @@ 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_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 75a56de1..ce694fb7 100644 --- a/src/generated/generated_temporal_udfs_4.cpp +++ b/src/generated/generated_temporal_udfs_4.cpp @@ -1475,1315 +1475,1415 @@ 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; }); } - -// ===== @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) { +static void Gen_spanset_hash(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; + 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_tsequenceset_make_gaps(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_hash_extended(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 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; + }); +} -// ===== @ingroup meos_quadbin_comp_ever ===== -static void Gen_ever_eq_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_ge(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_quadbin_tquadbin((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) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = spanset_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_ever_eq_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_gt(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); - return (r != 0); + 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; }); } -static void Gen_ever_ne_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_le(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_quadbin_tquadbin((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) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = spanset_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_ever_ne_tquadbin_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_lt(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); - return (r != 0); + 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_always_eq_quadbin_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spanset_ne(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_quadbin_tquadbin((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) { + SpanSet *s1 = BlobToSpanSet(a); + SpanSet *s2 = BlobToSpanSet(b); + bool r = spanset_ne(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_always_eq_tquadbin_quadbin(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(), - [&](string_t in, int64_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); - int32_t r = always_eq_tquadbin_quadbin(t, (uint64_t) a2); - 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_always_ne_quadbin_tquadbin(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(), - [&](int64_t a1, string_t in) { - Temporal *t = BlobToTemporal(in); - int32_t r = always_ne_quadbin_tquadbin((uint64_t) a1, 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) -> 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_always_ne_tquadbin_quadbin(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(), - [&](string_t in, int64_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); - int32_t r = always_ne_tquadbin_quadbin(t, (uint64_t) a2); - 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_eq_tquadbin_tquadbin(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 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_ne_tpcpoint_tpcpoint(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_always_eq_tpcpoint_pcpoint(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_tquadbin_tquadbin(t1, t2); - free(t1); free(t2); + 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); + 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_tquadbin(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 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 = always_eq_tquadbin_tquadbin(t1, t2); + 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_tquadbin_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(), - [&](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); + 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_tpcpoint_tpcpoint(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_tpcpoint_tpcpoint(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) { +static void Gen_ever_eq_tpcpatch_pcpatch(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_s2cell_ts2cell((uint64_t) a1, t); - 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_ts2cell_s2cell(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 in, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = ever_eq_ts2cell_s2cell(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_tpcpatch_tpcpatch(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_ever_ne_s2cell_ts2cell(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(), - [&](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_s2cell_ts2cell((uint64_t) a1, t); - free(t); + 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_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tpcpatch_tpcpatch(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); + 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_tpcpatch_tpcpatch(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } return (r != 0); }); } -static void Gen_always_eq_s2cell_ts2cell(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(), - [&](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_s2cell_ts2cell((uint64_t) a1, t); - free(t); - return (r != 0); - }); -} - -static void Gen_always_eq_ts2cell_s2cell(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); - }); -} - -static void Gen_always_ne_s2cell_ts2cell(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); - }); -} - -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, int64_t a2) { - Temporal *t = BlobToTemporal(in); - int32_t r = always_ne_ts2cell_s2cell(t, (uint64_t) a2); - free(t); - return (r != 0); - }); -} - -static void Gen_ever_eq_ts2cell_ts2cell(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); + 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_ever_ne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_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_ne_ts2cell_ts2cell(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_eq_ts2cell_ts2cell(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) { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - int32_t r = always_eq_ts2cell_ts2cell(t1, t2); - free(t1); free(t2); + 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_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_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 = always_ne_ts2cell_ts2cell(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_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 { - Temporal *t = BlobToTemporal(in); - Temporal *r = tgeo_centroid(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -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 { - Temporal *t = BlobToTemporal(in); - Temporal *r = tpoint_angular_difference(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -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 { - Temporal *t = BlobToTemporal(in); - Temporal *r = tpoint_azimuth(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_tpoint_cumulative_length(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_pos ===== +static void Gen_left_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 = tpoint_cumulative_length(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 = left_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpoint_get_x(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overleft_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 = tpoint_get_x(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 = overleft_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpoint_get_y(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_right_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 = tpoint_get_y(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 = right_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpoint_get_z(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overright_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 = tpoint_get_z(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 = overright_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tpoint_is_simple(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_below_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); - 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; + 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_tpoint_length(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overbelow_tpcbox_tpcbox(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 = tpoint_length(t); - free(t); - 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 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_tpoint_speed(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_above_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 = tpoint_speed(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 = above_tpcbox_tpcbox(s1, s2); + free(s1); free(s2); + return r; }); } - -// ===== @ingroup meos_cbuffer_base_comp ===== -static void Gen_cbuffer_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_overabove_tpcbox_tpcbox(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); - free(v); + 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_cbuffer_hash_extended(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(), - [&](string_t in, uint64_t a2) { - Cbuffer *s = BlobToCbuffer(in); - uint64_t r = cbuffer_hash_extended(s, a2); - free(s); + 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_cbuffer_eq(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 a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_eq(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overfront_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_ge(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(), [&](string_t a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_ge(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = back_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_gt(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 a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_gt(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overback_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_le(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 a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_le(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = before_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_lt(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 a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_lt(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overbefore_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_ne(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 a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_ne(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = after_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_cbuffer_same(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 a, string_t b) { - Cbuffer *s1 = BlobToCbuffer(a); - Cbuffer *s2 = BlobToCbuffer(b); - bool r = cbuffer_same(s1, s2); + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = overafter_tpcbox_tpcbox(s1, s2); free(s1); free(s2); return r; }); } -// ===== @ingroup meos_geo_box_comp ===== -static void Gen_stbox_hash(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_analytics_simplify ===== +static void Gen_temporal_simplify_dp(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; + 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_dp(t, a2, a3); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_stbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_simplify_dp_d(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; + 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); }); } -static void Gen_stbox_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_simplify_max_dist(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); - free(s1); free(s2); - return r; + 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); }); } -static void Gen_stbox_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_simplify_max_dist_d(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; + 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); }); } -static void Gen_stbox_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_temporal_simplify_min_dist(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); - 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 = temporal_simplify_min_dist(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_stbox_le(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_json_comp_ever ===== +static void Gen_always_eq_tjsonb_jsonb(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); - 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) -> 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); }); } -static void Gen_stbox_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_eq_tjsonb_tjsonb(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); - 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 = always_eq_tjsonb_tjsonb(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); }); } -static void Gen_stbox_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_always_ne_tjsonb_jsonb(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); - 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) -> 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); }); } +static void Gen_always_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 = always_ne_tjsonb_tjsonb(t1, t2); + free(t1); free(t2); + if (r < 0) { mask.SetInvalid(idx); return bool(); } + return (r != 0); + }); +} -// ===== @ingroup meos_rgeo_bbox_split ===== -static void Gen_trgeometry_stboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tjsonb_jsonb(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); - } + 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); + }); } -static void Gen_trgeometry_split_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_eq_tjsonb_tjsonb(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); - } + 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_trgeometry_split_each_n_stboxes(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tjsonb_jsonb(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::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_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_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); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +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 { + Temporal *t = BlobToTemporal(in); + Temporal *r = tcellindex_is_valid_cell(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +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, 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_tcellindex_cell_to_point(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); + }); +} + +static void Gen_tcellindex_cell_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 = tcellindex_cell_to_boundary(t); + free(t); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tcellindex_cell_area(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); + }); +} + +static void Gen_tquadbin_cell_to_quadkey(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); + }); } -// ===== @ingroup meos_rgeo_transf ===== -static void Gen_trgeometry_round(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_srid ===== +static void Gen_tspatial_srid(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; + }); +} + +static void Gen_tspatial_set_srid(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 = trgeometry_round(t, a2); + Temporal *r = tspatial_set_srid(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_round_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tspatial_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 { + 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_round(t, 0); + Temporal *r = tspatial_transform(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_rotate_x(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(), + [&](int64_t a0, int64_t a1) -> bool { + bool r = quadbin_eq(static_cast(a0), static_cast(a1)); + return (bool) r; + }); +} + +static void Gen_quadbin_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 { + 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; + }); +} + +static void Gen_quadbin_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_le(static_cast(a0), static_cast(a1)); + return (bool) r; + }); +} + +static void Gen_quadbin_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; + }); +} + +static void Gen_quadbin_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_ge(static_cast(a0), static_cast(a1)); + return (bool) r; + }); +} + +static void Gen_quadbin_cmp(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; + }); +} + +static void Gen_quadbin_hash(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; + }); +} + +static void Gen_quadbin_hash_extended(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; + }); +} + + +// ===== @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 = trgeometry_rotate_x(t, a2); + Temporal *r = teq_s2cell_ts2cell((uint64_t) a1, t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_rotate_y(DataChunk &args, ExpressionState &, Vector &result) { +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, double 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 = trgeometry_rotate_y(t, a2); + Temporal *r = teq_ts2cell_s2cell(t, (uint64_t) a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_rotate_z(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, double 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) -> 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 = trgeometry_rotate_z(t, a2); + Temporal *r = tne_s2cell_ts2cell((uint64_t) a1, t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_trgeometry_as_tinstant(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 = (Temporal *) trgeometry_as_tinstant(t); + Temporal *r = tne_ts2cell_s2cell(t, (uint64_t) a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_pose_geopose_accessor ===== -static void Gen_tpose_apply_geo(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_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); + [&](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_yaw(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_geo_box_topo ===== +static void Gen_adjacent_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 = tpose_yaw(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) { + 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; }); } -static void Gen_tpose_pitch(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_json_accessor ===== +static void Gen_tjsonb_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 = tpose_pitch(t); + Jsonb * r = tjsonb_end_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return JsonbToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_roll(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 = tpose_roll(t); + Jsonb * r = tjsonb_start_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return JsonbToBlobN(result, r, mask, idx); }); } -static void Gen_tpose_speed(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 = tpose_speed(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_tpose_angular_speed(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 = tpose_angular_speed(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_npoint_base_accessor ===== -static void Gen_npoint_position(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_pointcloud_box_accessor ===== +static void Gen_tpcbox_hasx(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); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + bool r = tpcbox_hasx(v); free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; }); } -static void Gen_npoint_route(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_hasz(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) { - Npoint *v = BlobToNpoint(in); - int64_t r = npoint_route(v); + TPCBox *v = BlobToTpcbox(in); + bool r = tpcbox_hasz(v); free(v); return r; }); } -static void Gen_nsegment_end_position(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_hast(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); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + bool r = tpcbox_hast(v); free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; }); } -static void Gen_nsegment_route(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) { - Nsegment *v = BlobToNsegment(in); - int64_t r = nsegment_route(v); + TPCBox *v = BlobToTpcbox(in); + int32_t r = tpcbox_srid(v); free(v); return r; }); } -static void Gen_nsegment_start_position(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) -> double { - Nsegment *v = BlobToNsegment(in); - double r = nsegment_start_position(v); + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { + TPCBox *v = BlobToTpcbox(in); + uint32_t r = tpcbox_pcid(v); free(v); - if (r == DBL_MAX) { mask.SetInvalid(idx); return double(); } return r; }); } -// ===== @ingroup meos_npoint_base_inout ===== -static void Gen_npoint_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) { - Npoint *s = BlobToNpoint(a); - char *r = npoint_as_ewkt(s, a2); - free(s); - return TakeCString(result, r); - }); -} - -static void Gen_npoint_as_ewkt_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_ewkt(s, 15); - free(s); - return TakeCString(result, r); - }); -} - -static void Gen_npoint_as_text(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_set_srid ===== +static void Gen_spatialset_set_srid(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); + 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 TakeCString(result, r); + return SetToBlobN(result, r, mask, idx); }); } -static void Gen_npoint_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_spatialset_transform(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); + 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 TakeCString(result, r); + 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_cbuffer_comp_temp ===== -static void Gen_teq_tcbuffer_cbuffer(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_h3_metrics ===== +static void Gen_th3index_edge_length(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 = teq_tcbuffer_cbuffer(t, a2p); - free(a2p); free(t); + Temporal *r = th3index_edge_length(t); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_tcbuffer_cbuffer(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); - Cbuffer *a2p = BlobToCbuffer(a2); - Temporal *r = tne_tcbuffer_cbuffer(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_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) { - 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; - }); -} - - // ===== @ingroup meos_pointcloud_inout ===== static void Gen_tpcpoint_out(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); @@ -2808,39 +2908,41 @@ static void Gen_tpcpatch_out(DataChunk &args, ExpressionState &, Vector &result) } -// ===== @ingroup meos_h3_base_hierarchy ===== -static void Gen_h3index_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_geo_box_set ===== +static void Gen_intersection_stbox_stbox(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); + 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_posechain_accessor ===== -static void Gen_tposechain_num_poses(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) { - Temporal *t = BlobToTemporal(in); - int32_t r = tposechain_num_poses(t); - free(t); - return (int32_t) 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_h3_inout ===== -static void Gen_th3index_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 = th3index_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; }); } @@ -3616,302 +3718,321 @@ 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_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_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_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_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_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) { @@ -3919,16 +4040,17 @@ void RegisterGenerated_meos_pointcloud_inout(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TPcpatchTypes::tpcpatch()}, LogicalType::VARCHAR, Gen_tpcpatch_out)); } -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_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_h3_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {H3indexTypes::th3index()}, LogicalType::VARCHAR, Gen_th3index_out)); +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 c9db4da3..866c801b 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) { - 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) { +static void Gen_nad_tgeo_stbox(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)); - 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)); + 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_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,667 +3230,708 @@ 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) { + 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_tdistance_tpose_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 = tdistance_tpose_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) { + 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_tpose_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +static void Gen_tdistance_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) -> string_t { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - double r = trgeometry_hausdorff_distance(t1, t2); + Temporal *r = tdistance_tpose_tpose(t1, t2); free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); + }); +} + +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, 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; }); } -static void Gen_trgeometry_frechet_distance(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nad_tpose_tpose(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) -> double { Temporal *t1 = BlobToTemporal(in1); Temporal *t2 = BlobToTemporal(in2); - double r = trgeometry_frechet_distance(t1, t2); + 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_trgeometry_dyntimewarp_distance(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nai_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_dyntimewarp_distance(t1, t2); - free(t1); free(t2); + 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) { + 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; }); } -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_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; + }); +} -// ===== @ingroup meos_cellindex ===== -static void Gen_tcellindex_get_resolution(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_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 = tcellindex_get_resolution(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) { + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tcellindex_is_valid_cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_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 = tcellindex_is_valid_cell(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) { + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_ne(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tcellindex_cell_to_parent(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_same(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::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_tcellindex_cell_to_point(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_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 = tcellindex_cell_to_point(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) { + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_lt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tcellindex_cell_to_boundary(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_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 = tcellindex_cell_to_boundary(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) { + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tcellindex_cell_area(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_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 = tcellindex_cell_area(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) { + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tquadbin_cell_to_quadkey(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_posechain_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 = tquadbin_cell_to_quadkey(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) { + PoseChain *s1 = BlobToPosechain(a); + PoseChain *s2 = BlobToPosechain(b); + bool r = posechain_ge(s1, s2); + free(s1); free(s2); + return r; }); } -// ===== @ingroup meos_box_bbox_pos ===== -static void Gen_after_tbox_tbox(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(), + [&](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_npoint_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 = after_tbox_tbox(s1, s2); + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_ge(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_before_tbox_tbox(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(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = before_tbox_tbox(s1, s2); + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_gt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_left_tbox_tbox(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(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = left_tbox_tbox(s1, s2); + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_le(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overafter_tbox_tbox(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(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overafter_tbox_tbox(s1, s2); + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_lt(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overbefore_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_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 = overbefore_tbox_tbox(s1, s2); + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_ne(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overleft_tbox_tbox(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(), [&](string_t a, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overleft_tbox_tbox(s1, s2); + Npoint *s1 = BlobToNpoint(a); + Npoint *s2 = BlobToNpoint(b); + bool r = npoint_same(s1, s2); free(s1); free(s2); return r; }); } -static void Gen_overright_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @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); + }); +} + +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, string_t b) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = overright_tbox_tbox(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, 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_right_tbox_tbox(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(), - [&](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::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_h3_edges ===== -static void Gen_h3_origin_to_directed_edges(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_text ===== +static void Gen_textcat_text_ttext(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::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_th3index_are_neighbor_cells(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 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); + [&](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); }); } -static void Gen_th3index_cells_to_directed_edge(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 = th3index_cells_to_directed_edge(t1, t2); + Temporal *r = textcat_ttext_ttext(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_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 = th3index_is_valid_directed_edge(t); + Temporal *r = ttext_initcap(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_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_get_directed_edge_origin(t); + Temporal *r = ttext_upper(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_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_get_directed_edge_destination(t); + Temporal *r = ttext_lower(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_directed_edge_to_boundary(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); - Temporal *r = th3index_directed_edge_to_boundary(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_trgeometry(gs, t); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_pointcloud_box_comp ===== -static void Gen_tpcbox_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_trgeometry_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 = tpcbox_eq(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 = teq_trgeometry_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcbox_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_geo_trgeometry(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 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_tpcbox_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_trgeometry_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 = tpcbox_lt(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 = tne_trgeometry_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tpcbox_le(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_npoint_base_accessor ===== +static void Gen_npoint_position(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); + 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; }); } -static void Gen_tpcbox_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_npoint_route(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(), + [&](string_t in) { + Npoint *v = BlobToNpoint(in); + int64_t r = npoint_route(v); + free(v); return r; }); } -static void Gen_tpcbox_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nsegment_end_position(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); + 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; }); } - -// ===== @ingroup meos_s2cell_conversion ===== -static void Gen_bigint_to_s2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_nsegment_route(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(), + [&](string_t in) { + Nsegment *v = BlobToNsegment(in); + int64_t r = nsegment_route(v); + free(v); + return r; }); } -static void Gen_tbigint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +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) -> string_t { - Temporal *t = BlobToTemporal(in); - Temporal *r = tbigint_to_ts2cell(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + 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; }); } -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 = ts2cell_to_tbigint(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} -static void Gen_tgeogpoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_inout ===== +static void Gen_trgeometry_as_text(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, int32_t a2) { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeogpoint_to_ts2cell(t, a2); + char * r = trgeometry_as_text(t, a2); free(t); - return TemporalToBlobN(result, r, mask, idx); + return TakeCString(result, r); }); } -static void Gen_tgeompoint_to_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_trgeometry_as_text_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 { + UnaryExecutor::Execute(args.data[0], result, args.size(), + [&](string_t in) { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeompoint_to_ts2cell(t, a2); + char * r = trgeometry_as_text(t, 15); free(t); - return TemporalToBlobN(result, r, mask, idx); + return TakeCString(result, r); }); } - -// ===== @ingroup meos_pose_base_geopose ===== -static void Gen_tpose_as_geopose_stream(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 = tpose_as_geopose_stream(t, a2); + char * r = trgeometry_as_ewkt(t, a2); free(t); return TakeCString(result, r); }); } -static void Gen_tpose_as_geopose_stream_d(DataChunk &args, ExpressionState &, Vector &result) { +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 = tpose_as_geopose_stream(t, -1); + char * r = trgeometry_as_ewkt(t, 15); 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; - }); -} - -static void Gen_pose_pitch(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; - }); -} - -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_base_inout ===== -static void Gen_cbuffer_as_ewkt(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @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) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_ewkt(s, a2); + Pose *s = BlobToPose(a); + char *r = pose_as_ewkt(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_cbuffer_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) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_ewkt(s, 15); + Pose *s = BlobToPose(a); + char *r = pose_as_ewkt(s, 15); free(s); return TakeCString(result, r); }); } -static void Gen_cbuffer_as_text(DataChunk &args, ExpressionState &, Vector &result) { +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) { - Cbuffer *s = BlobToCbuffer(a); - char *r = cbuffer_as_text(s, a2); + Pose *s = BlobToPose(a); + char *r = pose_as_text(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_cbuffer_as_text_d(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_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_text(s, 15); + Pose *s = BlobToPose(a); + char *r = pose_as_text(s, 15); free(s); 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); @@ -4097,38 +3939,15 @@ 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) { - 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); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -static void Gen_trgeometry_to_tgeompoint(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 = trgeometry_to_tgeompoint(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); - }); -} - -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 = trgeometry_to_tgeometry(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; }); } @@ -4166,56 +3985,63 @@ static void Gen_s2cellset_values(DataChunk &args, ExpressionState &, Vector &res } -// ===== @ingroup meos_geo_box_set ===== -static void Gen_intersection_stbox_stbox(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_npoint_base_srid ===== +static void Gen_npoint_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 { - 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) { + Npoint *v = BlobToNpoint(in); + int32_t r = npoint_srid(v); + free(v); + return r; + }); +} + +static void Gen_nsegment_srid(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; }); } -// ===== @ingroup meos_h3_comp ===== -static void Gen_ever_eq_h3indexset_th3index(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 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) { + Temporal *t = BlobToTemporal(in); + int32_t r = tposechain_num_poses(t); + free(t); + return (int32_t) r; }); } -// ===== @ingroup meos_s2cell_set_inout ===== -static void Gen_s2cellset_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 = s2cellset_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) { +// ===== @ingroup meos_cbuffer_base_srid ===== +static void Gen_cbuffer_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); + Cbuffer *v = BlobToCbuffer(in); + int32_t r = cbuffer_srid(v); free(v); return r; }); @@ -4581,6 +4407,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 +4537,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,129 +4695,136 @@ 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_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_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_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_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_pose_base_srid(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PoseTypes::pose()}, LogicalType::INTEGER, Gen_pose_srid)); +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_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) { + 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_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_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_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_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_posechain_accessor(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("numPoses", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tposechain_num_poses)); +} + +void RegisterGenerated_meos_quadbin_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {QuadbinTypes::tquadbin()}, LogicalType::VARCHAR, Gen_tquadbin_out)); +} + +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 d895e8d9..a4c234e9 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); - } -} - -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_comp ===== -static void Gen_set_cmp(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 = always_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_always_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 = always_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_always_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 = always_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_always_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 = always_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_always_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 = always_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_always_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 = always_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) { +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 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) -> 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_set_gt(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 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) -> 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_set_le(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 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 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_lt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_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) { - 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 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_ne(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, 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_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_span_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ever_ne_tgeo_tgeo(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 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_span_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) { - Span *s = BlobToSpan(in); - uint64_t r = span_hash_extended(s, a2); - free(s); - return r; - }); -} -static void Gen_span_eq(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) { - 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 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_span_ge(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) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = span_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 = tcontains_tcbuffer_geo(t, gs); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_gt(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) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = span_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 = tcontains_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_le(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) { - Span *s1 = BlobToSpan(a); - Span *s2 = BlobToSpan(b); - bool r = span_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 = tcontains_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_span_lt(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) { - 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 = tcovers_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_tcovers_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 = tcovers_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_tcovers_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 = tcovers_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_tcovers_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 = tcovers_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_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) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = spanset_eq(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_spanset_ge(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) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = spanset_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_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_spanset_gt(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) { - SpanSet *s1 = BlobToSpanSet(a); - SpanSet *s2 = BlobToSpanSet(b); - bool r = spanset_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 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_spanset_le(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) { - 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 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_spanset_lt(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) { - 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_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_ne(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tdisjoint_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_ne(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 = tdisjoint_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_setspan_bbox_split ===== -static void Gen_set_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]; - 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) { +static void Gen_tdisjoint_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]; - 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); - } + 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_spans(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tintersects_geo_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 &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); - } + 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_split_each_n_spans(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tintersects_tcbuffer_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]; - 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_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_split_n_spans(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tintersects_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]; - 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 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_tintersects_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) -> 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_ttouches_geo_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 = ttouches_geo_tcbuffer(gs, t); + free(t); free(gs); + return TemporalToBlobN(result, r, mask, idx); + }); +} -// ===== @ingroup meos_pointcloud_box_pos ===== -static void Gen_left_tpcbox_tpcbox(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) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = left_tpcbox_tpcbox(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); }); } -static void Gen_overleft_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttouches_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) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = overleft_tpcbox_tpcbox(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 = ttouches_tcbuffer_cbuffer(t, a2p); + free(a2p); free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_right_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_ttouches_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) { - TPCBox *s1 = BlobToTpcbox(a); - TPCBox *s2 = BlobToTpcbox(b); - bool r = right_tpcbox_tpcbox(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 = ttouches_tcbuffer_tcbuffer(t1, t2); + free(t1); free(t2); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_overright_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 = overright_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_below_tpcbox_tpcbox(DataChunk &args, ExpressionState &, Vector &result) { +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_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 = below_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_overbelow_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 = overbelow_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_above_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 = 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 = tfloat_out(t, 15); + free(t); + return TakeCString(result, r); }); } -static void Gen_overabove_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 = 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 = tint_out(t); + free(t); + return TakeCString(result, r); }); } -static void Gen_front_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 = front_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_overfront_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 = overfront_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_back_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 = back_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_overback_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 = overback_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_before_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 = before_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_overbefore_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 = 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_resolution(static_cast(a0)); return r; }); } -static void Gen_after_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 = after_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_overafter_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 = overafter_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_s2cell_cell_to_child(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); + }); +} -// ===== @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,503 +2074,506 @@ 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_pose_base_comp ===== +static void Gen_pose_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 = tbigint_to_th3index(t); - free(t); - 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_th3index_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_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 = th3index_to_tbigint(t); - 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) { + Pose *s = BlobToPose(in); + uint64_t r = pose_hash_extended(s, a2); + free(s); + return r; }); } -static void Gen_h3index_cell_to_cover(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(), - [&](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); + 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_h3index_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_ge(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, 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_h3index_timestamptz_to_stbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_pose_gt(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); + 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_h3index_tstzspan_to_stbox(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(), - [&](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, 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_h3indexset_cover_cells(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 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); + 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_geo_to_h3index_cell(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 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; + 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_geo_to_h3index_set(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 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); + 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_box_comp ===== -static void Gen_tbox_hash(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_temporal_bool ===== +static void Gen_tand_bool_tbool(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; + 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_tbox_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tand_tbool_bool(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; + 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_tbox_eq(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tand_tbool_tbool(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; + 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_tbox_ge(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tnot_tbool(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; + 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_tbox_gt(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tor_bool_tbool(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; + 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_tor_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 = tor_tbool_bool(t, a2); + free(t); + return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tbox_le(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tor_tbool_tbool(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; + 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); }); } -static void Gen_tbox_lt(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) { - TBox *s1 = BlobToTbox(a); - TBox *s2 = BlobToTbox(b); - bool r = tbox_lt(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_tbox_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) { - 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 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); }); } - -// ===== @ingroup meos_quadbin_conversion ===== -static void Gen_bigint_to_quadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_cells_to_directed_edge(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::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_tbigint_to_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_is_valid_directed_edge(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_tquadbin(t); + Temporal *r = th3index_is_valid_directed_edge(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tquadbin_to_tbigint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_get_directed_edge_origin(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_to_tbigint(t); + Temporal *r = th3index_get_directed_edge_origin(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeogpoint_to_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_get_directed_edge_destination(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 { + 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, a3); + Temporal *r = th3index_get_directed_edge_destination(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeogpoint_to_tquadbin_d(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, 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 = th3index_directed_edge_to_boundary(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_tquadbin(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_pose_restrict ===== +static void Gen_tpose_at_geom(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_tquadbin(t, a2, a3); - 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_at_geom(t, gs); + free(t); free(gs); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tgeompoint_to_tquadbin_d(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, 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) -> string_t { Temporal *t = BlobToTemporal(in); - Temporal *r = tgeompoint_to_tquadbin(t, a2, true); - free(t); + Pose *a2p = BlobToPose(a2); + Temporal *r = tpose_at_pose(t, a2p); + free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } - -// ===== @ingroup meos_s2cell_comp_temp ===== -static void Gen_teq_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_minus_geom(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); + 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_teq_ts2cell_s2cell(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, 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); + Pose *a2p = BlobToPose(a2); + Temporal *r = tpose_minus_pose(t, a2p); + free(a2p); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +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 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); + [&](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_tne_s2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_minus_elevation(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); + 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); }); } -static void Gen_tne_ts2cell_s2cell(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @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, 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 = tne_ts2cell_s2cell(t, (uint64_t) a2); - 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_tne_ts2cell_ts2cell(DataChunk &args, ExpressionState &, Vector &result) { +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 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); + [&](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) { + 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); + }); +} -// ===== @ingroup meos_box_bbox_topo ===== -static void Gen_adjacent_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tcbuffer_minus_geom(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; + 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_contained_tbox_tbox(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 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); + Pcpoint *a2p = BlobToPcpoint(a2); + Temporal *r = teq_tpcpoint_pcpoint(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_tne_tpcpoint_pcpoint(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 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_overlaps_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_teq_tpcpatch_pcpatch(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; + 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_same_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tne_tpcpatch_pcpatch(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, 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_json_accessor ===== -static void Gen_tjsonb_end_value(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); - Jsonb * r = tjsonb_end_value(t); + Pcpoint * r = tpcpoint_start_value(t); free(t); - return JsonbToBlobN(result, r, mask, idx); + return PcpointToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_start_value(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); - Jsonb * r = tjsonb_start_value(t); + Pcpoint * r = tpcpoint_end_value(t); free(t); - return JsonbToBlobN(result, r, mask, idx); + return PcpointToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_value_at_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_start_value(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 { + UnaryExecutor::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, 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); + Pcpatch * r = tpcpatch_start_value(t); free(t); - if (! ok) { mask.SetInvalid(idx); return string_t(); } - return JsonbToBlob(result, o); + return PcpatchToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_value_n(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcpatch_end_value(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::ExecuteWithNulls(args.data[0], result, args.size(), + [&](string_t in, ValidityMask &mask, idx_t idx) -> string_t { Temporal *t = BlobToTemporal(in); - Jsonb *o = NULL; - bool ok = tjsonb_value_n(t, a2, &o); + Pcpatch * r = tpcpatch_end_value(t); free(t); - if (! ok) { mask.SetInvalid(idx); return string_t(); } - return JsonbToBlob(result, o); - }); -} - - -// ===== @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) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_text(s, a2); - free(s); - return TakeCString(result, r); - }); -} - -static void Gen_posechain_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); - return TakeCString(result, r); - }); -} - -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) { - PoseChain *s = BlobToPosechain(a); - char *r = posechain_as_ewkt(s, a2); - free(s); - return TakeCString(result, r); - }); -} - -static void Gen_posechain_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); - free(s); - return TakeCString(result, r); + return PcpatchToBlobN(result, r, mask, idx); }); } @@ -2747,92 +2616,91 @@ static void Gen_tcbuffer_start_value(DataChunk &args, ExpressionState &, Vector } -// ===== @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) { +// ===== @ingroup meos_internal_temporal_inout ===== +static void Gen_temporal_from_mfjson(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); + 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_json_restrict ===== -static void Gen_tjsonb_at_value(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_npoint_restrict ===== +static void Gen_tnpoint_at_npointset(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_at_value(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 = tnpoint_at_npointset(t, cc); + free(t); free(cc); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tjsonb_minus_value(DataChunk &args, ExpressionState &, Vector &result) { +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 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 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_pointcloud_base_accessor ===== -static void Gen_pcpoint_get_pcid(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; - }); -} - -static void Gen_pcpatch_get_pcid(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_quadbin_set_accessor ===== +static void Gen_quadbinset_values(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; - }); + 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_cbuffer_base_accessor ===== -static void Gen_cbuffer_radius(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @ingroup meos_rgeo_spatialfuncs ===== +static void Gen_trgeometry_body_point_trajectory(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; + 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 +2718,29 @@ 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_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 = jsonbset_out(s); + char * r = s2cellset_out(s); free(s); return TakeCString(result, r); }); } + +// ===== @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) -> double { + double r = h3index_cell_area(static_cast(a0)); + return (double) r; + }); +} + } // anonymous void RegisterGenerated_meos_temporal_bbox_pos(ExtensionLoader &loader) { @@ -3570,331 +3449,329 @@ 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_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_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_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_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_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_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_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) { @@ -3903,31 +3780,35 @@ void RegisterGenerated_meos_cbuffer_accessor(ExtensionLoader &loader) { RegisterSerializedScalarFunction(loader, ScalarFunction("startValue", {CbufferTypes::tcbuffer()}, CbufferTypes::cbuffer(), Gen_tcbuffer_start_value)); } -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_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_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_s2cell_set_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::s2cellset()}, LogicalType::VARCHAR, Gen_s2cellset_out)); +} + +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 2a19df36..42a7024f 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,847 +2774,949 @@ 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; }); } +static void Gen_cbuffer_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); + 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_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) { + Cbuffer *s1 = BlobToCbuffer(a); + Cbuffer *s2 = BlobToCbuffer(b); + bool r = cbuffer_same(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_ne(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(), - [&](int64_t a0, int64_t a1) -> bool { - bool r = quadbin_ne(static_cast(a0), static_cast(a1)); - return (bool) r; + 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_quadbin_lt(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(), - [&](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 in, uint64_t a2) { + TBox *s = BlobToTbox(in); + uint64_t r = tbox_hash_extended(s, a2); + free(s); + return r; }); } -static void Gen_quadbin_le(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(), - [&](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) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_eq(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_gt(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(), - [&](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) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_ge(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(), - [&](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) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_gt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_cmp(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(), - [&](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) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_le(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_quadbin_hash(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_lt(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) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_lt(s1, s2); + free(s1); free(s2); return r; }); } -static void Gen_quadbin_hash_extended(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tbox_ne(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) { + TBox *s1 = BlobToTbox(a); + TBox *s2 = BlobToTbox(b); + bool r = tbox_ne(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_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(), - [&](int64_t a1, string_t in, 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_quadbin(a0); + return static_cast(r); + }); +} + +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 = teq_h3index_th3index((uint64_t) a1, t); + Temporal *r = tbigint_to_tquadbin(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_th3index_h3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tquadbin_to_tbigint(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 = teq_th3index_h3index(t, (uint64_t) a2); + Temporal *r = tquadbin_to_tbigint(t); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_teq_th3index_th3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_to_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) -> string_t { - Temporal *t1 = BlobToTemporal(in1); - Temporal *t2 = BlobToTemporal(in2); - Temporal *r = teq_th3index_th3index(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 = tgeogpoint_to_tquadbin(t, a2, a3); + free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_h3index_th3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeogpoint_to_tquadbin_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 { + 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 = tne_h3index_th3index((uint64_t) a1, t); + Temporal *r = tgeogpoint_to_tquadbin(t, a2, true); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_th3index_h3index(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, int64_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); - Temporal *r = tne_th3index_h3index(t, (uint64_t) a2); + Temporal *r = tgeompoint_to_tquadbin(t, a2, a3); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_tne_th3index_th3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeompoint_to_tquadbin_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 = tne_th3index_th3index(t1, t2); - free(t1); free(t2); + 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_tquadbin(t, a2, true); + 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_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 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); + 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; }); } -static void Gen_teq_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_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 = teq_trgeometry_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) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_ne(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tne_geo_trgeometry(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_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_trgeometry(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) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_lt(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_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 = tne_trgeometry_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) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_le(s1, s2); + free(s1); free(s2); + return r; }); } +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) { + TPCBox *s1 = BlobToTpcbox(a); + TPCBox *s2 = BlobToTpcbox(b); + bool r = tpcbox_gt(s1, s2); + free(s1); free(s2); + return r; + }); +} -// ===== @ingroup meos_h3_latlng ===== -static void Gen_tgeogpoint_to_th3index(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpcbox_ge(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); - 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_ge(s1, s2); + free(s1); free(s2); + return r; }); } -static void Gen_tgeompoint_to_th3index(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, int32_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 = tgeompoint_to_th3index(t, a2); + Temporal *r = tgeo_rotate_x(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_to_tgeogpoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeo_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 = th3index_to_tgeogpoint(t); + Temporal *r = tgeo_rotate_y(t, a2); free(t); return TemporalToBlobN(result, r, mask, idx); }); } -static void Gen_th3index_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tgeo_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 = th3index_to_tgeompoint(t); + Temporal *r = tgeo_rotate_z(t, a2); 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_h3_accessor ===== +static void Gen_th3index_start_value(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); + 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_tpcbox_hasz(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_end_value(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); + 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_tpcbox_hast(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_value_n(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); - return r; + 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_tpcbox_srid(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_th3index_values(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; - }); + 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); + } } -static void Gen_tpcbox_pcid(DataChunk &args, ExpressionState &, Vector &result) { + +// ===== @ingroup meos_cbuffer_base_inout ===== +static void Gen_cbuffer_as_ewkt(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; + 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); }); } +static void Gen_cbuffer_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_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_cbuffer_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) { + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_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_cbuffer_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) { + Cbuffer *s = BlobToCbuffer(a); + char *r = cbuffer_as_text(s, 15); free(s); - return SetToBlobN(result, r, mask, idx); + return TakeCString(result, r); + }); +} + + +// ===== @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_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_npoint_conversion ===== -static void Gen_tgeompoint_to_tnpoint(DataChunk &args, ExpressionState &, Vector &result) { +// ===== @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); - Temporal *r = tgeompoint_to_tnpoint(t); + Pose * r = tpose_end_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + return PoseToBlobN(result, r, mask, idx); }); } -static void Gen_tnpoint_to_tgeompoint(DataChunk &args, ExpressionState &, Vector &result) { +static void Gen_tpose_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 = tnpoint_to_tgeompoint(t); + Pose * r = tpose_start_value(t); free(t); - return TemporalToBlobN(result, r, mask, idx); + 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_box_inout ===== -static void Gen_tbox_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) { - TBox *s = BlobToTbox(a); - char *r = tbox_out(s, a2); + STBox *s = BlobToStbox(a); + char *r = stbox_out(s, a2); free(s); return TakeCString(result, r); }); } -static void Gen_tbox_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) { - TBox *s = BlobToTbox(a); - char *r = tbox_out(s, 15); + STBox *s = BlobToStbox(a); + char *r = stbox_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_h3_comp ===== +static void Gen_ever_eq_h3indexset_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 = tpcpatch_to_tgeometry(t); - free(t); - return TemporalToBlobN(result, r, mask, idx); + 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_quadbin_set_inout ===== -static void Gen_quadbinset_out(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(), + 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_posechain_base_srid ===== +static void Gen_posechain_srid(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + 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); + PoseChain *v = BlobToPosechain(in); + int32_t r = posechain_srid(v); + free(v); + return r; }); } -// ===== @ingroup meos_s2cell_inout ===== -static void Gen_ts2cell_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) { Temporal *t = BlobToTemporal(in); - char * r = ts2cell_out(t); + char * r = tjsonb_out(t); free(t); return TakeCString(result, r); }); @@ -4045,6 +4039,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 +4194,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,157 +4327,167 @@ 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_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_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_conversion(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("tgeometry", {TPcpatchTypes::tpcpatch()}, TGeometryTypes::tgeometry(), Gen_tpcpatch_to_tgeometry)); -} +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_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_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_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_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_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_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_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_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_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_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_quadbin_set_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {SetTypes::quadbinset()}, LogicalType::VARCHAR, Gen_quadbinset_out)); +void RegisterGenerated_meos_posechain_base_srid(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("SRID", {PosechainTypes::posechain()}, LogicalType::INTEGER, Gen_posechain_srid)); } -void RegisterGenerated_meos_s2cell_inout(ExtensionLoader &loader) { - RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {S2cellTypes::ts2cell()}, LogicalType::VARCHAR, Gen_ts2cell_out)); +void RegisterGenerated_meos_json_inout(ExtensionLoader &loader) { + RegisterSerializedScalarFunction(loader, ScalarFunction("asText", {TJsonbTypes::tjsonb()}, LogicalType::VARCHAR, Gen_tjsonb_out)); } } // namespace duckdb 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; 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 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: 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