|
@@ -5254,20 +5254,26 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
TEST_VERIFIER
|
|
|
);
|
|
|
|
|
|
- var plan = logicalOptimizer.optimize(analyzer.analyze(parser.createStatement("from empty_test")));
|
|
|
+ var plan = logicalOptimizer.optimize(analyzer.analyze(parser.createStatement("from empty_test", EsqlTestUtils.TEST_CFG)));
|
|
|
as(plan, LocalRelation.class);
|
|
|
assertThat(plan.output(), equalTo(NO_FIELDS));
|
|
|
|
|
|
- plan = logicalOptimizer.optimize(analyzer.analyze(parser.createStatement("from empty_test metadata _id | eval x = 1")));
|
|
|
+ plan = logicalOptimizer.optimize(
|
|
|
+ analyzer.analyze(parser.createStatement("from empty_test metadata _id | eval x = 1", EsqlTestUtils.TEST_CFG))
|
|
|
+ );
|
|
|
as(plan, LocalRelation.class);
|
|
|
assertThat(Expressions.names(plan.output()), contains("_id", "x"));
|
|
|
|
|
|
- plan = logicalOptimizer.optimize(analyzer.analyze(parser.createStatement("from empty_test metadata _id, _version | limit 5")));
|
|
|
+ plan = logicalOptimizer.optimize(
|
|
|
+ analyzer.analyze(parser.createStatement("from empty_test metadata _id, _version | limit 5", EsqlTestUtils.TEST_CFG))
|
|
|
+ );
|
|
|
as(plan, LocalRelation.class);
|
|
|
assertThat(Expressions.names(plan.output()), contains("_id", "_version"));
|
|
|
|
|
|
plan = logicalOptimizer.optimize(
|
|
|
- analyzer.analyze(parser.createStatement("from empty_test | eval x = \"abc\" | enrich languages_idx on x"))
|
|
|
+ analyzer.analyze(
|
|
|
+ parser.createStatement("from empty_test | eval x = \"abc\" | enrich languages_idx on x", EsqlTestUtils.TEST_CFG)
|
|
|
+ )
|
|
|
);
|
|
|
LocalRelation local = as(plan, LocalRelation.class);
|
|
|
assertThat(Expressions.names(local.output()), contains(NO_FIELDS.get(0).name(), "x", "language_code", "language_name"));
|
|
@@ -5962,7 +5968,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
|
|
|
private void assertSemanticMatching(String expected, String provided) {
|
|
|
BinaryComparison bc = extractPlannedBinaryComparison(provided);
|
|
|
- LogicalPlan exp = analyzerTypes.analyze(parser.createStatement("FROM types | WHERE " + expected));
|
|
|
+ LogicalPlan exp = analyzerTypes.analyze(parser.createStatement("FROM types | WHERE " + expected, EsqlTestUtils.TEST_CFG));
|
|
|
assertSemanticMatching(bc, extractPlannedBinaryComparison(exp));
|
|
|
}
|
|
|
|
|
@@ -5990,7 +5996,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
private void assertNotSimplified(String comparison) {
|
|
|
String query = "FROM types | WHERE " + comparison;
|
|
|
Expression optimized = getComparisonFromLogicalPlan(planTypes(query));
|
|
|
- Expression raw = getComparisonFromLogicalPlan(analyzerTypes.analyze(parser.createStatement(query)));
|
|
|
+ Expression raw = getComparisonFromLogicalPlan(analyzerTypes.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
|
|
|
assertTrue(raw.semanticEquals(optimized));
|
|
|
}
|
|
@@ -6683,7 +6689,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
public void testTranslateMetricsWithoutGrouping() {
|
|
|
assumeTrue("requires snapshot builds", Build.current().isSnapshot());
|
|
|
var query = "TS k8s | STATS max(rate(network.total_bytes_in))";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Limit limit = as(plan, Limit.class);
|
|
|
Aggregate finalAggs = as(limit.child(), Aggregate.class);
|
|
|
assertThat(finalAggs, not(instanceOf(TimeSeriesAggregate.class)));
|
|
@@ -6704,7 +6710,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
public void testTranslateMixedAggsWithoutGrouping() {
|
|
|
assumeTrue("requires snapshot builds", Build.current().isSnapshot());
|
|
|
var query = "TS k8s | STATS max(rate(network.total_bytes_in)), max(network.cost)";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Limit limit = as(plan, Limit.class);
|
|
|
Aggregate finalAggs = as(limit.child(), Aggregate.class);
|
|
|
assertThat(finalAggs, not(instanceOf(TimeSeriesAggregate.class)));
|
|
@@ -6729,7 +6735,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
public void testTranslateMixedAggsWithMathWithoutGrouping() {
|
|
|
assumeTrue("requires snapshot builds", Build.current().isSnapshot());
|
|
|
var query = "TS k8s | STATS max(rate(network.total_bytes_in)), max(network.cost + 0.2) * 1.1";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Project project = as(plan, Project.class);
|
|
|
Eval mulEval = as(project.child(), Eval.class);
|
|
|
assertThat(mulEval.fields(), hasSize(1));
|
|
@@ -6767,7 +6773,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
public void testTranslateMetricsGroupedByOneDimension() {
|
|
|
assumeTrue("requires snapshot builds", Build.current().isSnapshot());
|
|
|
var query = "TS k8s | STATS sum(rate(network.total_bytes_in)) BY cluster | SORT cluster | LIMIT 10";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
TopN topN = as(plan, TopN.class);
|
|
|
Aggregate aggsByCluster = as(topN.child(), Aggregate.class);
|
|
|
assertThat(aggsByCluster, not(instanceOf(TimeSeriesAggregate.class)));
|
|
@@ -6792,7 +6798,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
public void testTranslateMetricsGroupedByTwoDimension() {
|
|
|
assumeTrue("requires snapshot builds", Build.current().isSnapshot());
|
|
|
var query = "TS k8s | STATS avg(rate(network.total_bytes_in)) BY cluster, pod";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Project project = as(plan, Project.class);
|
|
|
Eval eval = as(project.child(), Eval.class);
|
|
|
assertThat(eval.fields(), hasSize(1));
|
|
@@ -6832,7 +6838,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
public void testTranslateMetricsGroupedByTimeBucket() {
|
|
|
assumeTrue("requires snapshot builds", Build.current().isSnapshot());
|
|
|
var query = "TS k8s | STATS sum(rate(network.total_bytes_in)) BY bucket(@timestamp, 1h)";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Limit limit = as(plan, Limit.class);
|
|
|
Aggregate finalAgg = as(limit.child(), Aggregate.class);
|
|
|
assertThat(finalAgg, not(instanceOf(TimeSeriesAggregate.class)));
|
|
@@ -6866,7 +6872,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
| SORT cluster
|
|
|
| LIMIT 10
|
|
|
""";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Project project = as(plan, Project.class);
|
|
|
TopN topN = as(project.child(), TopN.class);
|
|
|
Eval eval = as(topN.child(), Eval.class);
|
|
@@ -6908,7 +6914,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
| SORT cluster
|
|
|
| LIMIT 10
|
|
|
""";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
TopN topN = as(plan, TopN.class);
|
|
|
Aggregate finalAgg = as(topN.child(), Aggregate.class);
|
|
|
Eval eval = as(finalAgg.child(), Eval.class);
|
|
@@ -6929,7 +6935,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
| SORT cluster
|
|
|
| LIMIT 10
|
|
|
""";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Project project = as(plan, Project.class);
|
|
|
TopN topN = as(project.child(), TopN.class);
|
|
|
Eval eval = as(topN.child(), Eval.class);
|
|
@@ -6981,7 +6987,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
| SORT cluster
|
|
|
| LIMIT 10
|
|
|
""";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Project project = as(plan, Project.class);
|
|
|
TopN topN = as(project.child(), TopN.class);
|
|
|
Eval evalDiv = as(topN.child(), Eval.class);
|
|
@@ -7034,7 +7040,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
public void testTranslateMaxOverTime() {
|
|
|
assumeTrue("requires snapshot builds", Build.current().isSnapshot());
|
|
|
var query = "TS k8s | STATS sum(max_over_time(network.bytes_in)) BY bucket(@timestamp, 1h)";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Limit limit = as(plan, Limit.class);
|
|
|
Aggregate finalAgg = as(limit.child(), Aggregate.class);
|
|
|
assertThat(finalAgg, not(instanceOf(TimeSeriesAggregate.class)));
|
|
@@ -7063,7 +7069,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
public void testTranslateAvgOverTime() {
|
|
|
assumeTrue("requires snapshot builds", Build.current().isSnapshot());
|
|
|
var query = "TS k8s | STATS sum(avg_over_time(network.bytes_in)) BY bucket(@timestamp, 1h)";
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
Limit limit = as(plan, Limit.class);
|
|
|
Aggregate finalAgg = as(limit.child(), Aggregate.class);
|
|
|
assertThat(finalAgg, not(instanceOf(TimeSeriesAggregate.class)));
|
|
@@ -7103,7 +7109,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
""");
|
|
|
List<LogicalPlan> plans = new ArrayList<>();
|
|
|
for (String query : queries) {
|
|
|
- var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query)));
|
|
|
+ var plan = logicalOptimizer.optimize(metricsAnalyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG)));
|
|
|
plans.add(plan);
|
|
|
}
|
|
|
for (LogicalPlan plan : plans) {
|
|
@@ -7694,7 +7700,7 @@ public class LogicalPlanOptimizerTests extends AbstractLogicalPlanOptimizerTests
|
|
|
| mv_expand x
|
|
|
| sort y
|
|
|
""";
|
|
|
- LogicalPlan analyzed = analyzer.analyze(parser.createStatement(query));
|
|
|
+ LogicalPlan analyzed = analyzer.analyze(parser.createStatement(query, EsqlTestUtils.TEST_CFG));
|
|
|
LogicalPlan optimized = rule.apply(analyzed);
|
|
|
|
|
|
// check that all the redundant SORTs are removed in a single run
|