private Expression readFactor() { Expression r = readTerm(); while (true) { if (readIf("*")) { r = new Operation(Operation.MULTIPLY, r, readTerm()); } else if (readIf("/")) { r = new Operation(Operation.DIVIDE, r, readTerm()); } else if (readIf("%")) { r = new Operation(Operation.MODULUS, r, readTerm()); } else { return r; } } }
@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 + ")"; }
dataType = Value.STRING; if (left.isConstant() && right.isConstant()) { return ValueExpression.get(getValue(session)); swap(); int t = l; l = r; left = new Operation(Operation.MULTIPLY, ValueExpression.get(ValueInt .get(60 * 60 * 24)), left); f.setParameter(1, left); right = new Operation(NEGATE, right, null); right = right.optimize(session); f.setParameter(1, right); right = new Operation(Operation.MULTIPLY, ValueExpression.get(ValueInt .get(60 * 60 * 24)), right); right = new Operation(NEGATE, right, null); right = right.optimize(session); f.setParameter(1, right); return this; } else if (r == Value.TIME) { swap(); dataType = Value.TIME; convertRight = false; getOperationToken() + " " +
@Override public String getPreparedSQL(Session session, List<Value> parameters) { 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.getPreparedSQL(session, parameters); } else { // don't remove the space, otherwise it might end up some thing like // --1 which is a line remark sql = left.getPreparedSQL(session, parameters) + " " + getOperationToken() + " " + right.getPreparedSQL(session, parameters); } return "(" + sql + ")"; }
private Expression readConcat() { Expression r = readSum(); while (true) { if (readIf("||")) { r = new Operation(Operation.CONCAT, r, readSum()); } else if (readIf("~")) { if (readIf("*")) { Function function = Function.getFunction(database, "CAST"); function.setDataType(new Column("X", Value.STRING_IGNORECASE)); function.setParameter(0, r); r = function; } r = new CompareLike(database, r, readSum(), null, true); } else if (readIf("!~")) { if (readIf("*")) { Function function = Function.getFunction(database, "CAST"); function.setDataType(new Column("X", Value.STRING_IGNORECASE)); function.setParameter(0, r); r = function; } r = new ConditionNot(new CompareLike(database, r, readSum(), null, true)); } else { return r; } } }