public void visit()

in bigquery-antipattern-recognition/src/main/java/com/google/zetasql/toolkit/antipattern/parser/visitors/IdentifyCTEsEvalMultipleTimesVisitor.java [54:76]


  public void visit(ASTWithClause withClause) {

    // Loop through all the CTE entries in the WITH clause.
    withClause
        .getWith()
        .forEach(
            alias -> {
              // Add the CTE name to the count map with initial count 0.
              cteCountMap.put(alias.getAlias().getIdString().toLowerCase(), 0);
              cteStartPositionMap.put(
                  alias.getAlias().getIdString().toLowerCase(),
                  alias.getParseLocationRange().start());
              // Visit from and fetch tablename
              if (alias.getQuery().getQueryExpr() instanceof ASTSelect && ((ASTSelect) alias.getQuery().getQueryExpr())
              .getFromClause() != null) {
                ASTNodes.ASTTableExpression tableExpression =
                    ((ASTSelect) alias.getQuery().getQueryExpr())
                        .getFromClause()
                        .getTableExpression();
                visit(tableExpression);
              }
            });
  }