Skip to content

Commit 09dbaf7

Browse files
committed
Fix more tests
Signed-off-by: Harsha Vamsi Kalluri <harshavamsi096@gmail.com>
1 parent 9388c63 commit 09dbaf7

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

server/src/main/java/org/opensearch/index/search/NestedHelper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.apache.lucene.search.TermQuery;
4747
import org.opensearch.index.mapper.MapperService;
4848
import org.opensearch.index.mapper.ObjectMapper;
49+
import org.opensearch.search.approximate.ApproximateScoreQuery;
4950

5051
/** Utility class to filter parent and children clauses when building nested
5152
* queries.
@@ -85,6 +86,8 @@ public boolean mightMatchNestedDocs(Query query) {
8586
return mightMatchNestedDocs(((PointRangeQuery) query).getField());
8687
} else if (query instanceof IndexOrDocValuesQuery) {
8788
return mightMatchNestedDocs(((IndexOrDocValuesQuery) query).getIndexQuery());
89+
} else if (query instanceof ApproximateScoreQuery) {
90+
return mightMatchNestedDocs(((ApproximateScoreQuery) query).getOriginalQuery());
8891
} else if (query instanceof BooleanQuery) {
8992
final BooleanQuery bq = (BooleanQuery) query;
9093
final boolean hasRequiredClauses = bq.clauses().stream().anyMatch(BooleanClause::isRequired);
@@ -155,6 +158,8 @@ public boolean mightMatchNonNestedDocs(Query query, String nestedPath) {
155158
return mightMatchNonNestedDocs(((PointRangeQuery) query).getField(), nestedPath);
156159
} else if (query instanceof IndexOrDocValuesQuery) {
157160
return mightMatchNonNestedDocs(((IndexOrDocValuesQuery) query).getIndexQuery(), nestedPath);
161+
} else if (query instanceof ApproximateScoreQuery) {
162+
return mightMatchNonNestedDocs(((ApproximateScoreQuery) query).getOriginalQuery(), nestedPath);
158163
} else if (query instanceof BooleanQuery) {
159164
final BooleanQuery bq = (BooleanQuery) query;
160165
final boolean hasRequiredClauses = bq.clauses().stream().anyMatch(BooleanClause::isRequired);

server/src/test/java/org/opensearch/index/mapper/NumberFieldTypeTests.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@
7575
import org.opensearch.index.query.QueryShardContext;
7676
import org.opensearch.search.DocValueFormat;
7777
import org.opensearch.search.MultiValueMode;
78+
import org.opensearch.search.approximate.ApproximatePointRangeQuery;
79+
import org.opensearch.search.approximate.ApproximateScoreQuery;
7880
import org.opensearch.search.query.BitmapDocValuesQuery;
7981
import org.opensearch.search.query.BitmapIndexQuery;
8082
import org.junit.Before;
@@ -96,6 +98,7 @@
9698
import static org.hamcrest.Matchers.either;
9799
import static org.hamcrest.Matchers.equalTo;
98100
import static org.hamcrest.Matchers.instanceOf;
101+
import static org.apache.lucene.document.LongPoint.pack;
99102

100103
public class NumberFieldTypeTests extends FieldTypeTestCase {
101104

@@ -392,9 +395,9 @@ public void testUnsignedLongRangeQueryWithDecimalParts() {
392395

393396
public void testLongRangeQuery() {
394397
MappedFieldType ft = new NumberFieldMapper.NumberFieldType("field", NumberFieldMapper.NumberType.LONG);
395-
Query expected = new IndexOrDocValuesQuery(
396-
LongPoint.newRangeQuery("field", 1, 3),
397-
SortedNumericDocValuesField.newSlowRangeQuery("field", 1, 3)
398+
Query expected = new ApproximateScoreQuery(
399+
new IndexOrDocValuesQuery(LongPoint.newRangeQuery("field", 1, 3), SortedNumericDocValuesField.newSlowRangeQuery("field", 1, 3)),
400+
new ApproximatePointRangeQuery("field", pack(1).bytes, pack(3).bytes, 1, ApproximatePointRangeQuery.LONG_FORMAT)
398401
);
399402
assertEquals(expected, ft.rangeQuery("1", "3", true, true, null, null, null, MOCK_QSC));
400403

@@ -681,7 +684,11 @@ public void doTestDocValueRangeQueries(NumberType type, Supplier<Number> valueSu
681684
true,
682685
MOCK_QSC
683686
);
684-
assertThat(query, either(instanceOf(IndexOrDocValuesQuery.class)).or(instanceOf(MatchNoDocsQuery.class)));
687+
assertThat(
688+
query,
689+
either(instanceOf(IndexOrDocValuesQuery.class)).or(instanceOf(MatchNoDocsQuery.class))
690+
.or(instanceOf(ApproximateScoreQuery.class))
691+
);
685692
if (query instanceof IndexOrDocValuesQuery) {
686693
IndexOrDocValuesQuery indexOrDvQuery = (IndexOrDocValuesQuery) query;
687694
assertEquals(searcher.count(indexOrDvQuery.getIndexQuery()), searcher.count(indexOrDvQuery.getRandomAccessQuery()));
@@ -764,10 +771,20 @@ public void doTestIndexSortRangeQueries(NumberType type, Supplier<Number> valueS
764771
true,
765772
context
766773
);
767-
assertThat(query, instanceOf(IndexSortSortedNumericDocValuesRangeQuery.class));
774+
assertThat(
775+
query,
776+
either(instanceOf(IndexSortSortedNumericDocValuesRangeQuery.class)).or(instanceOf(ApproximateScoreQuery.class))
777+
);
768778

769-
Query fallbackQuery = ((IndexSortSortedNumericDocValuesRangeQuery) query).getFallbackQuery();
770-
assertThat(fallbackQuery, instanceOf(IndexOrDocValuesQuery.class));
779+
Query fallbackQuery;
780+
if (query instanceof IndexSortSortedNumericDocValuesRangeQuery) {
781+
fallbackQuery = ((IndexSortSortedNumericDocValuesRangeQuery) query).getFallbackQuery();
782+
assertThat(fallbackQuery, instanceOf(IndexOrDocValuesQuery.class));
783+
} else {
784+
fallbackQuery = ((IndexSortSortedNumericDocValuesRangeQuery) ((ApproximateScoreQuery) query).getOriginalQuery())
785+
.getFallbackQuery();
786+
assertThat(fallbackQuery, instanceOf(IndexOrDocValuesQuery.class));
787+
}
771788

772789
IndexOrDocValuesQuery indexOrDvQuery = (IndexOrDocValuesQuery) fallbackQuery;
773790
assertEquals(searcher.count(query), searcher.count(indexOrDvQuery.getIndexQuery()));

0 commit comments

Comments
 (0)