diff --git a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/aggfunctions/MaxAggFunction.java b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/aggfunctions/MaxAggFunction.java index 3cdab56ba0c07..4e74ed5655edf 100644 --- a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/aggfunctions/MaxAggFunction.java +++ b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/aggfunctions/MaxAggFunction.java @@ -72,9 +72,12 @@ public Expression[] accumulateExpressions() { @Override public Expression[] retractExpressions() { - // TODO FLINK-12295, ignore exception now - // throw new TableException("This function does not support retraction, Please choose - // MaxWithRetractAggFunction."); + // See optimization in FlinkRelMdModifiedMonotonicity. + // This function can ignore retraction message: + // SQL: SELECT MAX(cnt), SUM(cnt) FROM (SELECT count(a) as cnt FROM T GROUP BY b) + // The cnt is modified increasing, so the MAX(cnt) can ignore retraction message. But this + // doesn't mean that the node won't receive the retraction message, because there are other + // aggregate operators that need retraction message, such as SUM(cnt). return new Expression[0]; } diff --git a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/aggfunctions/MinAggFunction.java b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/aggfunctions/MinAggFunction.java index 356b563568d11..fbd6b1f7c5cb9 100644 --- a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/aggfunctions/MinAggFunction.java +++ b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/aggfunctions/MinAggFunction.java @@ -72,9 +72,7 @@ public Expression[] accumulateExpressions() { @Override public Expression[] retractExpressions() { - // TODO FLINK-12295, ignore exception now - // throw new TableException("This function does not support retraction, Please choose - // MinWithRetractAggFunction."); + // See MaxAggFunction.retractExpressions return new Expression[0]; }