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

public final Class CompareLike

extends Condition
Class Inheritance
Imports
java.util.regex.Pattern, .PatternSyntaxException, org.h2.api.ErrorCode, org.h2.engine.Database, .SessionLocal, org.h2.expression.Expression, .ExpressionColumn, .ExpressionVisitor, .SearchedCase, .TypedValueExpression, .ValueExpression, org.h2.index.IndexCondition, org.h2.message.DbException, org.h2.table.ColumnResolver, .TableFilter, org.h2.value.CompareMode, .DataType, .TypeInfo, .Value, .ValueBoolean, .ValueNull, .ValueVarchar, .ValueVarcharIgnoreCase

Pattern matching comparison expression: WHERE NAME LIKE ?

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static enum
CompareLike.LikeType

The type of comparison.

Field Summary

Modifier and TypeField and Description
private static final int
private final CompareMode
private final String
private Expression
private boolean
private boolean
private boolean
private boolean
private Expression
private final CompareLike.LikeType
private static final int
private final boolean
private static final int
private char[]
private int
private Pattern
private String
private int[]
patternTypes

one of MATCH / ONE / ANY

private Expression
private boolean
shortcutToContains

indicates that we can shortcut the comparison and use contains

private boolean
shortcutToEndsWith

indicates that we can shortcut the comparison and use endsWith

private boolean
shortcutToStartsWith

indicates that we can shortcut the comparison and use startsWith

private final boolean

Constructor Summary

AccessConstructor and Description
public
CompareLike(Database db, Expression left, boolean not, boolean whenOperand, Expression right, Expression escape, CompareLike.LikeType likeType)

public
CompareLike(CompareMode compareMode, String defaultEscape, Expression left, boolean not, boolean whenOperand, Expression right, Expression escape, CompareLike.LikeType likeType)

Method Summary

Modifier and TypeMethod and Description
private boolean
compare(char[] pattern, String s, int pi, int si)

private boolean
compareAt(String s, int pi, int si, int sLen, char[] pattern, int[] types)

private static boolean
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.

public int
getCost()

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

Estimate the cost to process the expression.

private static Character
private Character
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.

private Value
getValue(SessionLocal session, Value left)

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

Overrides org.h2.expression.Expression.getWhenSQL.

Appends the SQL statement of this when operand to the specified builder.

public boolean
getWhenValue(SessionLocal
the session
session
,
Value
value on the left side
left
)

Overrides org.h2.expression.Expression.getWhenValue.

Return the resulting value of when operand for the current row.

public void
initPattern(String
the pattern
p
,
Character
the escape character
escapeChar
)

Initializes the pattern.

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.

private boolean
public boolean
isWhenConditionOperand()

Overrides org.h2.expression.Expression.isWhenConditionOperand.

Returns whether this expression is a right side of condition in a when operand.

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.

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 boolean

Returns:

true if the value matches
test
(String
the pattern
testPattern
,
String
the value
value
,
char
the escape character
escapeChar
)

Test if the value matches the pattern.

public boolean

Returns:

true if the value matches
test
(String
the value
value
)

Test if the value matches the initialized pattern.

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

ANYback to summary
private static final int ANY
compareModeback to summary
private final CompareMode compareMode
defaultEscapeback to summary
private final String defaultEscape
escapeback to summary
private Expression escape
fastCompareback to summary
private boolean fastCompare
ignoreCaseback to summary
private boolean ignoreCase
invalidPatternback to summary
private boolean invalidPattern
isInitback to summary
private boolean isInit
leftback to summary
private Expression left
likeTypeback to summary
private final CompareLike.LikeType likeType
MATCHback to summary
private static final int MATCH
notback to summary
private final boolean not
ONEback to summary
private static final int ONE
patternCharsback to summary
private char[] patternChars
patternLengthback to summary
private int patternLength
patternRegexpback to summary
private Pattern patternRegexp
patternStringback to summary
private String patternString
patternTypesback to summary
private int[] patternTypes

one of MATCH / ONE / ANY

shortcutToContainsback to summary
private boolean shortcutToContains

