Top Description Fields Constructors Methods
org.h2.expression.condition

public Class ConditionAndOr

extends Condition
Class Inheritance
Imports
org.h2.engine.SessionLocal, org.h2.expression.Expression, .ExpressionVisitor, .TypedValueExpression, .ValueExpression, org.h2.message.DbException, org.h2.table.ColumnResolver, .TableFilter, org.h2.value.Value, .ValueBoolean, .ValueNull

An 'and' or 'or' condition as in WHERE ID=1 AND NAME=?

Field Summary

Modifier and TypeField 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

Constructor Summary

AccessConstructor and Description
public
ConditionAndOr(int andOrType, Expression left, Expression right)

Method Summary

Modifier and TypeMethod and Description
public void
addFilterConditions(TableFilter
the table filter
filter
)

Overrides org.h2.expression.Expression.addFilterConditions.

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.h2.expression.Expression.createIndexConditions.

Create index conditions if possible and attach them to the table filter.

pack-priv int
public int
getCost()

Implements abstract org.h2.expression.Expression.getCost.

Estimate the cost to process the expression.

public Expression
getNotIfPossible(SessionLocal
the session
session
)

Overrides org.h2.expression.Expression.getNotIfPossible.

If it is possible, return the negated expression.

public Expression
getSubexpression(int
0-based index
index
)

Overrides org.h2.expression.Expression.getSubexpression.

Returns subexpression with specified index.

public int
public StringBuilder
getUnenclosedSQL(StringBuilder
string builder
builder
,
int
formatting flags
sqlFlags
)

Implements abstract org.h2.expression.Expression.getUnenclosedSQL.

Get the SQL statement of this expression.

public Value
getValue(SessionLocal
the session
session
)

Implements abstract org.h2.expression.Expression.getValue.

Return the resulting value for the current row.

public boolean
isEverything(ExpressionVisitor
the visitor
visitor
)

Implements abstract org.h2.expression.Expression.isEverything.

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 MAP_INITIAL
state
)

Implements abstract org.h2.expression.Expression.mapColumns.

Map the columns of the resolver to expression columns.

public boolean
needParentheses()

Overrides org.h2.expression.Expression.needParentheses.

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.h2.expression.Expression.optimize.

Try to optimize the expression.

pack-priv static Expression

Returns:

null or the third condition
optimizeConditionAndOr
(ConditionAndOr
the session
left
,
ConditionAndOr
the second condition
right
)

Optimize query according to the given condition.

private static Expression
optimizeConstant(SessionLocal session, int andOrType, Value l, Expression right)

pack-priv static Expression

Returns:

