Skip to content

Commit e259953

Browse files
committed
Use BreakingBytesRefBuilder in LongBytesRefState
1 parent 02a33b8 commit e259953

File tree

10 files changed

+76
-38
lines changed

10 files changed

+76
-38
lines changed

x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/aggregation/FirstBytesRefByTimestampAggregator.java

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/aggregation/LastBytesRefByTimestampAggregator.java

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/aggregation/LongBytesRefState.java

Lines changed: 13 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/aggregation/LongDoubleState.java

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/aggregation/LongFloatState.java

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/aggregation/LongIntState.java

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/aggregation/LongLongState.java

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/X-2State.java.st

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ package org.elasticsearch.compute.aggregation;
1111
import org.apache.lucene.util.BytesRef;
1212
import org.elasticsearch.compute.data.Block;
1313
import org.elasticsearch.compute.operator.DriverContext;
14+
import org.elasticsearch.compute.operator.BreakingBytesRefBuilder;
15+
import org.elasticsearch.common.breaker.CircuitBreaker;
16+
import org.elasticsearch.core.Releasables;
1417
// end generated imports
1518

1619
/**
@@ -19,12 +22,21 @@ import org.elasticsearch.compute.operator.DriverContext;
1922
*/
2023
final class $v1_Type$$v2_Type$State implements AggregatorState {
2124
private $v1_type$ v1;
25+
$if(v2_BytesRef)$
26+
private final BreakingBytesRefBuilder v2;
27+
$else$
2228
private $v2_type$ v2;
29+
$endif$
2330
private boolean seen;
2431

25-
$v1_Type$$v2_Type$State($v1_type$ v1, $v2_type$ v2) {
32+
$v1_Type$$v2_Type$State($v1_type$ v1, $v2_type$ v2$if(v2_BytesRef)$, CircuitBreaker breaker$endif$) {
2633
this.v1 = v1;
34+
$if(v2_BytesRef)$
35+
this.v2 = new BreakingBytesRefBuilder(breaker, "$v1_Type$$v2_Type$State", v2.length);
36+
this.v2.copyBytes(v2);
37+
$else$
2738
this.v2 = v2;
39+
$endif$
2840
}
2941

3042
$v1_type$ v1() {
@@ -36,11 +48,15 @@ final class $v1_Type$$v2_Type$State implements AggregatorState {
3648
}
3749

3850
$v2_type$ v2() {
39-
return v2;
51+
return v2$if(v2_BytesRef)$.bytesRefView()$endif$;
4052
}
4153

4254
void v2($v2_type$ v2) {
55+
$if(v2_BytesRef)$
56+
this.v2.copyBytes(v2);
57+
$else$
4358
this.v2 = v2;
59+
$endif$
4460
}
4561

4662
boolean seen() {
@@ -56,10 +72,14 @@ final class $v1_Type$$v2_Type$State implements AggregatorState {
5672
public void toIntermediate(Block[] blocks, int offset, DriverContext driverContext) {
5773
assert blocks.length >= offset + 3;
5874
blocks[offset + 0] = driverContext.blockFactory().newConstant$v1_Type$BlockWith(v1, 1);
59-
blocks[offset + 1] = driverContext.blockFactory().newConstant$v2_Type$BlockWith(v2, 1);
75+
blocks[offset + 1] = driverContext.blockFactory().newConstant$v2_Type$BlockWith(v2$if(v2_BytesRef)$.bytesRefView()$endif$, 1);
6076
blocks[offset + 2] = driverContext.blockFactory().newConstantBooleanBlockWith(seen, 1);
6177
}
6278

6379
@Override
64-
public void close() {}
80+
public void close() {
81+
$if(v2_BytesRef)$
82+
Releasables.close(this.v2);
83+
$endif$
84+
}
6585
}

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/X-ValueByTimestampAggregator.java.st

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class $Occurrence$$Type$ByTimestampAggregator {
4747

4848
public static Long$Type$State initSingle(DriverContext driverContext) {
4949
$if(BytesRef)$
50-
return new Long$Type$State(0, new BytesRef());
50+
return new LongBytesRefState(0, new BytesRef(), driverContext.breaker());
5151
$else$
5252
return new Long$Type$State(0, 0);
5353
$endif$
@@ -61,11 +61,7 @@ public class $Occurrence$$Type$ByTimestampAggregator {
6161
public static void combine(Long$Type$State current, $type$ value, long timestamp) {
6262
if (timestamp $if(First)$<$else$>$endif$ current.v1()) {
6363
current.v1(timestamp);
64-
$if(BytesRef)$
65-
current.v2(value.clone());
66-
$else$
6764
current.v2(value);
68-
$endif$
6965
}
7066
}
7167

x-pack/plugin/esql/qa/testFixtures/src/main/resources/stats_last.csv-spec

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,19 @@ FROM employees
111111
| SORT year ASC
112112
;
113113

114-
last_employee:keyword | year:datetime
114+
last_employee:keyword | year:datetime
115115
Bezalel | 1985-01-01T00:00:00.000Z
116-
Chirstian | 1986-01-01T00:00:00.000Z
117-
Breannda | 1987-01-01T00:00:00.000Z
116+
Chirstian | 1986-01-01T00:00:00.000Z
117+
Breannda | 1987-01-01T00:00:00.000Z
118118
Valter | 1988-01-01T00:00:00.000Z
119-
Bojan | 1989-01-01T00:00:00.000Z
119+
Bojan | 1989-01-01T00:00:00.000Z
120120
Yinghua | 1990-01-01T00:00:00.000Z
121-
Shir | 1991-01-01T00:00:00.000Z
122-
Patricio | 1992-01-01T00:00:00.000Z
123-
Cristinel | 1993-01-01T00:00:00.000Z
124-
Saniya | 1994-01-01T00:00:00.000Z
125-
Tuval | 1995-01-01T00:00:00.000Z
126-
Sailaja | 1996-01-01T00:00:00.000Z
127-
Suzette | 1997-01-01T00:00:00.000Z
128-
Lillian | 1999-01-01T00:00:00.000Z
121+
Shir | 1991-01-01T00:00:00.000Z
122+
Patricio | 1992-01-01T00:00:00.000Z
123+
Cristinel | 1993-01-01T00:00:00.000Z
124+
Saniya | 1994-01-01T00:00:00.000Z
125+
Tuval | 1995-01-01T00:00:00.000Z
126+
Sailaja | 1996-01-01T00:00:00.000Z
127+
Suzette | 1997-01-01T00:00:00.000Z
128+
Lillian | 1999-01-01T00:00:00.000Z
129129
;

0 commit comments

Comments
 (0)