indicates that we can shortcut the comparison and use contains

shortcutToEndsWithback to summary
private boolean shortcutToEndsWith

indicates that we can shortcut the comparison and use endsWith

shortcutToStartsWithback to summary
private boolean shortcutToStartsWith

indicates that we can shortcut the comparison and use startsWith

whenOperandback to summary
private final boolean whenOperand

Constructor Detail

CompareLikeback to summary
public CompareLike(Database db, Expression left, boolean not, boolean whenOperand, Expression right, Expression escape, CompareLike.LikeType likeType)
CompareLikeback to summary
public CompareLike(CompareMode compareMode, String defaultEscape, Expression left, boolean not, boolean whenOperand, Expression right, Expression escape, CompareLike.LikeType likeType)

Method Detail

compareback to summary
private boolean compare(char[] pattern, String s, int pi, int si)
compareAtback to summary
private boolean compareAt(String s, int pi, int si, int sLen, char[] pattern, int[] types)
containsIgnoreCaseback to summary
private static boolean containsIgnoreCase(String src, String what)
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
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
getEscapeCharback to summary
private static Character getEscapeChar(String s)
getEscapeCharback to summary
private Character getEscapeChar(Value e)
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
getValueback to summary
private Value getValue(SessionLocal session, Value left)
getWhenSQLback to summary
public StringBuilder getWhenSQL(StringBuilder builder, int sqlFlags)

Overrides org.h2.expression.Expression.getWhenSQL.

Doc from org.h2.expression.Expression.getWhenSQL.

Appends the SQL statement of this when operand to the specified builder.

Parameters
builder:StringBuilder

string builder

sqlFlags:int

formatting flags

Returns:StringBuilder

the specified string builder

Annotations
@Override
getWhenValueback to summary
public boolean getWhenValue(SessionLocal session, Value left)

Overrides org.h2.expression.Expression.getWhenValue.

Doc from org.h2.expression.Expression.getWhenValue.

Return the resulting value of when operand for the current row.

Parameters
session:SessionLocal

the session

left:Value

value on the left side

Returns:boolean

the result

Annotations
@Override
initPatternback to summary
public void initPattern(String p, Character escapeChar)

Initializes the pattern.

Parameters
p:String

the pattern

escapeChar:Character

the escape character

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
isFullMatchback to summary
private boolean isFullMatch()
isWhenConditionOperandback to summary
public boolean isWhenConditionOperand()

Overrides org.h2.expression.Expression.isWhenConditionOperand.

Doc from org.h2.expression.Expression.isWhenConditionOperand.

Returns whether this expression is a right side of condition in a when operand.

Returns:boolean

true if it is, false otherwise

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
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
testback to summary
public boolean test(String testPattern, String value, char escapeChar)

Test if the value matches the pattern.

Parameters
testPattern:String

the pattern

value:String

the value

escapeChar:char

the escape character

Returns:boolean

true if the value matches

testback to summary
public boolean test(String value)

Test if the value matches the initialized pattern.

Parameters
value:String

the value

Returns:boolean

true if the value matches

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
org.h2.expression.condition back to summary

public final Enum CompareLike.LikeType

extends Enum<CompareLike.LikeType>
Class Inheritance

The type of comparison.

Field Summary

Modifier and TypeField and Description
public static final CompareLike.LikeType
ILIKE

ILIKE (case-insensitive LIKE).

public static final CompareLike.LikeType
LIKE

LIKE.

public static final CompareLike.LikeType
REGEXP

REGEXP

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static CompareLike.LikeType
public static CompareLike.LikeType[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

ILIKEback to summary
public static final CompareLike.LikeType ILIKE

ILIKE (case-insensitive LIKE).

LIKEback to summary
public static final CompareLike.LikeType LIKE

LIKE.

REGEXPback to summary
public static final CompareLike.LikeType REGEXP

REGEXP

Constructor Detail

LikeTypeback to summary
private LikeType()

Method Detail

valueOfback to summary
public static CompareLike.LikeType valueOf(String name)
valuesback to summary
public static CompareLike.LikeType[] values()