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
|