Package org.h2.index
Class IndexCondition
- java.lang.Object
-
- org.h2.index.IndexCondition
-
public class IndexCondition extends java.lang.Object
A index condition object is made for each condition that can potentially use an index. This class does not extend expression, but in general there is one expression that maps to each index condition.
-
-
Field Summary
Fields Modifier and Type Field Description static int
ALWAYS_FALSE
A bit of a search mask meaning 'the condition is always false'.private Column
column
private int
compareType
see constants inComparison
static int
END
A bit of a search mask meaning 'smaller or equal'.static int
EQUALITY
A bit of a search mask meaning 'equal'.private Expression
expression
private java.util.List<Expression>
expressionList
private Query
expressionQuery
static int
RANGE
A search mask meaning 'between'.static int
SPATIAL_INTERSECTS
A bit of a search mask meaning 'spatial intersection'.static int
START
A bit of a search mask meaning 'larger or equal'.
-
Constructor Summary
Constructors Modifier Constructor Description private
IndexCondition(int compareType, ExpressionColumn column, Expression expression)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.lang.StringBuilder
compareTypeToString(java.lang.StringBuilder builder, int i)
static IndexCondition
get(int compareType, ExpressionColumn column, Expression expression)
Create an index condition with the given parameters.Column
getColumn()
Get the referenced column.int
getCompareType()
ResultInterface
getCurrentResult()
Get the current result of the expression.Value
getCurrentValue(SessionLocal session)
Get the current value of the expression.Value[]
getCurrentValueList(SessionLocal session)
Get the current value list of the expression.Expression
getExpression()
Get expression.java.util.List<Expression>
getExpressionList()
Get expression list.Query
getExpressionQuery()
Get expression query.static IndexCondition
getInList(ExpressionColumn column, java.util.List<Expression> list)
Create an index condition with the compare type IN_LIST and with the given parameters.static IndexCondition
getInQuery(ExpressionColumn column, Query query)
Create an index condition with the compare type IN_QUERY and with the given parameters.int
getMask(java.util.ArrayList<IndexCondition> indexConditions)
Get the comparison bit mask.java.lang.String
getSQL(int sqlFlags)
Get the SQL snippet of this comparison.boolean
isAlwaysFalse()
Check if the result is always false.boolean
isEnd()
Check if this index condition is of the type column smaller or equal to value.boolean
isEvaluatable()
Check if the expression can be evaluated.boolean
isSpatialIntersects()
Check if this index condition is of the type spatial column intersects value.boolean
isStart()
Check if this index condition is of the type column larger or equal to value.java.lang.String
toString()
-
-
-
Field Detail
-
EQUALITY
public static final int EQUALITY
A bit of a search mask meaning 'equal'.- See Also:
- Constant Field Values
-
START
public static final int START
A bit of a search mask meaning 'larger or equal'.- See Also:
- Constant Field Values
-
END
public static final int END
A bit of a search mask meaning 'smaller or equal'.- See Also:
- Constant Field Values
-
RANGE
public static final int RANGE
A search mask meaning 'between'.- See Also:
- Constant Field Values
-
ALWAYS_FALSE
public static final int ALWAYS_FALSE
A bit of a search mask meaning 'the condition is always false'.- See Also:
- Constant Field Values
-
SPATIAL_INTERSECTS
public static final int SPATIAL_INTERSECTS
A bit of a search mask meaning 'spatial intersection'.- See Also:
- Constant Field Values
-
column
private final Column column
-
compareType
private final int compareType
see constants inComparison
-
expression
private final Expression expression
-
expressionList
private java.util.List<Expression> expressionList
-
expressionQuery
private Query expressionQuery
-
-
Constructor Detail
-
IndexCondition
private IndexCondition(int compareType, ExpressionColumn column, Expression expression)
- Parameters:
compareType
- the comparison type, see constants inComparison
-
-
Method Detail
-
get
public static IndexCondition get(int compareType, ExpressionColumn column, Expression expression)
Create an index condition with the given parameters.- Parameters:
compareType
- the comparison type, see constants inComparison
column
- the columnexpression
- the expression- Returns:
- the index condition
-
getInList
public static IndexCondition getInList(ExpressionColumn column, java.util.List<Expression> list)
Create an index condition with the compare type IN_LIST and with the given parameters.- Parameters:
column
- the columnlist
- the expression list- Returns:
- the index condition
-
getInQuery
public static IndexCondition getInQuery(ExpressionColumn column, Query query)
Create an index condition with the compare type IN_QUERY and with the given parameters.- Parameters:
column
- the columnquery
- the select statement- Returns:
- the index condition
-
getCurrentValue
public Value getCurrentValue(SessionLocal session)
Get the current value of the expression.- Parameters:
session
- the session- Returns:
- the value
-
getCurrentValueList
public Value[] getCurrentValueList(SessionLocal session)
Get the current value list of the expression. The value list is of the same type as the column, distinct, and sorted.- Parameters:
session
- the session- Returns:
- the value list
-
getCurrentResult
public ResultInterface getCurrentResult()
Get the current result of the expression. The rows may not be of the same type, therefore the rows may not be unique.- Returns:
- the result
-
getSQL
public java.lang.String getSQL(int sqlFlags)
Get the SQL snippet of this comparison.- Parameters:
sqlFlags
- formatting flags- Returns:
- the SQL snippet
-
getMask
public int getMask(java.util.ArrayList<IndexCondition> indexConditions)
Get the comparison bit mask.- Parameters:
indexConditions
- all index conditions- Returns:
- the mask
-
isAlwaysFalse
public boolean isAlwaysFalse()
Check if the result is always false.- Returns:
- true if the result will always be false
-
isStart
public boolean isStart()
Check if this index condition is of the type column larger or equal to value.- Returns:
- true if this is a start condition
-
isEnd
public boolean isEnd()
Check if this index condition is of the type column smaller or equal to value.- Returns:
- true if this is a end condition
-
isSpatialIntersects
public boolean isSpatialIntersects()
Check if this index condition is of the type spatial column intersects value.- Returns:
- true if this is a spatial intersects condition
-
getCompareType
public int getCompareType()
-
getColumn
public Column getColumn()
Get the referenced column.- Returns:
- the column
-
getExpression
public Expression getExpression()
Get expression.- Returns:
- Expression.
-
getExpressionList
public java.util.List<Expression> getExpressionList()
Get expression list.- Returns:
- Expression list.
-
getExpressionQuery
public Query getExpressionQuery()
Get expression query.- Returns:
- Expression query.
-
isEvaluatable
public boolean isEvaluatable()
Check if the expression can be evaluated.- Returns:
- true if it can be evaluated
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
compareTypeToString
private static java.lang.StringBuilder compareTypeToString(java.lang.StringBuilder builder, int i)
-
-