[fix](nereids)runtime filter translator failed on set operator (#28102)
* runtime filter translator failed on set operator
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user