Skip to content

Commit 1ce2df0

Browse files
committed
Make isSampledCorrected field final
1 parent 1941237 commit 1ce2df0

File tree

4 files changed

+22
-14
lines changed

4 files changed

+22
-14
lines changed

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/aggregate/Count.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
public class Count extends AggregateFunction implements ToAggregator, SurrogateExpression, HasSampleCorrection {
4343
public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(Expression.class, "Count", Count::new);
4444

45-
private boolean sampleCorrected = false;
45+
private final boolean isSampleCorrected;
4646

4747
@FunctionInfo(
4848
returnType = "long",
@@ -98,11 +98,17 @@ public Count(
9898
}
9999

100100
public Count(Source source, Expression field, Expression filter) {
101+
this(source, field, filter, false);
102+
}
103+
104+
public Count(Source source, Expression field, Expression filter, boolean isSampleCorrected) {
101105
super(source, field, filter, emptyList());
106+
this.isSampleCorrected = isSampleCorrected;
102107
}
103108

104109
private Count(StreamInput in) throws IOException {
105110
super(in);
111+
this.isSampleCorrected = false;
106112
}
107113

108114
@Override
@@ -175,14 +181,12 @@ public Expression surrogate() {
175181
}
176182

177183
@Override
178-
public boolean sampleCorrected() {
179-
return sampleCorrected;
184+
public boolean isSampleCorrected() {
185+
return isSampleCorrected;
180186
}
181187

182188
@Override
183189
public Expression sampleCorrection(Expression sampleProbability) {
184-
Count count = new Count(source(), field(), filter());
185-
count.sampleCorrected = true;
186-
return new ToLong(source(), new Div(source(), count, sampleProbability));
190+
return new ToLong(source(), new Div(source(), new Count(source(), field(), filter(), true), sampleProbability));
187191
}
188192
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/aggregate/HasSampleCorrection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
public interface HasSampleCorrection {
1717

18-
boolean sampleCorrected();
18+
boolean isSampleCorrected();
1919

2020
Expression sampleCorrection(Expression sampleProbability);
2121
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/aggregate/Sum.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
public class Sum extends NumericAggregate implements SurrogateExpression, HasSampleCorrection {
4949
public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(Expression.class, "Sum", Sum::new);
5050

51-
private boolean sampleCorrected = false;
51+
private final boolean isSampleCorrected;
5252

5353
@FunctionInfo(
5454
returnType = { "long", "double" },
@@ -69,11 +69,17 @@ public Sum(Source source, @Param(name = "number", type = { "aggregate_metric_dou
6969
}
7070

7171
public Sum(Source source, Expression field, Expression filter) {
72+
this(source, field, filter, false);
73+
}
74+
75+
public Sum(Source source, Expression field, Expression filter, boolean isSampleCorrected) {
7276
super(source, field, filter, emptyList());
77+
this.isSampleCorrected = isSampleCorrected;
7378
}
7479

7580
private Sum(StreamInput in) throws IOException {
7681
super(in);
82+
this.isSampleCorrected = false;
7783
}
7884

7985
@Override
@@ -153,15 +159,13 @@ public Expression surrogate() {
153159
}
154160

155161
@Override
156-
public boolean sampleCorrected() {
157-
return sampleCorrected;
162+
public boolean isSampleCorrected() {
163+
return isSampleCorrected;
158164
}
159165

160166
@Override
161167
public Expression sampleCorrection(Expression sampleProbability) {
162-
Sum sum = new Sum(source(), field(), filter());
163-
sum.sampleCorrected = true;
164-
Expression correctedSum = new Div(source(), sum, sampleProbability);
168+
Expression correctedSum = new Div(source(), new Sum(source(), field(), filter(), true), sampleProbability);
165169
return switch (dataType()) {
166170
case DOUBLE -> correctedSum;
167171
case LONG -> new ToLong(source(), correctedSum);

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/ApplySampleCorrections.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public LogicalPlan apply(LogicalPlan logicalPlan) {
2626
}
2727
if (plan instanceof Aggregate && sampleProbability.get() != null) {
2828
plan = plan.transformExpressionsOnly(
29-
e -> e instanceof HasSampleCorrection hsc && hsc.sampleCorrected() == false
29+
e -> e instanceof HasSampleCorrection hsc && hsc.isSampleCorrected() == false
3030
? hsc.sampleCorrection(sampleProbability.get())
3131
: e
3232
);

0 commit comments

Comments
 (0)