| Modifier and Type | Field and Description |
|---|---|
| private Expression | added
Additional condition for index only. |
| public static final int | AND
The AND condition type as in ID=1 AND NAME='Hello'. |
| private final int | |
| private Expression | |
| public static final int | OR
The OR condition type as in ID=1 OR NAME='Hello'. |
| private Expression |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public void | addFilterConditions(TableFilter
the table filter filter)Overrides org. Add conditions to a table filter if they can be evaluated. |
| public void | createIndexConditions(SessionLocal
the session session, TableFilter the table filter filter)Overrides org. Create index conditions if possible and attach them to the table filter. |
| pack-priv int | |
| public int | getCost()
Implements abstract org. Estimate the cost to process the expression. |
| public Expression | getNotIfPossible(SessionLocal
the session session)Overrides org. If it is possible, return the negated expression. |
| public Expression | getSubexpression(int
0-based index index)Overrides org. Returns subexpression with specified index. |
| public int | getSubexpressionCount()
Overrides org. Returns count of subexpressions. |
| public StringBuilder | getUnenclosedSQL(StringBuilder
string builder builder, int formatting flags sqlFlags)Implements abstract org. Get the SQL statement of this expression. |
| public Value | getValue(SessionLocal
the session session)Implements abstract org. Return the resulting value for the current row. |
| public boolean | isEverything(ExpressionVisitor
the visitor visitor)Implements abstract org. Check if this expression and all sub-expressions can fulfill a criteria. |
| public void | mapColumns(ColumnResolver
the column resolver resolver, int the subquery nesting level level, int current state for nesting checks, initial value is
state)MAP_INITIALImplements abstract org. Map the columns of the resolver to expression columns. |
| public boolean | needParentheses()
Overrides org. Returns whether this expressions needs to be wrapped in parentheses when it is used as an argument of other expressions. |
| public Expression | optimize(SessionLocal
the session session)Implements abstract org. Try to optimize the expression. |
| pack-priv static Expression | Returns: null or the third conditionthe session left, ConditionAndOr the second condition right)Optimize query according to the given condition. |
| private static Expression | |
| pack-priv static Expression | Returns: the optimized condition, ornull if condition cannot be optimizedthe session session, int the type andOrType, Expression the left part of the condition left, Expression the right part of the condition right)Optimize the condition if at least one part is constant. |
| private static Expression | |
| public void | setEvaluatable(TableFilter
the table filter tableFilter, boolean true if the table filter can return value b)Implements abstract org. Tell the expression columns whether the table filter can return values now. |
| public void | updateAggregate(SessionLocal
the session session, int select stage stage)Implements abstract org. Update an aggregate value. |
| added | back to summary |
|---|---|
| private Expression added Additional condition for index only. | |
| AND | back to summary |
|---|---|
| public static final int AND The AND condition type as in ID=1 AND NAME='Hello'. | |
| andOrType | back to summary |
|---|---|
| private final int andOrType | |
| left | back to summary |
|---|---|
| private Expression left | |
| OR | back to summary |
|---|---|
| public static final int OR The OR condition type as in ID=1 OR NAME='Hello'. | |
| right | back to summary |
|---|---|
| private Expression right | |
| ConditionAndOr | back to summary |
|---|---|
| public ConditionAndOr(int andOrType, Expression left, Expression right) | |
| addFilterConditions | back to summary |
|---|---|
| public void addFilterConditions(TableFilter filter) Overrides org. Doc from org. Add conditions to a table filter if they can be evaluated.
| |
| createIndexConditions | back to summary |
|---|---|
| public void createIndexConditions(SessionLocal session, TableFilter filter) Overrides org. Doc from org. Create index conditions if possible and attach them to the table filter.
| |
| getAndOrType | back to summary |
|---|---|
| pack-priv int getAndOrType() | |
| getCost | back to summary |
|---|---|
| public int getCost() Implements abstract org. Doc from org. Estimate the cost to process the expression. Used when optimizing the query, to calculate the query plan with the lowest estimated cost.
| |
| getNotIfPossible | back to summary |
|---|---|
| public Expression getNotIfPossible(SessionLocal session) Overrides org. Doc from org. If it is possible, return the negated expression. This is used to optimize NOT expressions: NOT ID>10 can be converted to ID<=10. Returns null if negating is not possible.
| |
| getSubexpression | back to summary |
|---|---|
| public Expression getSubexpression(int index) Overrides org. Doc from org. Returns subexpression with specified index.
| |
| getSubexpressionCount | back to summary |
|---|---|
| public int getSubexpressionCount() Overrides org. Doc from org. Returns count of subexpressions.
| |
| getUnenclosedSQL | back to summary |
|---|---|
| public StringBuilder getUnenclosedSQL(StringBuilder builder, int sqlFlags) Implements abstract org. Doc from org. Get the SQL statement of this expression. This may not always be the original SQL statement, especially after optimization. Enclosing '(' and ')' are never appended.
| |
| getValue | back to summary |
|---|---|
| public Value getValue(SessionLocal session) Implements abstract org. Doc from org. Return the resulting value for the current row.
| |
| isEverything | back to summary |
|---|---|
| public boolean isEverything(ExpressionVisitor visitor) Implements abstract org. Doc from org. Check if this expression and all sub-expressions can fulfill a criteria. If any part returns false, the result is false.
| |
| mapColumns | back to summary |
|---|---|
| public void mapColumns(ColumnResolver resolver, int level, int state) Implements abstract org. Doc from org. Map the columns of the resolver to expression columns.
| |
| needParentheses | back to summary |
|---|---|
| public boolean needParentheses() Overrides org. Doc from org. Returns whether this expressions needs to be wrapped in parentheses when it is used as an argument of other expressions.
| |
| optimize | back to summary |
|---|---|
| public Expression optimize(SessionLocal session) Implements abstract org. Doc from org. Try to optimize the expression.
| |
| optimizeConditionAndOr | back to summary |
|---|---|
| pack-priv static Expression optimizeConditionAndOr(ConditionAndOr left, ConditionAndOr right) Optimize query according to the given condition. Example: (A AND B) OR (C AND B), the new condition B AND (A OR C) is returned
| |
| optimizeConstant | back to summary |
|---|---|
| private static Expression optimizeConstant(SessionLocal session, int andOrType, Value l, Expression right) | |
| optimizeIfConstant | back to summary |
|---|---|
| pack-priv static Expression optimizeIfConstant(SessionLocal session, int andOrType, Expression left, Expression right) Optimize the condition if at least one part is constant.
| |
| optimizeN | back to summary |
|---|---|
| private static Expression optimizeN(ConditionAndOr condition) | |
| setEvaluatable | back to summary |
|---|---|
| public void setEvaluatable(TableFilter tableFilter, boolean b) Implements abstract org. Doc from org. Tell the expression columns whether the table filter can return values now. This is used when optimizing the query.
| |
| updateAggregate | back to summary |
|---|---|
| public void updateAggregate(SessionLocal session, int stage) Implements abstract org. Doc from org. Update an aggregate value. This method is called at statement execution time. It is usually called once for each row, but if the expression is used multiple times (for example in the column list, and as part of the HAVING expression) it is called multiple times - the row counter needs to be used to make sure the internal state is only updated once.
| |