in bigquery-antipattern-recognition/src/main/java/com/google/zetasql/toolkit/antipattern/Main.java [63:101]
private static void executeAntiPatternsInQuery(
InputQuery inputQuery,
OutputWriter outputWriter,
AntiPatternCommandParser cmdParser,
AntiPatternHelper antiPatternHelper) {
try {
List<AntiPatternVisitor> visitorsThatFoundAntiPatterns = new ArrayList<>();
// parser visitors
antiPatternHelper.checkForAntiPatternsInQueryWithParserVisitors(
inputQuery, visitorsThatFoundAntiPatterns);
// analyzer visitor
if (antiPatternHelper.getUseAnalizer()) {
antiPatternHelper.checkForAntiPatternsInQueryWithAnalyzerVisitors(
inputQuery, visitorsThatFoundAntiPatterns);
}
// rewrite
if (cmdParser.rewriteSQL()) {
GeminiRewriter.rewriteSQL(
inputQuery,
visitorsThatFoundAntiPatterns,
antiPatternHelper,
cmdParser.getLlmRetriesSQL(),
cmdParser.getLlmStrictValidation());
}
// write output
if (!visitorsThatFoundAntiPatterns.isEmpty()) {
countQueriesWithAntipattern += 1;
outputWriter.writeRecForQuery(inputQuery, visitorsThatFoundAntiPatterns, cmdParser);
}
} catch (Exception e) {
logger.error("Error processing query with id: " + inputQuery.getQueryId());
logger.error(e.getMessage(), e);
}
}