HighlightAnalyzer.java

1
/*
2
 * Copyright OpenSearch Contributors
3
 * SPDX-License-Identifier: Apache-2.0
4
 */
5
6
package org.opensearch.sql.analysis;
7
8
import lombok.RequiredArgsConstructor;
9
import org.opensearch.sql.ast.AbstractNodeVisitor;
10
import org.opensearch.sql.ast.expression.Alias;
11
import org.opensearch.sql.ast.expression.HighlightFunction;
12
import org.opensearch.sql.ast.expression.UnresolvedExpression;
13
import org.opensearch.sql.expression.Expression;
14
import org.opensearch.sql.planner.logical.LogicalHighlight;
15
import org.opensearch.sql.planner.logical.LogicalPlan;
16
17
/**
18
 * Analyze the highlight in the {@link AnalysisContext} to construct the {@link
19
 * LogicalPlan}.
20
 */
21
@RequiredArgsConstructor
22
public class HighlightAnalyzer extends AbstractNodeVisitor<LogicalPlan, AnalysisContext> {
23
  private final ExpressionAnalyzer expressionAnalyzer;
24
  private final LogicalPlan child;
25
26
  public LogicalPlan analyze(UnresolvedExpression projectItem, AnalysisContext context) {
27
    LogicalPlan highlight = projectItem.accept(this, context);
28 2 1. analyze : negated conditional → KILLED
2. analyze : replaced return value with null for org/opensearch/sql/analysis/HighlightAnalyzer::analyze → KILLED
    return (highlight == null) ? child : highlight;
29
  }
30
31
  @Override
32
  public LogicalPlan visitAlias(Alias node, AnalysisContext context) {
33
    UnresolvedExpression delegated = node.getDelegated();
34 1 1. visitAlias : negated conditional → KILLED
    if (!(delegated instanceof HighlightFunction)) {
35
      return null;
36
    }
37
38
    HighlightFunction unresolved = (HighlightFunction) delegated;
39
    Expression field = expressionAnalyzer.analyze(unresolved.getHighlightField(), context);
40 1 1. visitAlias : replaced return value with null for org/opensearch/sql/analysis/HighlightAnalyzer::visitAlias → KILLED
    return new LogicalHighlight(child, field, unresolved.getArguments());
41
  }
42
}

Mutations

28

1.1
Location : analyze
Killed by : org.opensearch.sql.analysis.SelectAnalyzeTest.[engine:junit-jupiter]/[class:org.opensearch.sql.analysis.SelectAnalyzeTest]/[method:select_and_project_all()]
negated conditional → KILLED

2.2
Location : analyze
Killed by : org.opensearch.sql.analysis.SelectAnalyzeTest.[engine:junit-jupiter]/[class:org.opensearch.sql.analysis.SelectAnalyzeTest]/[method:select_and_project_all()]
replaced return value with null for org/opensearch/sql/analysis/HighlightAnalyzer::analyze → KILLED

34

1.1
Location : visitAlias
Killed by : org.opensearch.sql.analysis.SelectAnalyzeTest.[engine:junit-jupiter]/[class:org.opensearch.sql.analysis.SelectAnalyzeTest]/[method:project_all_from_source()]
negated conditional → KILLED

40

1.1
Location : visitAlias
Killed by : org.opensearch.sql.analysis.AnalyzerTest.[engine:junit-jupiter]/[class:org.opensearch.sql.analysis.AnalyzerTest]/[method:project_highlight()]
replaced return value with null for org/opensearch/sql/analysis/HighlightAnalyzer::visitAlias → KILLED

Active mutators

Tests examined


Report generated by PIT 1.9.0