Skip to content

Commit c505da9

Browse files
jimczielasticmachinefelixbarny
authored
Refactor QueryBuilderResolver Rewrite Logic (#119740) (#119834)
* Refactor QueryBuilderResolver Rewrite Logic This commit improves the rewrite logic by switching to reference comparison for termination checks. While the existing implementation functions correctly, the rewrite contract is designed to compare references rather than performing a full object comparison, which is unnecessary. Additionally, this change guarantees that only a single rewrite pass is executed per query builder. * avoid getting the value --------- Co-authored-by: Elastic Machine <[email protected]> Co-authored-by: Felix Barnsteiner <[email protected]>
1 parent 27d4bfe commit c505da9

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/QueryBuilderResolver.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -150,15 +150,12 @@ public FullTextFunctionsRewritable rewrite(QueryRewriteContext ctx) throws IOExc
150150
Map<FullTextFunction, QueryBuilder> results = new HashMap<>();
151151

152152
boolean hasChanged = false;
153-
for (FullTextFunction func : queryBuilderMap.keySet()) {
154-
var initial = queryBuilderMap.get(func);
155-
var rewritten = Rewriteable.rewrite(initial, ctx, false);
153+
for (var entry : queryBuilderMap.entrySet()) {
154+
var initial = entry.getValue();
155+
var rewritten = initial.rewrite(ctx);
156+
hasChanged |= rewritten != initial;
156157

157-
if (rewritten.equals(initial) == false) {
158-
hasChanged = true;
159-
}
160-
161-
results.put(func, rewritten);
158+
results.put(entry.getKey(), rewritten);
162159
}
163160

164161
return hasChanged ? new FullTextFunctionsRewritable(results) : this;

0 commit comments

Comments
 (0)