Package org.h2.expression
Class BinaryOperation
- java.lang.Object
-
- org.h2.expression.Expression
-
- org.h2.expression.Operation2
-
- org.h2.expression.BinaryOperation
-
public class BinaryOperation extends Operation2
A mathematical expression, or string concatenation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BinaryOperation.OpType
-
Field Summary
Fields Modifier and Type Field Description private boolean
convertRight
private TypeInfo
forcedType
private BinaryOperation.OpType
opType
-
Fields inherited from class org.h2.expression.Operation2
left, right, type
-
Fields inherited from class org.h2.expression.Expression
AUTO_PARENTHESES, MAP_IN_AGGREGATE, MAP_IN_WINDOW, MAP_INITIAL, WITH_PARENTHESES, WITHOUT_PARENTHESES
-
Fields inherited from interface org.h2.util.HasSQL
ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS
-
-
Constructor Summary
Constructors Constructor Description BinaryOperation(BinaryOperation.OpType opType, Expression left, Expression right)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.lang.String
getOperationToken()
BinaryOperation.OpType
getOperationType()
Returns the type of this binary operation.java.lang.StringBuilder
getUnenclosedSQL(java.lang.StringBuilder builder, int sqlFlags)
Get the SQL statement of this expression.private DbException
getUnexpectedForcedTypeException()
private DbException
getUnsupported(int l, int r)
Value
getValue(SessionLocal session)
Return the resulting value for the current row.boolean
needParentheses()
Returns whether this expressions needs to be wrapped in parentheses when it is used as an argument of other expressions.Expression
optimize(SessionLocal session)
Try to optimize the expression.private Expression
optimizeDateTime(SessionLocal session, int l, int r)
private void
optimizeDecfloat(TypeInfo leftType, TypeInfo rightType)
private Expression
optimizeInterval(int l, int r)
private void
optimizeNumeric(TypeInfo leftType, TypeInfo rightType)
void
setForcedType(TypeInfo forcedType)
Sets a forced data type of a datetime minus datetime operation.private void
swap()
-
Methods inherited from class org.h2.expression.Operation2
getCost, getSubexpression, getSubexpressionCount, getType, isEverything, mapColumns, setEvaluatable, updateAggregate
-
Methods inherited from class org.h2.expression.Expression
addFilterConditions, createIndexConditions, getAlias, getBooleanValue, getColumnName, getColumnNameForView, getEnclosedSQL, getNonAliasExpression, getNotIfPossible, getNullable, getSchemaName, getSQL, getSQL, getSQL, getSQL, getTableAlias, getTableName, getWhenSQL, getWhenValue, isConstant, isIdentity, isNullConstant, isValueSet, isWhenConditionOperand, optimizeCondition, toString, writeExpressions, writeExpressions
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.h2.util.HasSQL
getTraceSQL
-
-
-
-
Field Detail
-
opType
private BinaryOperation.OpType opType
-
forcedType
private TypeInfo forcedType
-
convertRight
private boolean convertRight
-
-
Constructor Detail
-
BinaryOperation
public BinaryOperation(BinaryOperation.OpType opType, Expression left, Expression right)
-
-
Method Detail
-
setForcedType
public void setForcedType(TypeInfo forcedType)
Sets a forced data type of a datetime minus datetime operation.- Parameters:
forcedType
- the forced data type
-
needParentheses
public boolean needParentheses()
Description copied from class:Expression
Returns whether this expressions needs to be wrapped in parentheses when it is used as an argument of other expressions.- Overrides:
needParentheses
in classExpression
- Returns:
true
if it is
-
getUnenclosedSQL
public java.lang.StringBuilder getUnenclosedSQL(java.lang.StringBuilder builder, int sqlFlags)
Description copied from class:Expression
Get the SQL statement of this expression. This may not always be the original SQL statement, especially after optimization. Enclosing '(' and ')' are never appended.- Specified by:
getUnenclosedSQL
in classExpression
- Parameters:
builder
- string buildersqlFlags
- formatting flags- Returns:
- the specified string builder
-
getOperationToken
private java.lang.String getOperationToken()
-
getValue
public Value getValue(SessionLocal session)
Description copied from class:Expression
Return the resulting value for the current row.- Specified by:
getValue
in classExpression
- Parameters:
session
- the session- Returns:
- the result
-
optimize
public Expression optimize(SessionLocal session)
Description copied from class:Expression
Try to optimize the expression.- Specified by:
optimize
in classExpression
- Parameters:
session
- the session- Returns:
- the optimized expression
-
optimizeInterval
private Expression optimizeInterval(int l, int r)
-
optimizeDateTime
private Expression optimizeDateTime(SessionLocal session, int l, int r)
-
getUnsupported
private DbException getUnsupported(int l, int r)
-
getUnexpectedForcedTypeException
private DbException getUnexpectedForcedTypeException()
-
swap
private void swap()
-
getOperationType
public BinaryOperation.OpType getOperationType()
Returns the type of this binary operation.- Returns:
- the type of this binary operation
-
-