Skip to content

Commit 633d20f

Browse files
author
liutang123
committed
[fix] (mtmv) Choose a valid partition column when there are both valid and invalid expressions
1 parent 47cfd22 commit 633d20f

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/MaterializedViewUtils.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,8 @@ private SlotReference getContextPartitionColumn(IncrementCheckerContext context)
589589
private static boolean checkPartition(Collection<? extends Expression> expressionsToCheck, Plan plan,
590590
IncrementCheckerContext context) {
591591
NamedExpression partitionColumn = context.getMvPartitionColumn();
592-
for (Expression projectSlot : expressionsToCheck) {
592+
593+
OUTER_CHECK: for (Expression projectSlot : expressionsToCheck) {
593594
if (projectSlot.isColumnFromTable() && projectSlot.equals(partitionColumn.toSlot())) {
594595
continue;
595596
}
@@ -621,7 +622,7 @@ private static boolean checkPartition(Collection<? extends Expression> expressio
621622
String.format("partition expression use more than one slot reference, invalid "
622623
+ "expressionToCheckColumns is %s, partitionColumnDateColumns is %s",
623624
expressionToCheckColumns, partitionColumns));
624-
return false;
625+
continue;
625626
}
626627
List<Expression> expressions = expressionToCheck.collectToList(Expression.class::isInstance);
627628
for (Expression expression : expressions) {
@@ -630,7 +631,7 @@ private static boolean checkPartition(Collection<? extends Expression> expressio
630631
context.addFailReason(
631632
String.format("column to check use invalid implicit expression, invalid "
632633
+ "expression is %s", expression));
633-
return false;
634+
continue OUTER_CHECK;
634635
}
635636
}
636637
List<Expression> partitionExpressions = partitionExpression.collectToList(
@@ -641,7 +642,7 @@ private static boolean checkPartition(Collection<? extends Expression> expressio
641642
context.addFailReason(
642643
String.format("partition column use invalid implicit expression, invalid "
643644
+ "expression is %s", expression));
644-
return false;
645+
continue OUTER_CHECK;
645646
}
646647
}
647648
List<DateTrunc> expressionToCheckDataTruncList =
@@ -652,16 +653,17 @@ private static boolean checkPartition(Collection<? extends Expression> expressio
652653
// mv time unit level is little then query
653654
context.addFailReason("partition column time unit level should be "
654655
+ "greater than sql select column");
655-
return false;
656+
continue;
656657
}
657658
if (!partitionColumn.isColumnFromTable()) {
658659
context.setMvPartitionColumn(partitionColumns.iterator().next());
659660
}
660661
if (!context.getPartitionExpression().isPresent()) {
661662
context.setPartitionExpression(partitionExpression);
662663
}
664+
return true;
663665
}
664-
return true;
666+
return false;
665667
}
666668
}
667669

0 commit comments

Comments
 (0)