Skip to content

Commit f49bb46

Browse files
Fix rewriting terms query with consecutive whole numbers (#19587)
Signed-off-by: Alexander Koval <[email protected]> (cherry picked from commit 8a1c55f) Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 06d465f commit f49bb46

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
110110
- Remove unnecessary iteration per-shard in request cache cleanup ([#19263](https://github.com/opensearch-project/OpenSearch/pull/19263))
111111
- Fix derived field rewrite to handle range queries ([#19496](https://github.com/opensearch-project/OpenSearch/pull/19496))
112112
- [WLM] add a check to stop workload group deletion having rules ([#19502](https://github.com/opensearch-project/OpenSearch/pull/19502))
113+
- Fix flaky test FieldDataLoadingIT.testIndicesFieldDataCacheSizeSetting ([#19571](https://github.com/opensearch-project/OpenSearch/pull/19571))
114+
- Fix incorrect rewriting of terms query with more than 2 consecutive whole numbers
115+
([#19587](https://github.com/opensearch-project/OpenSearch/pull/19587))
113116

114117
### Dependencies
115118
- Bump `com.gradleup.shadow:shadow-gradle-plugin` from 8.3.5 to 8.3.9 ([#19400](https://github.com/opensearch-project/OpenSearch/pull/19400))

server/src/main/java/org/opensearch/index/query/ComplementHelperUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public static List<QueryBuilder> numberValuesToComplement(String fieldName, List
6262
// If this is a whole number field and the last value is 1 less than the current value, we can skip this part of the
6363
// complement
6464
if (isWholeNumber && value.longValue() - lastValue.longValue() == 1) {
65+
lastValue = value;
6566
continue;
6667
}
6768
range.includeLower(false);

server/src/test/java/org/opensearch/index/query/TermsQueryBuilderTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,15 @@ public void testGetComplementWholeNumber() throws Exception {
505505
complement = queryBuilder.getComplement(createShardContext(searcher));
506506
assertEquals(complement, expectedComplement);
507507

508+
// Test multiple consecutive values
509+
queryBuilder = new TermsQueryBuilder(INT_FIELD_NAME, List.of("1", "2", "3"));
510+
complement = queryBuilder.getComplement(createShardContext(searcher));
511+
expectedComplement = List.of(
512+
new RangeQueryBuilder(INT_FIELD_NAME).to(1).includeLower(true).includeUpper(false),
513+
new RangeQueryBuilder(INT_FIELD_NAME).from(3).includeLower(false).includeUpper(true)
514+
);
515+
assertEquals(complement, expectedComplement);
516+
508517
// If zero values, we should get null
509518
queryBuilder = new TermsQueryBuilder(INT_FIELD_NAME, List.of());
510519
complement = queryBuilder.getComplement(createShardContext(searcher));

0 commit comments

Comments
 (0)