Skip to content

Commit 2ed59ca

Browse files
author
liutang123
committed
[fix] (mtmv) Choose a valid partition column when there are both valid and invalid expressions
1 parent 73a710f commit 2ed59ca

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
@@ -580,7 +580,8 @@ private SlotReference getContextPartitionColumn(IncrementCheckerContext context)
580580
private static boolean checkPartition(Collection<? extends Expression> expressionsToCheck, Plan plan,
581581
IncrementCheckerContext context) {
582582
NamedExpression partitionColumn = context.getMvPartitionColumn();
583-
for (Expression projectSlot : expressionsToCheck) {
583+
584+
OUTER_CHECK: for (Expression projectSlot : expressionsToCheck) {
584585
if (projectSlot.isColumnFromTable() && projectSlot.equals(partitionColumn.toSlot())) {
585586
continue;
586587
}
@@ -612,7 +613,7 @@ private static boolean checkPartition(Collection<? extends Expression> expressio
612613
String.format("partition expression use more than one slot reference, invalid "
613614
+ "expressionToCheckColumns is %s, partitionColumnDateColumns is %s",
614615
expressionToCheckColumns, partitionColumns));
615-
return false;
616+
continue;
616617
}
617618
List<Expression> expressions = expressionToCheck.collectToList(Expression.class::isInstance);
618619
for (Expression expression : expressions) {
@@ -621,7 +622,7 @@ private static boolean checkPartition(Collection<? extends Expression> expressio
621622
context.addFailReason(
622623
String.format("column to check use invalid implicit expression, invalid "
623624
+ "expression is %s", expression));
624-
return false;
625+
continue OUTER_CHECK;
625626
}
626627
}
627628
List<Expression> partitionExpressions = partitionExpression.collectToList(
@@ -632,7 +633,7 @@ private static boolean checkPartition(Collection<? extends Expression> expressio
632633
context.addFailReason(
633634
String.format("partition column use invalid implicit expression, invalid "
634635
+ "expression is %s", expression));
635-
return false;
636+
continue OUTER_CHECK;
636637
}
637638
}
638639
List<DateTrunc> expressionToCheckDataTruncList =
@@ -643,16 +644,17 @@ private static boolean checkPartition(Collection<? extends Expression> expressio
643644
// mv time unit level is little then query
644645
context.addFailReason("partition column time unit level should be "
645646
+ "greater than sql select column");
646-
return false;
647+
continue;
647648
}
648649
if (!partitionColumn.isColumnFromTable()) {
649650
context.setMvPartitionColumn(partitionColumns.iterator().next());
650651
}
651652
if (!context.getPartitionExpression().isPresent()) {
652653
context.setPartitionExpression(partitionExpression);
653654
}
655+
return true;
654656
}
655-
return true;
657+
return false;
656658
}
657659
}
658660

0 commit comments

Comments
 (0)