@Override public void addFilterConditions(TableFilter filter, boolean outerJoin) { if (andOrType == AND) { left.addFilterConditions(filter, outerJoin); right.addFilterConditions(filter, outerJoin); } else { super.addFilterConditions(filter, outerJoin); } }
@Override public Expression[] getExpressionColumns(Session session) { if (getType() == Value.ARRAY) { return getExpressionColumns(session, (ValueArray) getValue(session)); } return super.getExpressionColumns(session); }
@Override public long getPrecision() { return getExpression().getPrecision(); }
@Override public String getSQL() { String sql; if (opType == NEGATE) { // don't remove the space, otherwise it might end up some thing like // --1 which is a line remark sql = "- " + left.getSQL(); } else { // don't remove the space, otherwise it might end up some thing like // --1 which is a line remark sql = left.getSQL() + " " + getOperationToken() + " " + right.getSQL(); } return "(" + sql + ")"; }
@Override public Expression[] getExpressionColumns(Session session) { return getExpression().getExpressionColumns(session); } }
@Override public boolean isEverything(ExpressionVisitor visitor) { if (!left.isEverything(visitor)) { return false; } return areAllValues(visitor); }
@Override public int getScale() { return getExpression().getScale(); }
@Override public int getDisplaySize() { return getExpression().getDisplaySize(); }
@Override public int getType() { return getExpression().getType(); }
@Override public void setEvaluatable(TableFilter tableFilter, boolean b) { left.setEvaluatable(tableFilter, b); right.setEvaluatable(tableFilter, b); }
@Override public void accept(TableFilter f) { on.mapColumns(f, 0); } });
/** * Create a new visitor to check if no expression depends on the given * resolver. * * @param resolver the resolver * @return the new visitor */ static ExpressionVisitor getNotFromResolverVisitor(ColumnResolver resolver) { return new ExpressionVisitor(NOT_FROM_RESOLVER, 0, null, null, null, null,resolver); }
@Override public int getCost() { int cost = 3; for (Expression e : args) { if (e != null) { cost += e.getCost(); } } return cost; }
@Override public boolean isEverything(ExpressionVisitor visitor) { return left.isEverything(visitor) && (right == null || right.isEverything(visitor)); }
@Override public void updateAggregate(Session s) { for (Expression e : expressions) { e.updateAggregate(s); } if (condition != null) { condition.updateAggregate(s); } if (having != null) { having.updateAggregate(s); } }
@Override public String getTableName() { if (aliasColumnName) { return super.getTableName(); } return expr.getTableName(); }
@Override public void setEvaluatable(TableFilter tableFilter, boolean b) { for (Expression e : args) { if (e != null) { e.setEvaluatable(tableFilter, b); } } }
@Override public void mapColumns(ColumnResolver resolver, int level) { left.mapColumns(resolver, level); if (right != null) { right.mapColumns(resolver, level); } }
/** * Increment or decrement the query level. * * @param offset 1 to increment, -1 to decrement * @return a clone of this expression visitor, with the changed query level */ public ExpressionVisitor incrementQueryLevel(int offset) { return new ExpressionVisitor(type, queryLevel + offset, dependencies, columns, aggregates, table, resolver); }
@Override public void setEvaluatable(TableFilter tableFilter, boolean b) { for (Expression e : expressions) { e.setEvaluatable(tableFilter, b); } if (condition != null) { condition.setEvaluatable(tableFilter, b); } }