Skip to content

Commit 7804a25

Browse files
Refactor QueryBuilderResolver Rewrite Logic (#119740)
* 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]>
1 parent 169cb44 commit 7804a25

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
@@ -157,15 +157,12 @@ public FullTextFunctionsRewritable rewrite(QueryRewriteContext ctx) throws IOExc
157157
Map<FullTextFunction, QueryBuilder> results = new HashMap<>();
158158

159159
boolean hasChanged = false;
160-
for (FullTextFunction func : queryBuilderMap.keySet()) {
161-
var initial = queryBuilderMap.get(func);
162-
var rewritten = Rewriteable.rewrite(initial, ctx, false);
160+
for (var entry : queryBuilderMap.entrySet()) {
161+
var initial = entry.getValue();
162+
var rewritten = initial.rewrite(ctx);
163+
hasChanged |= rewritten != initial;
163164

164-
if (rewritten.equals(initial) == false) {
165-
hasChanged = true;
166-
}
167-
168-
results.put(func, rewritten);
165+
results.put(entry.getKey(), rewritten);
169166
}
170167

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

0 commit comments

Comments
 (0)