Merge pull request #14908 from roidelapluie/fix14889

Explain, vector-to-vector: Do not compute results for set operators
This commit is contained in:
Julius Volz 2024-09-16 12:20:49 +02:00 committed by GitHub
commit d67ba3ed30
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -8,7 +8,7 @@ import {
vectorMatchCardinality, vectorMatchCardinality,
VectorMatching, VectorMatching,
} from "./ast"; } from "./ast";
import { isComparisonOperator } from "./utils"; import { isComparisonOperator, isSetOperator } from "./utils";
// We use a special (otherwise invalid) sample value to indicate that // We use a special (otherwise invalid) sample value to indicate that
// a sample has been filtered away by a comparison operator. // a sample has been filtered away by a comparison operator.
@ -340,6 +340,11 @@ export const computeVectorVectorBinOp = (
// Annotate the match groups with errors (if any) and populate the results. // Annotate the match groups with errors (if any) and populate the results.
Object.values(groups).forEach((mg) => { Object.values(groups).forEach((mg) => {
// Do not populate results for set operators.
if (isSetOperator(op)) {
return;
}
if (matching.card === vectorMatchCardinality.oneToOne) { if (matching.card === vectorMatchCardinality.oneToOne) {
if (mg.lhs.length > 1 && mg.rhs.length > 1) { if (mg.lhs.length > 1 && mg.rhs.length > 1) {
mg.error = { type: MatchErrorType.multipleMatchesOnBothSides }; mg.error = { type: MatchErrorType.multipleMatchesOnBothSides };