public abstract class Eval
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
Eval.ArithOp |
static class |
Eval.BoolOp |
static class |
Eval.CmpOp |
static class |
Eval.ScopeException |
Constructor and Description |
---|
Eval() |
public PrimitiveType assertNumeric(PrimitiveType found) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveType escalateNumeric(PrimitiveType lhs, PrimitiveType rhs) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue missing(java.lang.String element) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(Expression e) throws java.sql.SQLException
e
- The expression to evaluate.java.sql.SQLException
- if the expression is invalid or can not be processed
The primary interface to Evaluator. You will need to define
The eval(Column) method to support scoped evaluation.
You may define more Expression PrimitiveTypes by overriding this method.public PrimitiveType getPrimitiveType(PrimitiveValue e) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue arith(BinaryExpression e, Eval.ArithOp op) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue cmp(BinaryExpression e, Eval.CmpOp op) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue bool(BinaryExpression e, Eval.BoolOp op) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(Addition a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(Division a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(Multiplication a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(Subtraction a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(AndExpression a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(OrExpression a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(EqualsTo a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(NotEqualsTo a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(GreaterThan a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(GreaterThanEquals a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(MinorThan a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(MinorThanEquals a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(DateValue v)
public PrimitiveValue eval(DoubleValue v)
public PrimitiveValue eval(LongValue v)
public PrimitiveValue eval(StringValue v)
public PrimitiveValue eval(TimestampValue v)
public PrimitiveValue eval(TimeValue v)
public PrimitiveValue eval(CaseExpression c) throws java.sql.SQLException
java.sql.SQLException
public abstract PrimitiveValue eval(Column col) throws java.sql.SQLException
col
- The Column to provide a value for in the current scope.java.sql.SQLException
- when something goes wrong (e.g., col isn't in scope)
Override this method to define values for columns. These should be
bound to values from the row that the current expression is being
evaluated in the context of. For example, given the tuple
[ A: 100, B: 212.0 ] and the expression R.A + (2 * B)
this function will be be called twice: Once with Column(Table(null,R), A)
and once with Column(Table(null, null), B). The first call (for A) should
return LongValue(100), and the second call (for B) should return
DoubleValue(212.0). The overall eval method will then return
DoubleValue(514.0).public PrimitiveValue eval(WhenClause whenClause) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(AllComparisonExpression all) throws java.sql.SQLException
all
- The operator being evaluatedjava.sql.SQLException
- when something goes wrong
X > ALL (SELECT ...)
As a nested subquery, this function is too tightly coupled to the inner
workings of your database system. You will need to eventually implement
a version of this method, or rewrite queries to remove it from
consideration.public PrimitiveValue eval(AnyComparisonExpression any) throws java.sql.SQLException
any
- The operator being evaluatedjava.sql.SQLException
- when something goes wrong
X > ANY (SELECT ...)
As a nested subquery, this function is too tightly coupled to the inner
workings of your database system. You will need to eventually implement
a version of this method, or rewrite queries to remove it from
consideration.public PrimitiveValue eval(ExistsExpression exists) throws java.sql.SQLException
exists
- The operator being evaluatedjava.sql.SQLException
- when something goes wrong
[NOT] EXISTS (SELECT ...)
As a nested subquery, this function is too tightly coupled to the inner
workings of your database system. You will need to eventually implement
a version of this method, or rewrite queries to remove it from
consideration.public PrimitiveValue eval(InExpression in) throws java.sql.SQLException
in
- The operator being evaluatedjava.sql.SQLException
- when something goes wrong
X [NOT] IN (SELECT ...)
As a nested subquery, this function is too tightly coupled to the inner
workings of your database system. You will need to eventually implement
a version of this method, or rewrite queries to remove it from
consideration.public PrimitiveValue eval(Between between) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(LikeExpression like) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(Matches matches) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(BitwiseXor a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(BitwiseOr a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(BitwiseAnd a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(Concat a) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(Function function) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(InverseExpression inverse) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(IsNullExpression isNull) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(JdbcParameter jdbcParameter) throws java.sql.SQLException
java.sql.SQLException
public PrimitiveValue eval(NullValue nullValue) throws java.sql.SQLException
java.sql.SQLException
public static void main(java.lang.String[] args) throws java.lang.Exception
java.lang.Exception