the optimized condition, or null if condition cannot be optimized
optimizeIfConstant
(SessionLocal
the 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.h2.expression.Expression.setEvaluatable.

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.h2.expression.Expression.updateAggregate.

Update an aggregate value.

Inherited from org.h2.expression.condition.Condition:
castToBooleangetType

Field Detail

addedback to summary
private Expression added

Additional condition for index only.

ANDback to summary
public static final int AND

The AND condition type as in ID=1 AND NAME='Hello'.

andOrTypeback to summary
private final int andOrType
leftback to summary
private Expression left
ORback to summary
public static final int OR

The OR condition type as in ID=1 OR NAME='Hello'.

Constructor Detail

ConditionAndOrback to summary
public ConditionAndOr(int andOrType, Expression left, Expression right)

Method Detail

addFilterConditionsback to summary
public void addFilterConditions(TableFilter filter)

Overrides org.h2.expression.Expression.addFilterConditions.

Doc from org.h2.expression.Expression.addFilterConditions.

Add conditions to a table filter if they can be evaluated.

Parameters
filter:TableFilter

the table filter

Annotations
@Override
createIndexConditionsback to summary
public void createIndexConditions(SessionLocal session, TableFilter filter)

Overrides org.h2.expression.Expression.createIndexConditions.

Doc from org.h2.expression.Expression.createIndexConditions.

Create index conditions if possible and attach them to the table filter.

Parameters
session:SessionLocal

the session

filter:TableFilter

the table filter

Annotations
@Override
getAndOrTypeback to summary
pack-priv int getAndOrType()
getCostback to summary
public int getCost()

Implements abstract org.h2.expression.Expression.getCost.

Doc from org.h2.expression.Expression.getCost.

Estimate the cost to process the expression. Used when optimizing the query, to calculate the query plan with the lowest estimated cost.

Returns:int

the estimated cost

Annotations
@Override
getNotIfPossibleback to summary
public Expression getNotIfPossible(SessionLocal session)

Overrides org.h2.expression.Expression.getNotIfPossible.

Doc from org.h2.expression.Expression.getNotIfPossible.

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.

Parameters
session:SessionLocal

the session

Returns:Expression

the negated expression, or null

Annotations
@Override
getSubexpressionback to summary
public Expression getSubexpression(int index)

Overrides org.h2.expression.Expression.getSubexpression.

Doc from org.h2.expression.Expression.getSubexpression.

Returns subexpression with specified index.

Parameters
index:int

0-based index

Returns:Expression

subexpression with specified index, may be null

Annotations
@Override
getSubexpressionCountback to summary
public int getSubexpressionCount()

Overrides org.h2.expression.Expression.getSubexpressionCount.

Doc from org.h2.expression.Expression.getSubexpressionCount.

Returns count of subexpressions.

Returns:int

count of subexpressions

Annotations
@Override
getUnenclosedSQLback to summary
public StringBuilder getUnenclosedSQL(StringBuilder builder, int sqlFlags)

Implements abstract org.h2.expression.Expression.getUnenclosedSQL.

Doc from org.h2.expression.Expression.getUnenclosedSQL.

Get the SQL statement of this expression. This may not always be the original SQL statement, especially after optimization. Enclosing '(' and ')' are never appended.

Parameters
builder:StringBuilder

string builder

sqlFlags:int

formatting flags

Returns:StringBuilder

the specified string builder

Annotations
@Override
getValueback to summary
public Value getValue(SessionLocal session)

Implements abstract org.h2.expression.Expression.getValue.

Doc from org.h2.expression.Expression.getValue.

Return the resulting value for the current row.

Parameters
session:SessionLocal

the session

Returns:Value

the result

Annotations
@Override
isEverythingback to summary
public boolean isEverything(ExpressionVisitor visitor)

Implements abstract org.h2.expression.Expression.isEverything.

Doc from org.h2.expression.Expression.isEverything.

Check if this expression and all sub-expressions can fulfill a criteria. If any part returns false, the result is false.

Parameters
visitor:ExpressionVisitor

the visitor

Returns:boolean

if the criteria can be fulfilled

Annotations
@Override
mapColumnsback to summary
public void mapColumns(ColumnResolver resolver, int level, int state)

Implements abstract org.h2.expression.Expression.mapColumns.

Doc from org.h2.expression.Expression.mapColumns.

Map the columns of the resolver to expression columns.

Parameters
resolver:ColumnResolver

the column resolver

level:int

the subquery nesting level

state:int

current state for nesting checks, initial value is MAP_INITIAL

Annotations
@Override
needParenthesesback to summary
public boolean needParentheses()

Overrides org.h2.expression.Expression.needParentheses.

Doc from org.h2.expression.Expression.needParentheses.

Returns whether this expressions needs to be wrapped in parentheses when it is used as an argument of other expressions.

Returns:boolean

true if it is

Annotations
@Override
optimizeback to summary
public Expression optimize(SessionLocal session)

Implements abstract org.h2.expression.Expression.optimize.

Doc from org.h2.expression.Expression.optimize.

Try to optimize the expression.

Parameters
session:SessionLocal

the session

Returns:Expression

the optimized expression

Annotations
@Override
optimizeConditionAndOrback 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

Parameters
left:ConditionAndOr

the session

right:ConditionAndOr

the second condition

Returns:Expression

null or the third condition

optimizeConstantback to summary
private static Expression optimizeConstant(SessionLocal session, int andOrType, Value l, Expression right)
optimizeIfConstantback 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.

Parameters
session:SessionLocal

the session

andOrType:int

the type

left:Expression

the left part of the condition

right:Expression

the right part of the condition

Returns:Expression

the optimized condition, or null if condition cannot be optimized

optimizeNback to summary
private static Expression optimizeN(ConditionAndOr condition)
setEvaluatableback to summary
public void setEvaluatable(TableFilter tableFilter, boolean b)

Implements abstract org.h2.expression.Expression.setEvaluatable.

Doc from org.h2.expression.Expression.setEvaluatable.

Tell the expression columns whether the table filter can return values now. This is used when optimizing the query.

Parameters
tableFilter:TableFilter

the table filter

b:boolean

true if the table filter can return value

Annotations
@Override
updateAggregateback to summary
public void updateAggregate(SessionLocal session, int stage)

Implements abstract org.h2.expression.Expression.updateAggregate.

Doc from org.h2.expression.Expression.updateAggregate.

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.

Parameters
session:SessionLocal

the session

stage:int

select stage

Annotations
@Override