NullsLastExprValueOrdering.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 NullsLastExprValueOrdering 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/NullsLastExprValueOrdering::compare → KILLED
      return LEFT_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/NullsLastExprValueOrdering::compare → KILLED
      return RIGHT_IS_GREATER;
32
    }
33 1 1. compare : replaced int return with 0 for org/opensearch/sql/data/utils/NullsLastExprValueOrdering::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/NullsLastExprValueOrdering::reverse → KILLED
    return ordering.reverse().nullsFirst();
39
  }
40
41
  @Override
42
  public ExprValueOrdering nullsFirst() {
43 1 1. nullsFirst : replaced return value with null for org/opensearch/sql/data/utils/NullsLastExprValueOrdering::nullsFirst → KILLED
    return ordering.nullsFirst();
44
  }
45
46
  @Override
47
  public ExprValueOrdering nullsLast() {
48 1 1. nullsLast : replaced return value with null for org/opensearch/sql/data/utils/NullsLastExprValueOrdering::nullsLast → KILLED
    return this;
49
  }
50
}

Mutations

24

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

27

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

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

28

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_last()]
replaced int return with 0 for org/opensearch/sql/data/utils/NullsLastExprValueOrdering::compare → KILLED

30

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

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

31

1.1
Location : compare
Killed by : org.opensearch.sql.data.utils.NullsLastExprValueOrderingTest.[engine:junit-jupiter]/[class:org.opensearch.sql.data.utils.NullsLastExprValueOrderingTest]/[method:natural_null_last_null_last()]
replaced int return with 0 for org/opensearch/sql/data/utils/NullsLastExprValueOrdering::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_last_reverse()]
replaced int return with 0 for org/opensearch/sql/data/utils/NullsLastExprValueOrdering::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_last()]
replaced return value with null for org/opensearch/sql/data/utils/NullsLastExprValueOrdering::reverse → KILLED

43

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

48

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

Active mutators

Tests examined


Report generated by PIT 1.9.0