提交 4f491349 编写于 作者: V Vlad Ilyushchenko

removed unnecessary recursion

上级 41ec9a04
......@@ -1316,27 +1316,26 @@ public class QueryCompiler {
private void optimiseSubQueries(QueryModel model, JournalReaderFactory factory) throws JournalException, ParserException {
QueryModel nm = model.getNestedModel();
collectSelectedColumns(nm, factory);
processAndConditions(model, model.getWhereClause());
literalMatcher.of(model.getAlias() != null ? model.getAlias().token : null);
ExprNode nmWhere = nm.getWhereClause();
ExprNode thisWhere = null;
ObjList<ExprNode> w = model.getParsedWhere();
for (int i = 0, n = w.size(); i < n; i++) {
ExprNode node = w.getQuick(i);
if (literalMatcher.matches(node, selectedColumnAliases)) {
nmWhere = concatFilters(nmWhere, node);
} else {
thisWhere = concatFilters(thisWhere, node);
while (nm != null) {
collectSelectedColumns(nm, factory);
processAndConditions(model, model.getWhereClause());
literalMatcher.of(model.getAlias() != null ? model.getAlias().token : null);
ExprNode nmWhere = nm.getWhereClause();
ExprNode thisWhere = null;
ObjList<ExprNode> w = model.getParsedWhere();
for (int i = 0, n = w.size(); i < n; i++) {
ExprNode node = w.getQuick(i);
if (literalMatcher.matches(node, selectedColumnAliases)) {
nmWhere = concatFilters(nmWhere, node);
} else {
thisWhere = concatFilters(thisWhere, node);
}
}
}
nm.setWhereClause(nmWhere);
model.setWhereClause(thisWhere);
if (nm.getNestedModel() != null) {
optimiseSubQueries(nm, factory);
nm.setWhereClause(nmWhere);
model.setWhereClause(thisWhere);
nm = nm.getNestedModel();
}
}
......
......@@ -19,8 +19,8 @@ __lang__
- [x] query parameters
- [x] support for comments (both block /* */ and line --)
- [ ] analytical clauses
- [ ] __subquery optimiser (in progress)__
- [ ] order by optimiser
- [x] subquery optimiser
- [ ] __order by optimiser (in progress)__
__server__
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册