@Override public final boolean asBoolean() { if (!booleanValueValid) { booleanValue = Evals.asBoolean(value); booleanValueValid = true; } return booleanValue; }
@Override protected final double evalDouble(double left, double right) { return Evals.asDouble(left == right); } }
@Override protected final long evalLong(long left, long right) { return Evals.asLong(left >= right); }
public static ExprEval of(boolean value, ExprType type) { switch (type) { case DOUBLE: return ExprEval.of(Evals.asDouble(value)); case LONG: return ExprEval.of(Evals.asLong(value)); case STRING: return ExprEval.of(String.valueOf(value)); default: throw new IllegalArgumentException("invalid type " + type); } }
Expr left = flatten(binary.left); Expr right = flatten(binary.right); if (Evals.isAllConstants(left, right)) { expr = expr.eval(null).toExpr(); } else if (left != binary.left || right != binary.right) { return Evals.binaryOp(binary, left, right); flattening.add(flatten); if (Evals.isAllConstants(flattening)) { expr = expr.eval(null).toExpr(); } else if (flattened) {
public static boolean isAllConstants(Expr... exprs) { return isAllConstants(Arrays.asList(exprs)); }
public static ExprEval of(boolean value, ExprType type) { switch (type) { case DOUBLE: return ExprEval.of(Evals.asDouble(value)); case LONG: return ExprEval.of(Evals.asLong(value)); case STRING: return ExprEval.of(String.valueOf(value)); default: throw new IllegalArgumentException("invalid type " + type); } }
Expr left = flatten(binary.left); Expr right = flatten(binary.right); if (Evals.isAllConstants(left, right)) { expr = expr.eval(null).toExpr(); } else if (left != binary.left || right != binary.right) { return Evals.binaryOp(binary, left, right); flattening.add(flatten); if (Evals.isAllConstants(flattening)) { expr = expr.eval(null).toExpr(); } else if (flattened) {
public static boolean isAllConstants(Expr... exprs) { return isAllConstants(Arrays.asList(exprs)); }
@Override public final boolean asBoolean() { return Evals.asBoolean(asDouble()); }
@Override protected final long evalLong(long left, long right) { return Evals.asLong(left > right); }
@Override protected final double evalDouble(double left, double right) { return Evals.asDouble(left != right); } }
@Override public final boolean asBoolean() { return Evals.asBoolean(asLong()); }
@Override protected final long evalLong(long left, long right) { return Evals.asLong(left < right); }
@Override protected final double evalDouble(double left, double right) { // Use Double.compare for more consistent NaN handling. return Evals.asDouble(Double.compare(left, right) < 0); } }
@Override public boolean matches() { if (NullHandling.sqlCompatible() && selector.isNull()) { return false; } return Evals.asBoolean(selector.getLong()); }
@Override protected final long evalLong(long left, long right) { return Evals.asLong(left <= right); }
@Override protected final double evalDouble(double left, double right) { // Use Double.compare for more consistent NaN handling. return Evals.asDouble(Double.compare(left, right) > 0); } }
} else if (sqlType == SqlTypeName.BOOLEAN) { if (value instanceof String) { coercedValue = Evals.asBoolean(((String) value)); } else if (value instanceof Number) { coercedValue = Evals.asBoolean(((Number) value).longValue()); } else { throw new ISE("Cannot coerce[%s] to %s", value.getClass().getName(), sqlType);
@Override protected final long evalLong(long left, long right) { return Evals.asLong(left != right); }