diff --git a/src/generated/generated_temporal_udfs_15.cpp b/src/generated/generated_temporal_udfs_15.cpp index 7193efee..4e7568fa 100644 --- a/src/generated/generated_temporal_udfs_15.cpp +++ b/src/generated/generated_temporal_udfs_15.cpp @@ -1118,6 +1118,846 @@ inline Temporal * trgeometry_append_tsequence_expand(Temporal * p0, const Tempor // ===== @ingroup meos_box_bbox_topo ===== +static void Gen_adjacent_numspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = adjacent_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_adjacent_numspan_tbox_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = adjacent_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_adjacent_numspan_tbox_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = adjacent_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_adjacent_tbox_numspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = adjacent_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_adjacent_tbox_numspan_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = adjacent_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_adjacent_tbox_numspan_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = adjacent_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_adjacent_tbox_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = adjacent_tbox_tstzspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_adjacent_tstzspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = adjacent_tstzspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contained_numspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = contained_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contained_numspan_tbox_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = contained_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contained_numspan_tbox_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = contained_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contained_tbox_numspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = contained_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contained_tbox_numspan_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = contained_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contained_tbox_numspan_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = contained_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contained_tbox_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = contained_tbox_tstzspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contained_tstzspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = contained_tstzspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contains_numspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = contains_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contains_numspan_tbox_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = contains_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contains_numspan_tbox_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = contains_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contains_tbox_numspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = contains_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contains_tbox_numspan_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = contains_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contains_tbox_numspan_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = contains_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contains_tbox_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = contains_tbox_tstzspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_contains_tstzspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = contains_tstzspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overlaps_numspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overlaps_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overlaps_numspan_tbox_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overlaps_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overlaps_numspan_tbox_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overlaps_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overlaps_tbox_numspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overlaps_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overlaps_tbox_numspan_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overlaps_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overlaps_tbox_numspan_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overlaps_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overlaps_tbox_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overlaps_tbox_tstzspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overlaps_tstzspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overlaps_tstzspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_same_numspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = same_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_same_numspan_tbox_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = same_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_same_numspan_tbox_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = same_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_same_tbox_numspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = same_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_same_tbox_numspan_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = same_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_same_tbox_numspan_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = same_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_same_tbox_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = same_tbox_tstzspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_same_tstzspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = same_tstzspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + static void Gen_adjacent_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), @@ -5481,6 +6321,86 @@ static void Gen_float_degrees_d(DataChunk &args, ExpressionState &, Vector &resu } // anonymous void RegisterGenerated_meos_box_bbox_topo(ExtensionLoader &loader) { + RegisterMeosFunction(loader, ScalarFunction("tboxAdjacent", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("-|-", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxAdjacent", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("-|-", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxAdjacent", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("-|-", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxAdjacent", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxAdjacent", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxAdjacent", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxAdjacent", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxAdjacent", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("-|-", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxContained", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("<@", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxContained", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("<@", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxContained", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("<@", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxContained", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contained_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("<@", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contained_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxContained", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contained_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("<@", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contained_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxContained", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contained_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("<@", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contained_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxContained", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("<@", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contained_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxContained", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("<@", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxContains", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("@>", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxContains", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("@>", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxContains", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("@>", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxContains", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contains_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("@>", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_contains_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxContains", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contains_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("@>", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_contains_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxContains", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contains_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("@>", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_contains_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxContains", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("@>", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_contains_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxContains", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("@>", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contains_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverlaps", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("&&", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverlaps", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("&&", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverlaps", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("&&", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverlaps", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("&&", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverlaps", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("&&", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverlaps", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("&&", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverlaps", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("&&", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overlaps_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverlaps", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("&&", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overlaps_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxSame", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("~=", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxSame", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("~=", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxSame", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("~=", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxSame", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_same_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("~=", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_same_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxSame", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_same_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("~=", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_same_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxSame", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_same_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("~=", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_same_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxSame", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("~=", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_same_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxSame", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("~=", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_same_tstzspan_tbox)); RegisterMeosFunction(loader, ScalarFunction("tboxAdjacent", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); RegisterMeosFunction(loader, ScalarFunction("-|-", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_adjacent_tbox_tbox)); RegisterMeosFunction(loader, ScalarFunction("tboxContained", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_contained_tbox_tbox)); diff --git a/src/generated/generated_temporal_udfs_7.cpp b/src/generated/generated_temporal_udfs_7.cpp index 07feea00..aac31448 100644 --- a/src/generated/generated_temporal_udfs_7.cpp +++ b/src/generated/generated_temporal_udfs_7.cpp @@ -1118,6 +1118,678 @@ inline Temporal * trgeometry_append_tsequence_expand(Temporal * p0, const Tempor // ===== @ingroup meos_box_bbox_pos ===== +static void Gen_after_tbox_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = after_tbox_tstzspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_after_tstzspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = after_tstzspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_before_tbox_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = before_tbox_tstzspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_before_tstzspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = before_tstzspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_left_numspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = left_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_left_numspan_tbox_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = left_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_left_numspan_tbox_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = left_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_left_tbox_numspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = left_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_left_tbox_numspan_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = left_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_left_tbox_numspan_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = left_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overafter_tbox_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overafter_tbox_tstzspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overafter_tstzspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overafter_tstzspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overbefore_tbox_tstzspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overbefore_tbox_tstzspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overbefore_tstzspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overbefore_tstzspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overleft_numspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overleft_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overleft_numspan_tbox_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overleft_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overleft_numspan_tbox_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overleft_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overleft_tbox_numspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overleft_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overleft_tbox_numspan_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overleft_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overleft_tbox_numspan_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overleft_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overright_numspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overright_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overright_numspan_tbox_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overright_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overright_numspan_tbox_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = overright_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overright_tbox_numspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overright_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overright_tbox_numspan_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overright_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_overright_tbox_numspan_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = overright_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_right_numspan_tbox(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = right_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_right_numspan_tbox_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = right_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_right_numspan_tbox_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + Span *p0 = BlobToSpan(in0[i]); + TBox *p1 = BlobToTbox(in1[i]); + bool r = right_numspan_tbox(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_right_tbox_numspan(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = right_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_right_tbox_numspan_v1(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = right_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + +static void Gen_right_tbox_numspan_v2(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + for (idx_t c = 0; c < 2; c++) args.data[c].Flatten(rows); + auto in0 = FlatVector::GetData(args.data[0]); + auto in1 = FlatVector::GetData(args.data[1]); + auto out = FlatVector::GetData(result); + auto &outv = FlatVector::Validity(result); + for (idx_t i = 0; i < rows; i++) { + if (!FlatVector::Validity(args.data[0]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + if (!FlatVector::Validity(args.data[1]).RowIsValid(i)) { outv.SetInvalid(i); continue; } + TBox *p0 = BlobToTbox(in0[i]); + Span *p1 = BlobToSpan(in1[i]); + bool r = right_tbox_numspan(p0, p1); + free(p0); + free(p1); + out[i] = (bool) r; + } + if (rows == 1) result.SetVectorType(VectorType::CONSTANT_VECTOR); +} + static void Gen_after_tbox_tbox(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); BinaryExecutor::Execute(args.data[0], args.data[1], result, args.size(), @@ -2022,6 +2694,62 @@ static void Gen_tne_trgeometry_geo(DataChunk &args, ExpressionState &, Vector &r } // anonymous void RegisterGenerated_meos_box_bbox_pos(ExtensionLoader &loader) { + RegisterMeosFunction(loader, ScalarFunction("tboxAfter", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_after_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxAfter", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_after_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxBefore", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_before_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxBefore", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_before_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxLeft", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("<<", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxLeft", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("<<", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxLeft", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("<<", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxLeft", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("<<", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_left_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxLeft", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("<<", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_left_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxLeft", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("<<", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_left_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverafter", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overafter_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverafter", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overafter_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverbefore", {TboxType::tbox(), SpanTypes::tstzspan()}, LogicalType::BOOLEAN, Gen_overbefore_tbox_tstzspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverbefore", {SpanTypes::tstzspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overbefore_tstzspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverleft", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("&<", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverleft", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("&<", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverleft", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("&<", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overleft_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverleft", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("&<", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overleft_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverleft", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("&<", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overleft_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverleft", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("&<", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overleft_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverright", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("&>", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverright", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("&>", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverright", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("&>", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_overright_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverright", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("&>", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_overright_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverright", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("&>", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_overright_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxOverright", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("&>", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_overright_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxRight", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction(">>", {SpanTypes::intspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_numspan_tbox)); + RegisterMeosFunction(loader, ScalarFunction("tboxRight", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction(">>", {SpanTypes::bigintspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_numspan_tbox_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxRight", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction(">>", {SpanTypes::floatspan(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_right_numspan_tbox_v2)); + RegisterMeosFunction(loader, ScalarFunction("tboxRight", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction(">>", {TboxType::tbox(), SpanTypes::intspan()}, LogicalType::BOOLEAN, Gen_right_tbox_numspan)); + RegisterMeosFunction(loader, ScalarFunction("tboxRight", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction(">>", {TboxType::tbox(), SpanTypes::bigintspan()}, LogicalType::BOOLEAN, Gen_right_tbox_numspan_v1)); + RegisterMeosFunction(loader, ScalarFunction("tboxRight", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_tbox_numspan_v2)); + RegisterMeosFunction(loader, ScalarFunction(">>", {TboxType::tbox(), SpanTypes::floatspan()}, LogicalType::BOOLEAN, Gen_right_tbox_numspan_v2)); RegisterMeosFunction(loader, ScalarFunction("tboxAfter", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_after_tbox_tbox)); RegisterMeosFunction(loader, ScalarFunction("tboxBefore", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_before_tbox_tbox)); RegisterMeosFunction(loader, ScalarFunction("tboxLeft", {TboxType::tbox(), TboxType::tbox()}, LogicalType::BOOLEAN, Gen_left_tbox_tbox)); diff --git a/src/generated/generated_temporal_udfs_8.cpp b/src/generated/generated_temporal_udfs_8.cpp index c5b6fb61..30a40316 100644 --- a/src/generated/generated_temporal_udfs_8.cpp +++ b/src/generated/generated_temporal_udfs_8.cpp @@ -2718,6 +2718,34 @@ static void Gen_tposechain_value(DataChunk &args, ExpressionState &, Vector &res }); } +static void Gen_tposechain_value_at_timestamptz(DataChunk &args, ExpressionState &, Vector &result) { + EnsureMeosThreadInitialized(); + const idx_t rows = args.size(); + UnifiedVectorFormat u[2]; + for (idx_t c = 0; c < 2; c++) args.data[c].ToUnifiedFormat(rows, u[c]); + result.SetVectorType(VectorType::FLAT_VECTOR); + auto out = FlatVector::GetData(result); + auto &mask = FlatVector::Validity(result); + for (idx_t idx = 0; idx < rows; idx++) { + idx_t ri[2]; + bool valid = true; + for (idx_t c = 0; c < 2; c++) { + ri[c] = u[c].sel->get_index(idx); + valid = valid && u[c].validity.RowIsValid(ri[c]); + } + if (!valid) { mask.SetInvalid(idx); continue; } + out[idx] = [&]() -> string_t { + Temporal *t = BlobToTemporal(UnifiedVectorFormat::GetData(u[0])[ri[0]]); + timestamp_tz_t a2 = UnifiedVectorFormat::GetData(u[1])[ri[1]]; + PoseChain *o = NULL; + bool ok = tposechain_value_at_timestamptz(t, DuckDBToMeosTimestamp(a2).value, true, &o); + free(t); + if (! ok) { mask.SetInvalid(idx); return string_t(); } + return PosechainToBlob(result, o); + }(); + } +} + static void Gen_tposechain_value_n(DataChunk &args, ExpressionState &, Vector &result) { EnsureMeosThreadInitialized(); const idx_t rows = args.size(); @@ -4991,6 +5019,7 @@ void RegisterGenerated_meos_posechain_accessor(ExtensionLoader &loader) { RegisterMeosFunction(loader, ScalarFunction("numPoses", {PosechainTypes::tposechain()}, LogicalType::INTEGER, Gen_tposechain_num_poses)); RegisterMeosFunction(loader, ScalarFunction("startValue", {PosechainTypes::tposechain()}, PosechainTypes::posechain(), Gen_tposechain_start_value)); RegisterMeosFunction(loader, ScalarFunction("getValue", {PosechainTypes::tposechain()}, PosechainTypes::posechain(), Gen_tposechain_value)); + RegisterMeosFunction(loader, ScalarFunction("valueAtTimestamp", {PosechainTypes::tposechain(), LogicalType::TIMESTAMP_TZ}, PosechainTypes::posechain(), Gen_tposechain_value_at_timestamptz)); RegisterMeosFunction(loader, ScalarFunction("valueN", {PosechainTypes::tposechain(), LogicalType::INTEGER}, PosechainTypes::posechain(), Gen_tposechain_value_n)); } diff --git a/vcpkg_ports/meos/portfile.cmake b/vcpkg_ports/meos/portfile.cmake index babbe236..f0512143 100644 --- a/vcpkg_ports/meos/portfile.cmake +++ b/vcpkg_ports/meos/portfile.cmake @@ -41,7 +41,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 "9e4cf5d42278fd0e5f8d1be1f4e98c467b210054") +set(_MEOS_REF "e87fd598462920e209e050da5f466de24c8761d1") message(STATUS "MEOS port: building MobilityDB at recorded ${_MEOS_REF}") # FETCH_REF names the branch (always advertised) so the fetch works even when the