[fix](nereids)runtime filter translator failed on set operator (#28102)

* runtime filter translator failed on set operator
This commit is contained in:
minghong
2023-12-08 12:58:42 +08:00
committed by GitHub
parent 341822ec05
commit 61d556c718
21 changed files with 42 additions and 35 deletions

View File

@ -52,6 +52,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* runtime filter context used at post process and translation.
@ -273,6 +274,7 @@ public class RuntimeFilterContext {
l.addAll(r);
return l;
});
filters = filters.stream().distinct().collect(Collectors.toList());
filters.sort((a, b) -> a.getId().compareTo(b.getId()));
return filters;
}

View File

@ -122,8 +122,12 @@ public abstract class AbstractPhysicalPlan extends AbstractPlan implements Physi
ctx.getRuntimeFilterBySrcAndType(src, type, builderNode);
Preconditions.checkState(scanSlot != null, "scan slot is null");
if (filter != null) {
this.addAppliedRuntimeFilter(filter);
filter.addTargetSlot(scanSlot);
filter.addTargetExpression(scanSlot);
ctx.addJoinToTargetMap(builderNode, scanSlot.getExprId());
ctx.setTargetExprIdToFilter(scanSlot.getExprId(), filter);
ctx.setTargetsOnScanNode(aliasTransferMap.get(probeExpr).first, scanSlot);
} else {
filter = new RuntimeFilter(generator.getNextId(),
src, ImmutableList.of(scanSlot), type, exprOrder, builderNode, buildSideNdv);