@Override public boolean isDeterministic() { if (allowRecursive || viewQuery == null) { return false; } return viewQuery.isEverything(ExpressionVisitor.DETERMINISTIC_VISITOR); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return left.isEverything(visitor) && right.isEverything(visitor); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return query.isEverything(visitor); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return query.isEverything(visitor); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return left.isEverything(visitor) && query.isEverything(visitor); }
public final long getMaxDataModificationId() { ExpressionVisitor visitor = ExpressionVisitor.getMaxModificationIdVisitor(); isEverything(visitor); return visitor.getMaxDataModificationId(); } }
@Override public boolean isQueryComparable() { if (!super.isQueryComparable()) { return false; } for (Table t : tables) { if (!t.isQueryComparable()) { return false; } } if (topQuery != null && !topQuery.isEverything(ExpressionVisitor.QUERY_COMPARABLE_VISITOR)) { return false; } return true; }
/** * Check if the expression can be evaluated. * * @return true if it can be evaluated */ public boolean isEvaluatable() { if (expression != null) { return expression .isEverything(ExpressionVisitor.EVALUATABLE_VISITOR); } if (expressionList != null) { for (Expression e : expressionList) { if (!e.isEverything(ExpressionVisitor.EVALUATABLE_VISITOR)) { return false; } } return true; } return expressionQuery .isEverything(ExpressionVisitor.EVALUATABLE_VISITOR); }
private boolean sameResultAsLast(Session s, Value[] params, Value[] lastParams, long lastEval) { if (!cacheableChecked) { long max = getMaxDataModificationId(); noCache = max == Long.MAX_VALUE; cacheableChecked = true; } if (noCache) { return false; } Database db = s.getDatabase(); for (int i = 0; i < params.length; i++) { Value a = lastParams[i], b = params[i]; if (a.getType() != b.getType() || !db.areEqual(a, b)) { return false; } } if (!isEverything(ExpressionVisitor.DETERMINISTIC_VISITOR) || !isEverything(ExpressionVisitor.INDEPENDENT_VISITOR)) { return false; } if (db.getModificationDataId() > lastEval && getMaxDataModificationId() > lastEval) { return false; } return true; }
@Override public void createIndexConditions(Session session, TableFilter filter) { if (!session.getDatabase().getSettings().optimizeInList) { return; } if (!(left instanceof ExpressionColumn)) { return; } ExpressionColumn l = (ExpressionColumn) left; if (filter != l.getTableFilter()) { return; } ExpressionVisitor visitor = ExpressionVisitor.getNotFromResolverVisitor(filter); if (!query.isEverything(visitor)) { return; } filter.addIndexCondition(IndexCondition.getInQuery(l, query)); }
if (isEverything(ExpressionVisitor.DETERMINISTIC_VISITOR)) { if (lastResult != null && !lastResult.isClosed() && limit == lastLimit) {
@Override public boolean isDeterministic() { if (recursive || viewQuery == null) { return false; } return viewQuery.isEverything(ExpressionVisitor.DETERMINISTIC_VISITOR); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return left.isEverything(visitor) && right.isEverything(visitor); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return query.isEverything(visitor); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return query.isEverything(visitor); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return query.isEverything(visitor); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return query.isEverything(visitor); }
@Override public boolean isEverything(ExpressionVisitor visitor) { return left.isEverything(visitor) && query.isEverything(visitor); }
public final long getMaxDataModificationId() { ExpressionVisitor visitor = ExpressionVisitor.getMaxModificationIdVisitor(); isEverything(visitor); return visitor.getMaxDataModificationId(); }
public final long getMaxDataModificationId() { ExpressionVisitor visitor = ExpressionVisitor.get(ExpressionVisitor.SET_MAX_DATA_MODIFICATION_ID); isEverything(visitor); return visitor.getMaxDataModificationId(); }