docs: private Map<Pair<String, Integer>, Pair<String, Integer>> gbyMatches(MaterializedViewInfo mv) {
          final FilterMatcher filter = new FilterMatcher(m_selectStmt.m_joinTree.getJoinExpression(), predicate_of(mv));
          //  *** Matching criteria/order: ***
          // 1. Filters match;
          // 2. Group-by-columns' table is same as MV's source table;
          // 3. Those group-by-column's columns are same as MV's group-by columns;
          // 4. Select stmt's group-by column names match with MV's
          // 5. Each column's aggregation type match, in the sense of set equality;
          if (filter.match() && gbyTablesEqual(mv) && gbyColumnsMatch(mv)) {
              return getViewColumnMaps(mv);
          } else {
              return null;
          }
      }