[fix](Nereids) adjust nullable for set operation may cause IndexOutOfBound (#35588)

after we refactor set oepration, let it has projection ability, its
output size may diff with its child's output size. so we should use it
output size as nullable flag list size to ensure it has same size with
set operation's output.
This commit is contained in:
morrySnow
2024-05-29 18:52:55 +08:00
committed by yiguolei
parent bef931de9d
commit aafd0a7868
2 changed files with 47 additions and 1 deletions

View File

@ -168,7 +168,7 @@ 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.child(0).getOutput().stream()
inputNullable = setOperation.getRegularChildOutput(0).stream()
.map(ExpressionTrait::nullable).collect(Collectors.toList());
for (int i = 0; i < setOperation.arity(); i++) {
List<Slot> childOutput = setOperation.child(i).getOutput();