Skip to content

Commit a27d26b

Browse files
Star Tree Merge and Aggregation Fixes (#15274)
--------- Signed-off-by: Sarthak Aggarwal <sarthagg@amazon.com>
1 parent 9661e8d commit a27d26b

File tree

11 files changed

+64
-48
lines changed

11 files changed

+64
-48
lines changed

server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/CountValueAggregator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public Long mergeAggregatedValues(Long value, Long aggregatedValue) {
6060
}
6161

6262
@Override
63-
public Long toStarTreeNumericTypeValue(Long value) {
63+
public Long toAggregatedValueType(Long value) {
6464
return value;
6565
}
6666

server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/StatelessDoubleValueAggregator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ public Double mergeAggregatedValues(Double value, Double aggregatedValue) {
5252
}
5353

5454
@Override
55-
public Double toStarTreeNumericTypeValue(Long value) {
55+
public Double toAggregatedValueType(Long value) {
5656
try {
5757
if (value == null) {
5858
return getIdentityMetricValue();
5959
}
60-
return starTreeNumericType.getDoubleValue(value);
60+
return VALUE_AGGREGATOR_TYPE.getDoubleValue(value);
6161
} catch (Exception e) {
6262
throw new IllegalStateException("Cannot convert " + value + " to sortable aggregation type", e);
6363
}

server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/SumValueAggregator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,12 @@ public Double getInitialAggregatedValue(Double value) {
8787
}
8888

8989
@Override
90-
public Double toStarTreeNumericTypeValue(Long value) {
90+
public Double toAggregatedValueType(Long value) {
9191
try {
9292
if (value == null) {
9393
return getIdentityMetricValue();
9494
}
95-
return starTreeNumericType.getDoubleValue(value);
95+
return VALUE_AGGREGATOR_TYPE.getDoubleValue(value);
9696
} catch (Exception e) {
9797
throw new IllegalStateException("Cannot convert " + value + " to sortable aggregation type", e);
9898
}

server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/ValueAggregator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ default A getInitialAggregatedValue(A value) {
5050
}
5151

5252
/**
53-
* Converts an aggregated value from a Long type.
53+
* Converts a segment long value to an aggregated value.
5454
*/
55-
A toStarTreeNumericTypeValue(Long rawValue);
55+
A toAggregatedValueType(Long rawValue);
5656

5757
/**
5858
* Fetches a value that does not alter the result of aggregations

server/src/main/java/org/opensearch/index/compositeindex/datacube/startree/builder/BaseStarTreeBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ protected StarTreeDocument getStarTreeDocument(
164164
// actual indexing field they're based on
165165
metrics[i] = metricAggregatorInfos.get(i)
166166
.getValueAggregators()
167-
.toStarTreeNumericTypeValue(metricDocValuesIterator.value(currentDocId));
167+
.toAggregatedValueType(metricDocValuesIterator.value(currentDocId));
168168
i++;
169169
}
170170
return new StarTreeDocument(dims, metrics);

server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/AbstractValueAggregatorTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
public abstract class AbstractValueAggregatorTests extends OpenSearchTestCase {
2222

2323
private ValueAggregator aggregator;
24-
private StarTreeNumericType starTreeNumericType;
24+
protected StarTreeNumericType starTreeNumericType;
2525

2626
public AbstractValueAggregatorTests(StarTreeNumericType starTreeNumericType) {
2727
this.starTreeNumericType = starTreeNumericType;
@@ -69,7 +69,7 @@ public void testGetInitialAggregatedValueForSegmentDocValue() {
6969
assertEquals(CountValueAggregator.DEFAULT_INITIAL_VALUE, aggregator.getInitialAggregatedValueForSegmentDocValue(randomLong()));
7070
} else {
7171
assertEquals(
72-
aggregator.toStarTreeNumericTypeValue(randomLong),
72+
starTreeNumericType.getDoubleValue(randomLong),
7373
aggregator.getInitialAggregatedValueForSegmentDocValue(randomLong)
7474
);
7575
}

server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/CountValueAggregatorTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ public void testGetInitialAggregatedValue() {
3636
assertEquals(randomLong, aggregator.getInitialAggregatedValue(randomLong), 0.0);
3737
}
3838

39-
public void testToStarTreeNumericTypeValue() {
39+
public void testToAggregatedValueType() {
4040
long randomLong = randomLong();
41-
assertEquals(randomLong, aggregator.toStarTreeNumericTypeValue(randomLong), 0.0);
42-
assertNull(aggregator.toStarTreeNumericTypeValue(null));
41+
assertEquals(randomLong, aggregator.toAggregatedValueType(randomLong), 0.0);
42+
assertNull(aggregator.toAggregatedValueType(null));
4343
}
4444

4545
public void testIdentityMetricValue() {

server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/MaxValueAggregatorTests.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,13 @@ public void testMergeAggregatedValueAndSegmentValue() {
2323
Long randomLong = randomLong();
2424
double randomDouble = randomDouble();
2525
assertEquals(
26-
Math.max(aggregator.toStarTreeNumericTypeValue(randomLong), randomDouble),
26+
Math.max(starTreeNumericType.getDoubleValue(randomLong), randomDouble),
2727
aggregator.mergeAggregatedValueAndSegmentValue(randomDouble, randomLong),
2828
0.0
2929
);
30-
assertEquals(
31-
aggregator.toStarTreeNumericTypeValue(randomLong),
32-
aggregator.mergeAggregatedValueAndSegmentValue(null, randomLong),
33-
0.0
34-
);
30+
assertEquals(starTreeNumericType.getDoubleValue(randomLong), aggregator.mergeAggregatedValueAndSegmentValue(null, randomLong), 0.0);
3531
assertEquals(randomDouble, aggregator.mergeAggregatedValueAndSegmentValue(randomDouble, null), 0.0);
36-
assertEquals(
37-
Math.max(2.0, aggregator.toStarTreeNumericTypeValue(3L)),
38-
aggregator.mergeAggregatedValueAndSegmentValue(2.0, 3L),
39-
0.0
40-
);
32+
assertEquals(Math.max(2.0, starTreeNumericType.getDoubleValue(3L)), aggregator.mergeAggregatedValueAndSegmentValue(2.0, 3L), 0.0);
4133
}
4234

4335
public void testMergeAggregatedValues() {
@@ -53,10 +45,10 @@ public void testGetInitialAggregatedValue() {
5345
assertEquals(randomDouble, aggregator.getInitialAggregatedValue(randomDouble), 0.0);
5446
}
5547

56-
public void testToStarTreeNumericTypeValue() {
48+
public void testToAggregatedValueType() {
5749
MaxValueAggregator aggregator = new MaxValueAggregator(StarTreeNumericType.DOUBLE);
5850
long randomLong = randomLong();
59-
assertEquals(NumericUtils.sortableLongToDouble(randomLong), aggregator.toStarTreeNumericTypeValue(randomLong), 0.0);
51+
assertEquals(NumericUtils.sortableLongToDouble(randomLong), aggregator.toAggregatedValueType(randomLong), 0.0);
6052
}
6153

6254
public void testIdentityMetricValue() {

server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/MinValueAggregatorTests.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,13 @@ public void testMergeAggregatedValueAndSegmentValue() {
2222
Long randomLong = randomLong();
2323
double randomDouble = randomDouble();
2424
assertEquals(
25-
Math.min(aggregator.toStarTreeNumericTypeValue(randomLong), randomDouble),
25+
Math.min(starTreeNumericType.getDoubleValue(randomLong), randomDouble),
2626
aggregator.mergeAggregatedValueAndSegmentValue(randomDouble, randomLong),
2727
0.0
2828
);
29-
assertEquals(
30-
aggregator.toStarTreeNumericTypeValue(randomLong),
31-
aggregator.mergeAggregatedValueAndSegmentValue(null, randomLong),
32-
0.0
33-
);
29+
assertEquals(starTreeNumericType.getDoubleValue(randomLong), aggregator.mergeAggregatedValueAndSegmentValue(null, randomLong), 0.0);
3430
assertEquals(randomDouble, aggregator.mergeAggregatedValueAndSegmentValue(randomDouble, null), 0.0);
35-
assertEquals(
36-
Math.min(2.0, aggregator.toStarTreeNumericTypeValue(3L)),
37-
aggregator.mergeAggregatedValueAndSegmentValue(2.0, 3L),
38-
0.0
39-
);
31+
assertEquals(Math.min(2.0, starTreeNumericType.getDoubleValue(3L)), aggregator.mergeAggregatedValueAndSegmentValue(2.0, 3L), 0.0);
4032
}
4133

4234
public void testMergeAggregatedValues() {
@@ -52,10 +44,10 @@ public void testGetInitialAggregatedValue() {
5244
assertEquals(randomDouble, aggregator.getInitialAggregatedValue(randomDouble), 0.0);
5345
}
5446

55-
public void testToStarTreeNumericTypeValue() {
47+
public void testToAggregatedValueType() {
5648
MinValueAggregator aggregator = new MinValueAggregator(StarTreeNumericType.DOUBLE);
5749
long randomLong = randomLong();
58-
assertEquals(NumericUtils.sortableLongToDouble(randomLong), aggregator.toStarTreeNumericTypeValue(randomLong), 0.0);
50+
assertEquals(NumericUtils.sortableLongToDouble(randomLong), aggregator.toAggregatedValueType(randomLong), 0.0);
5951
}
6052

6153
public void testIdentityMetricValue() {

server/src/test/java/org/opensearch/index/compositeindex/datacube/startree/aggregators/SumValueAggregatorTests.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void testMergeAggregatedValueAndSegmentValue() {
2929
Long randomLong = randomLong();
3030
aggregator.getInitialAggregatedValue(randomDouble);
3131
assertEquals(
32-
randomDouble + aggregator.toStarTreeNumericTypeValue(randomLong),
32+
randomDouble + starTreeNumericType.getDoubleValue(randomLong),
3333
aggregator.mergeAggregatedValueAndSegmentValue(randomDouble, randomLong),
3434
0.0
3535
);
@@ -41,7 +41,7 @@ public void testMergeAggregatedValueAndSegmentValue_nullSegmentDocValue() {
4141
aggregator.getInitialAggregatedValue(randomDouble1);
4242
assertEquals(randomDouble1, aggregator.mergeAggregatedValueAndSegmentValue(randomDouble1, null), 0.0);
4343
assertEquals(
44-
randomDouble1 + aggregator.toStarTreeNumericTypeValue(randomLong),
44+
randomDouble1 + starTreeNumericType.getDoubleValue(randomLong),
4545
aggregator.mergeAggregatedValueAndSegmentValue(randomDouble1, randomLong),
4646
0.0
4747
);
@@ -50,11 +50,7 @@ public void testMergeAggregatedValueAndSegmentValue_nullSegmentDocValue() {
5050
public void testMergeAggregatedValueAndSegmentValue_nullInitialDocValue() {
5151
Long randomLong = randomLong();
5252
aggregator.getInitialAggregatedValue(null);
53-
assertEquals(
54-
aggregator.toStarTreeNumericTypeValue(randomLong),
55-
aggregator.mergeAggregatedValueAndSegmentValue(null, randomLong),
56-
0.0
57-
);
53+
assertEquals(starTreeNumericType.getDoubleValue(randomLong), aggregator.mergeAggregatedValueAndSegmentValue(null, randomLong), 0.0);
5854
}
5955

6056
public void testMergeAggregatedValues() {
@@ -70,9 +66,9 @@ public void testGetInitialAggregatedValue() {
7066
assertEquals(randomDouble, aggregator.getInitialAggregatedValue(randomDouble), 0.0);
7167
}
7268

73-
public void testToStarTreeNumericTypeValue() {
69+
public void testToAggregatedValueType() {
7470
long randomLong = randomLong();
75-
assertEquals(aggregator.toStarTreeNumericTypeValue(randomLong), aggregator.toStarTreeNumericTypeValue(randomLong), 0.0);
71+
assertEquals(aggregator.toAggregatedValueType(randomLong), aggregator.toAggregatedValueType(randomLong), 0.0);
7672
}
7773

7874
public void testIdentityMetricValue() {

0 commit comments

Comments
 (0)