pick from master #39109 when first regulator child output nullable is not right, we may get wrong nullable output, and lead be crash
This commit is contained in:
@ -26,7 +26,6 @@ import org.apache.doris.nereids.trees.expressions.NamedExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.OrderExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.Slot;
|
||||
import org.apache.doris.nereids.trees.expressions.SlotReference;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.ExpressionTrait;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.Function;
|
||||
import org.apache.doris.nereids.trees.expressions.visitor.DefaultExpressionRewriter;
|
||||
import org.apache.doris.nereids.trees.plans.Plan;
|
||||
@ -59,7 +58,6 @@ import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* because some rule could change output's nullable.
|
||||
@ -168,8 +166,10 @@ public class AdjustNullable extends DefaultPlanRewriter<Map<ExprId, Slot>> imple
|
||||
ImmutableList.Builder<List<SlotReference>> newChildrenOutputs = ImmutableList.builder();
|
||||
List<Boolean> inputNullable = null;
|
||||
if (!setOperation.children().isEmpty()) {
|
||||
inputNullable = setOperation.getRegularChildOutput(0).stream()
|
||||
.map(ExpressionTrait::nullable).collect(Collectors.toList());
|
||||
inputNullable = Lists.newArrayListWithCapacity(setOperation.getOutputs().size());
|
||||
for (int i = 0; i < setOperation.getOutputs().size(); i++) {
|
||||
inputNullable.add(false);
|
||||
}
|
||||
for (int i = 0; i < setOperation.arity(); i++) {
|
||||
List<Slot> childOutput = setOperation.child(i).getOutput();
|
||||
List<SlotReference> setChildOutput = setOperation.getRegularChildOutput(i);
|
||||
|
||||
Reference in New Issue
Block a user