Skip to content

Commit fd09ca1

Browse files
committed
Remove optional seed from ES|QL SAMPLE
1 parent a859f37 commit fd09ca1

File tree

19 files changed

+576
-683
lines changed

19 files changed

+576
-683
lines changed

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/SampleOperator.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import org.elasticsearch.TransportVersion;
1111
import org.elasticsearch.TransportVersions;
12+
import org.elasticsearch.common.Randomness;
1213
import org.elasticsearch.common.Strings;
1314
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
1415
import org.elasticsearch.common.io.stream.StreamInput;
@@ -27,16 +28,20 @@
2728

2829
public class SampleOperator implements Operator {
2930

30-
public record Factory(double probability, int seed) implements OperatorFactory {
31+
public record Factory(double probability, Integer seed) implements OperatorFactory {
32+
33+
public Factory(double probability) {
34+
this(probability, null);
35+
}
3136

3237
@Override
3338
public SampleOperator get(DriverContext driverContext) {
34-
return new SampleOperator(probability, seed);
39+
return new SampleOperator(probability, seed == null ? Randomness.get().nextInt() : seed);
3540
}
3641

3742
@Override
3843
public String describe() {
39-
return "SampleOperator[probability = " + probability + ", seed = " + seed + "]";
44+
return "SampleOperator[probability = " + probability + "]";
4045
}
4146
}
4247

x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/SampleOperatorTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import static org.hamcrest.Matchers.equalTo;
2222
import static org.hamcrest.Matchers.greaterThan;
2323
import static org.hamcrest.Matchers.lessThan;
24-
import static org.hamcrest.Matchers.matchesPattern;
2524

2625
public class SampleOperatorTests extends OperatorTestCase {
2726

@@ -46,7 +45,7 @@ protected SampleOperator.Factory simple(SimpleOptions options) {
4645

4746
@Override
4847
protected Matcher<String> expectedDescriptionOfSimple() {
49-
return matchesPattern("SampleOperator\\[probability = 0.5, seed = -?\\d+]");
48+
return equalTo("SampleOperator[probability = 0.5]");
5049
}
5150

5251
@Override

x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.g4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,5 +312,5 @@ completionCommand
312312
;
313313

314314
sampleCommand
315-
: DEV_SAMPLE probability=decimalValue seed=integerValue?
315+
: DEV_SAMPLE probability=decimalValue
316316
;

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

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ protected LogicalPlan rule(Sample sample, LogicalOptimizerContext context) {
6262
var child = sample.child();
6363
if (child instanceof Sample sampleChild) {
6464
var probability = combinedProbability(context, sample, sampleChild);
65-
var seed = combinedSeed(context, sample, sampleChild);
66-
plan = new Sample(sample.source(), probability, seed, sampleChild.child());
65+
plan = new Sample(sample.source(), probability, sampleChild.child());
6766
} else if (child instanceof Enrich
6867
|| child instanceof Eval
6968
|| child instanceof Filter
@@ -82,22 +81,4 @@ private static Expression combinedProbability(LogicalOptimizerContext context, S
8281
var childProbability = (double) Foldables.valueOf(context.foldCtx(), child.probability());
8382
return Literal.of(parent.probability(), parentProbability * childProbability);
8483
}
85-
86-
private static Expression combinedSeed(LogicalOptimizerContext context, Sample parent, Sample child) {
87-
var parentSeed = parent.seed();
88-
var childSeed = child.seed();
89-
Expression seed;
90-
if (parentSeed != null) {
91-
if (childSeed != null) {
92-
var seedValue = (int) Foldables.valueOf(context.foldCtx(), parentSeed);
93-
seedValue ^= (int) Foldables.valueOf(context.foldCtx(), childSeed);
94-
seed = Literal.of(parentSeed, seedValue);
95-
} else {
96-
seed = parentSeed;
97-
}
98-
} else {
99-
seed = childSeed;
100-
}
101-
return seed;
102-
}
10384
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/physical/local/PushSampleToSource.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@ protected PhysicalPlan rule(SampleExec sample, LocalPhysicalOptimizerContext ctx
3333
}
3434

3535
var sampleQuery = new RandomSamplingQueryBuilder((double) Foldables.valueOf(ctx.foldCtx(), sample.probability()));
36-
if (sample.seed() != null) {
37-
sampleQuery.seed((int) Foldables.valueOf(ctx.foldCtx(), sample.seed()));
38-
}
3936

4037
fullQuery.filter(sampleQuery);
4138

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp

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

0 commit comments

Comments
 (0)