NullsFirstExprValueOrdering.java

1
/*
2
 * Copyright OpenSearch Contributors
3
 * SPDX-License-Identifier: Apache-2.0
4
 */
5
6
7
package org.opensearch.sql.data.utils;
8
9
import com.google.common.collect.Ordering;
10
import lombok.RequiredArgsConstructor;
11
import org.opensearch.sql.data.model.ExprValue;
12
13
/**
14
 * Idea from guava {@link Ordering}. The only difference is the special logic to handle {@link
15
 * org.opensearch.sql.data.model.ExprNullValue} and {@link
16
 * org.opensearch.sql.data.model.ExprMissingValue}
17
 */
18
@RequiredArgsConstructor
19
public class NullsFirstExprValueOrdering extends ExprValueOrdering {
20
  private final ExprValueOrdering ordering;
21
22
  @Override
23
  public int compare(ExprValue left, ExprValue right) {
24 1 1. compare : negated conditional → KILLED
    if (left == right) {
25
      return 0;
26
    }
27 2 1. compare : negated conditional → KILLED
2. compare : negated conditional → KILLED
    if (left.isNull() || left.isMissing()) {
28 1 1. compare : replaced int return with 0 for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::compare → KILLED
      return RIGHT_IS_GREATER;
29
    }
30 2 1. compare : negated conditional → KILLED
2. compare : negated conditional → KILLED
    if (right.isNull() || right.isMissing()) {
31 1 1. compare : replaced int return with 0 for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::compare → KILLED
      return LEFT_IS_GREATER;
32
    }
33 1 1. compare : replaced int return with 0 for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::compare → KILLED
    return ordering.compare(left, right);
34
  }
35
36
  @Override
37
  public ExprValueOrdering reverse() {
38 1 1. reverse : replaced return value with null for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::reverse → KILLED
    return ordering.reverse().nullsLast();
39
  }
40
41
  @Override
42
  public ExprValueOrdering nullsFirst() {
43 1 1. nullsFirst : replaced return value with null for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::nullsFirst → KILLED
    return this;
44
  }
45
46
  @Override
47
  public ExprValueOrdering nullsLast() {
48 1 1. nullsLast : replaced return value with null for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::nullsLast → KILLED
    return ordering.nullsLast();
49
  }
50
}

Mutations

24

1.1
Location : compare
Killed by : org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest]/[method:natural_null_first_null_first()]
negated conditional → KILLED

27

1.1
Location : compare
Killed by : org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest]/[method:natural_null_first_null_first()]
negated conditional → KILLED

2.2
Location : compare
Killed by : org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest]/[method:natural_null_first_null_first()]
negated conditional → KILLED

28

1.1
Location : compare
Killed by : org.opensearch.sql.planner.physical.SortOperatorTest.[engine:junit-jupiter]/[class:org.opensearch.sql.planner.physical.SortOperatorTest]/[method:sort_one_field_asc_with_null_value()]
replaced int return with 0 for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::compare → KILLED

30

1.1
Location : compare
Killed by : org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest]/[method:natural_null_first_null_first()]
negated conditional → KILLED

2.2
Location : compare
Killed by : org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest]/[method:natural_null_first_null_first()]
negated conditional → KILLED

31

1.1
Location : compare
Killed by : org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest]/[method:natural_null_first_null_first()]
replaced int return with 0 for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::compare → KILLED

33

1.1
Location : compare
Killed by : org.opensearch.sql.data.utils.ExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.ExprValueOrderingTest]/[method:natural_null_first_reverse()]
replaced int return with 0 for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::compare → KILLED

38

1.1
Location : reverse
Killed by : org.opensearch.sql.data.utils.ExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.ExprValueOrderingTest]/[method:natural_reverse_null_first()]
replaced return value with null for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::reverse → KILLED

43

1.1
Location : nullsFirst
Killed by : org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest]/[method:natural_null_first_null_first()]
replaced return value with null for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::nullsFirst → KILLED

48

1.1
Location : nullsLast
Killed by : org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.NullsFirstExprValueOrderingTest]/[method:natural_null_first_null_Last()]
replaced return value with null for org/opensearch/sql/data/utils/NullsFirstExprValueOrdering::nullsLast → KILLED

Active mutators

Tests examined


Report generated by PIT 1.9.0