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);
}
});
}