diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/PushDownAndCombineFilters.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/PushDownAndCombineFilters.java index 8fdaa5b4ab869..9ec902e729f54 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/PushDownAndCombineFilters.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/PushDownAndCombineFilters.java @@ -86,7 +86,7 @@ protected LogicalPlan rule(Filter filter) { return plan; } - private record ScopedFilter(List leftFilters, List rightFilters, List commonFilters) {} + private record ScopedFilter(List commonFilters, List leftFilters, List rightFilters) {} // split the filter condition in 3 parts: // 1. filter scoped to the left @@ -100,11 +100,11 @@ private static ScopedFilter scopeFilter(List filters, LogicalPlan le AttributeSet leftOutput = left.outputSet(); AttributeSet rightOutput = right.outputSet(); - // first remove things that left scoped only + // first remove things that are left scoped only rest.removeIf(f -> f.references().subsetOf(leftOutput) && leftFilters.add(f)); // followed by right scoped only rest.removeIf(f -> f.references().subsetOf(rightOutput) && rightFilters.add(f)); - return new ScopedFilter(leftFilters, rightFilters, rest); + return new ScopedFilter(rest, leftFilters, rightFilters); } private static LogicalPlan pushDownPastJoin(Filter filter, Join join) {