private static void executeAntiPatternsInQuery()

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