docs: private boolean edgeCaseQueryNoFixNeeded(Set<String> mvDDLGroupbyColumnNames,
              Map<String, ExpressionType> mvColumnAggType,
              List<ParsedColInfo> displayColumns,
              List<ParsedColInfo> groupByColumns) {
  
          // Condition (1): Group by columns must be part of or all from MV DDL group by TVEs.
          for (ParsedColInfo gcol: groupByColumns) {
              assert(gcol.m_expression instanceof TupleValueExpression);
              TupleValueExpression tve = (TupleValueExpression) gcol.m_expression;
              if (tve.getTableName().equals(getMVTableName()) &&
                      ! mvDDLGroupbyColumnNames.contains(tve.getColumnName())) {
                  return false;
              }
          }
  
          // Condition (2): All the aggregations must qualify.
          for (ParsedColInfo dcol: displayColumns) {
              if (groupByColumns.contains(dcol)) {
                  // Skip a group-by column pass-through.
                  continue;
              }
              if (dcol.m_expression instanceof AggregateExpression == false) {
                  return false;
              }
              AggregateExpression aggExpr = (AggregateExpression) dcol.m_expression;
              if (aggExpr.getLeft() instanceof TupleValueExpression == false) {
                  return false;
              }
              ExpressionType type = aggExpr.getExpressionType();
  
              // Only MIN, MAX, and non-DISTINCT SUM
              // can tolerate a skipped reaggregation.
              if ((type != ExpressionType.AGGREGATE_SUM || aggExpr.isDistinct())
                      && type != ExpressionType.AGGREGATE_MIN
                      && type != ExpressionType.AGGREGATE_MAX) {
                  return false;
              }
  
              TupleValueExpression tve = (TupleValueExpression) aggExpr.getLeft();
              if (tve.getTableName().equals(getMVTableName())) {
                  String columnName = tve.getColumnName();
                  // The type of the aggregation in the query must match the
                  // type of aggregation defined for the view column --
                  // SUMming a SUM, MINning a MIN, or MAXxing a MAX.
                  if (mvColumnAggType.get(columnName) != type ) {
                      return false;
                  }
              }
              else {
                  // The aggregate argument is a column from the
                  // other (non-view) side of the join.
                  // It's OK for its rows to get duplicated by joining
                  // with multiple "partial group" rows ONLY if it is
                  // feeding a MIN or MAX.
                  // The duplication would corrupt a SUM.
                  if (type == ExpressionType.AGGREGATE_SUM) {
                      return false;
                  }
              }
          }
  
          // Edge case query can be optimized with correct answer without MV reAggregation fix.
          return true;
      }